官网: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
领取专属 10元无门槛券
私享最新 技术干货