首页
学习
活动
专区
工具
TVP
发布

ELK初探,nginx日志查询搭建示例

官网:https://www.elastic.co/cn/ 有中文版了,福音。

step1:启动elasticesrarch

必须独立用户,必须绑定ip :config/elasticsearch.yml

./elasticsearch -d

http://192.168.0.107:9200

集群状态

http://192.168.0.107:9200/_cluster/state

核心就这个,开箱即用,不需要任何配置。功能强到超乎想象。还可以配置集群。希望以后对它的操作可以和mysql一样熟练。

step2:启动kibana

配置config/kibana.yml

elasticsearch.url: "http://192.168.0.107:9200"

./kibana &

http://192.168.0.107:5601/

这是个交互界面,客户端。

开始导入access.log

step3:启动logstash

bin/logstash -f logstash.conf

这个的行为完全由conf文件控制。分为input,filter,output 三部分。

简单示例:

input {

stdin {}

}

output {

# 标准输出

stdout { codec => rubydebug {}}

elasticsearch{

hosts=>["127.0.0.1:9200"]

}

}

运行效果:控制台输入内容。写到elasticsearch里。

实战示例:

input {

beats {

port => 5044

}

}

filter {

grok {

match => [

"message" , "Time:\[%\] \| IP:\[%\] \| Status:\[%\] "

]

overwrite => ["message"]

}

date {

match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]

target => "@timestamp"

}

geoip{

source => "ip"

}

}

output {

elasticsearch{

hosts=>["127.0.0.1:9200"]

}

}

解析:

配置 beats 输入端口。

filter,gork配置,正则解析日志内容字段,通过kibana的Tool进行模拟测试:

http://192.168.0.107:5601/app/kibana#/dev_tools/grokdebugger?_g=()

date:使用日志里的日期作为时间轴。否则默认使用插入动作的时间。

geoip:ip解析成坐标,城市。精度不高,勉强做个参考。

gork正则,内置定义了好多正则,用法:%

手写正则,用法:(?([\s\S]*))

字段名的位置是不一样的。

字段类型默认是string,自定义写法:%

字段解析出来,就完成一半了。

然后开始读取文件。

step4:启动filebeat

./filebeat

配置filebeat.yml:

paths:

- /www/Nginx-AccessLog-Online/*/access_*.log

output.logstash:

hosts: ["192.168.0.107:5044"]

作用是读取文件,然后输出到logstash里。它会监控目录下的文件,自动读取。带指针记录,要重新导入时,删除该文件即可:data/registry

没意外的话,现在log里的内容就在往elk里写了。

可以在 http://192.168.0.107:5601/app/monitoring 里看到写入的速度和数量,文件大小。

step5:建索引

kibana的Management菜单Create index pattern

用xxx-*,把一组同类文件,合成一个索引。查询是从这个口子进去的。

step6:查询

kibana的Discover菜单,看到数据就大功告成。

可以尝试敲关键字进行搜索。

自定字段 status:200

条件组合 not status:200 and not status:302

status:[400 TO 499] AND extension:PHP

字段是否存在:_exists_:host, _missing_:user,null

通配符:*,?

正则: mesg:/mesages?/ 性能不好,少用。

近似搜索:frist~

范围搜索:[],{},>,date:["now-6h" TO "now"}

step7:报表

kibana的Visualize菜单

Y-Axis,选择Count,Max,Sum这类统计函数,需要时指定字段。Sum类必须是number类型的字段。

X-Axis,选择Terms,在指定Field,Order By。就可以运行出图表。

查询总体和sql类似。

https://www.elastic.co/cn/products/stack/elasticsearch-sql

插件很丰富,使用场景很丰富。End

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180728G0VUVL00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券