ELK 日志收集简易教程
简介
ELK 是 Elasticsearch, Logstash, 和 Kibana 的首字母缩写,这里还会涉及一个文件日志的收集工具 Filebeat。
收集流程如封面图所示:
Filebeat: 会监控文件的变化,将文件的内容按行(可配置多行合并)收集,并发送到 Logstash。
Logstash:对 Filebeat 发送过来的数据进行加工处理,然后再发送给 Elasticsearch。
Elasticsearch:对日志进行存储、检索。
Kibana:提供 web 查询界面。
本教程在 Linux 平台安装,提供可以跑通流程的配置。
安装Elasticsearch
下载地址:https://www.elastic.co/cn/downloads/elasticsearch ,下载最新的版本
我这里下载的是 elasticsearch-7.6.2-linux-x86_64.tar.gz
解压后如果端口不冲突,直接运行即可
由于我这里是公共的测试环境,JDK 版本是1.6 ES 要在更高的版本下运行,其实下载的 ES 中已经自带 JDK 在 elasticsearch-7.6.2/jdk/ 这个目录下。
为了不影响其他人使用,执行下面两条命令,临时修改下环境变量:
安装Kibana
下载地址:https://www.elastic.co/cn/downloads/kibana
我这里下载的是:kibana-7.6.2-linux-x86_64.tar.gz
解压运行即可
默认 Kibana 监听的是 127.0.0.1 这个 ip 的,也就是只能通过 http://127.0.0.1:5601 来进行访问,这里可以通过配置 Nginx 来转发,或者修改 Kibana 配置:
在 Kibana 下 Dev Tools 下可以执行 HTTP 请求来查看 ES 的状态。
安装Logstash
下载地址:https://www.elastic.co/cn/downloads/logstash
我这里下载的是:logstash-7.6.2.tar.gz
解压,然后这里要写自己的日志处理配置。
配置文件示例如下:vim logstash-7.6.2/common-pipeline.conf
beats.port 是配置后面 Filebeat 收集数据发送到 Logstash 的端口。
grok.match 是 grok 来处理日志的(具体使用方式可以参考https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html),Kibana 页面 Dev Tools 下有对应的调试界面。如下:
date.match 匹配时间,匹配完成后对时间添加 8 个小时,避免 Kibana 显示的时候由于时区问题差8个小时。
if !([content]) 这里对于有些不符合 grok 规则的日志 直接将原始内容复制给 content 字段,时间也取日志收集的时间。
mutate 可以对一些字段进行重命名,丢弃。
output 配置输出方式,下面的 stdout 在调试的时候使用,调试完可以注释掉
安装Filebeat
下载地址:https://www.elastic.co/cn/downloads/beats/filebeat
我这里下载的是:filebeat-7.6.2-linux-x86_64.tar.gz
解压,运行
修改 Filebeat 配置 vim filebeat-7.6.2-linux-x86_64/filebeat.yml
fields 下的 yun_cluster,取值是从环境变量 Cluster 中取,如果没有的话默认给空字符串,这个可以根据自己需求修改。
mutiline.pattern 这个多行合并的,如下异常会合并一起收集(具体可参考文档:https://www.elastic.co/guide/en/beats/filebeat/current/multiline-examples.html)
版权声明: 本文为 InfoQ 作者【meng】的原创文章。
原文链接:【http://xie.infoq.cn/article/e9ae326799cb2077d4d26e1e4】。文章转载请联系作者。
评论