需求
在系统越来越多,每个系统拆分的模块越来越多的时候,日志维护就成了很麻烦的问题,找个问题得到各个系统去追踪。这个时候日志系统就显得尤为重要,快速分析日志,找到系统的问题
分析
通过网上的文章学习,完整的日志系统分为几个部分:
- 日志收集
- 日志分析
- 日志存储
- 日志展示
通过对比,Filebeat + Elasitcsearch + Kibana 适合目前我的需求
安装
docker地址:
https://www.docker.elastic.co/#
Elasitcsearch:
https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.0.0
docker run --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.0.0
测试elasticsearch
curl 127.0.0.1:9200
有返回就是正确的
Kibana:
https://www.elastic.co/guide/en/kibana/7.0/docker.html
docker pull docker.elastic.co/kibana/kibana:7.0.0
docker run -d --name kibana -e ELASTICSEARCH_URL=http://192.168.0.170:9200 -p 5601:5601 docker.elastic.co/kibana/kibana:7.0.0
管理地址:http://192.168.0.170:5601
Filebeat:
进入kibana管理端
http://192.168.0.170:5601
到需要上报日志的服务器去按这个步骤运行下
修改filebeat.yml的时候type: log 设置为enable:true, paths 后面一行一个文件就可以,文件可以用通配符*
kibana 需要增加host,elasticsearch 需要修改hosts为你的ip
接下来就见证奇迹的时候
关于检索:
简单检索就是把log里面包含的文字搜一下。
每条log鼠标移动上去时间旁边会显示个图标,点击图标会有详细,点开可以进行筛选,多条件需要加空格 然后选and or之类的
如下图:
熟练的掌握检索,可以高效的查找日志追踪问题。 当然这样对我们生成的日志就有更高的要求,不能像以前那么随意。 比如一次请求多台服务器多个服务提供,需要有统一的logid, 日志类型需要有明确的标识 是debug还是error 还是sql日志等。当然这指的应用日志, 像nginx php mysql等这些日志直接导入就行了
注意事项
安装整套的版本要一直6,7版本不能混用
kibana7已经有汉化,
vim /etc/kibana/kibana.yml
i18n.locale: "zh-CN"
systemctl restart kibana
至此日志收集和分析完成。 后面会深入了解下他的报警,图表统计等功能,总之elastic十分强大,值得拥有