WangBooth's Logbook

王布斯的网络日志

0%

0001-7.2.0-Logstash入门

basic_logstash_pipeline

需求

公司里目前各个服务部署在不同的服务器上,每个服务有自己的日志文件,日志缺乏统一查看的地方,平时看日志得去 SSH 到服务器上去才能看,不方便排查问题:

image-20190724205836242

另外,有些服务器对不同岗位的人权限是分开的,比如测试服务器上,只有测试人员才能通过 SSH 登录到服务器,开发人员是没权限登录的,开发人员想查问题就得找测试人员去一个个要日志了,测试人员也得陪着开发去一个个找,大家都难受。

所以,就想着通过 Logstash 将日志汇聚到 ES 里,让大家通过同一个口子—— kibana 来查看服务日志。

image-20190725163751321

测试环境

  • CentOS 7.5
  • Java 1.8
  • Logstash 7.2.0
  • ES 7.2.0
  • Filebeat 7.2.0
  • Kibana 7.2.0

安装

直接从官网下载压缩包解压即可,参考官网

Filebeat

监控文件的变化以及读文件,是通过 Filebeat 实现的,下载好 Filebeat 后,修改 Filebeat 的配置文件:

1
2
3
4
5
6
7
8
filebeat.inputs:
- type: log
enabled: true
paths:
- /data/dubhe-master/logs/dubhe-master.info.log
- /data/dubhe-daemon/logs/dubhe-daemon e.info.log
output.logstash:
hosts: ["logstash服务器IP:5044"]

上述配置表明,Filebeat 将监控并读取两个日志文件,然后将日志内容传给 Logstash。

启动 Filebeat: nohup ./filebeat -e -c filebeat.yml -d "publish" >> filebeat.log 2>&1 &

Logstash pipeline

Logstash 是通过 pipeline 的方式来完成整个日志接收、处理和传送过程的,先创建一个空的 pipeline 文件 test.conf:

1
2
3
4
5
6
7
8
input {
}

filter {

}
output {
}

pipeline 中的 input 用于接收 Filebeat 传来的内容,Logstash 通过自带的 Beats input 插件来接收,在 input 中添加 beats :

1
2
3
input {
beats { port => 5044 }
}

filter 用于内容转换,暂时先放着不管。

output 为输出,这里将日志内容输出到 ES 中,在 output 中添加 ES 信息(ES 需提前安装好):

1
2
3
output {
elasticsearch { hosts => ["ES服务器IP:9200"] }
}

检查 pipeline 文件格式是否正确:

1
bin/logstash -f test.conf --config.test_and_exit

如果返回内容显示 Config Validation Result: OK. 则表名 pipeline 文件配置正确,否则需要检查 pipeline 文件内容。

启动 logstash:

1
nohup bin/logstash -f test.conf --config.reload.automatic >> logstash.log 2>&1 &

Kibana

打开 kibana,过滤查看字段 log.file.pathmessage 来查看日志内容:

image-20190725163443511

总结

通过简单的配置,练习了从 日志文件 -> Filebeat -> logstash -> ES -> Kibana 的过程,简单实现了最原始的需求:不同地方的日志从统一一个口子查看。

参考资料

ES 官方文档: https://www.elastic.co/guide/en/logstash/current/advanced-pipeline.html

(全文完)