清单 11. 支持两种日志输入的 Indexer 角色的 Logstash 配置
input { redis { type => "logback" ... } redis { type => "nginx" ... } } filter { if [type] == "logback" { ... } if [type] == "nginx" { ... } } output { if [type] == "logback" { ... } if [type] == "nginx" { ... } }我的 Nginx 与 Spring Boot 项目部署在同一台机器上,所以还需修改 Shipper 类型的 Logstash 的配置以支持两种类型的日志输入和输出,其配置文件的内容可 点击这里获取。
以上配置完成后,我们按照 查看效果 章节中的步骤,启动 ELK 平台、Shipper 角色的 Logstash、Nginx 以及 Spring Boot 项目,然后在 Kibana 上添加 Nignx 索引后就可同时查看 Spring Boot 和 Nginx 的日志了,如下图所示。
图 10. ELK 查看 Nginx 日志
ELK 启动
在上面的步骤中,ELK 的启动过程是我们一个一个的去执行三大组件的启动命令的。而且还是在前台启动的,意味着如果我们关闭会话窗口,该组件就会停止导致整个 ELK 平台无法使用,这在实际工作过程中是不现实的,我们剩下的问题就在于如何使 ELK 在后台运行。
根据 《Logstash 最佳实践》 一书的推荐,我们将使用 Supervisor 来管理 ELK 的启停。首先我们需要安装 Supervisor,在 Ubuntu 上执行 apt-get install supervisor 即可。安装成功后,我们还需要在 Supervisor 的配置文件中配置 ELK 三大组件(其配置文件默认为 /etc/supervisor/supervisord.conf 文件)。
清单 12. ELK 后台启动
[program:elasticsearch] environment=JAVA_HOME="/usr/java/jdk1.8.0_221/" directory=http://www.likecs.com/home/elk/elk/elasticsearch user=elk command=http://www.likecs.com/home/elk/elk/elasticsearch/bin/elasticsearch [program:logstash] environment=JAVA_HOME="/usr/java/jdk1.8.0_221/" directory=http://www.likecs.com/home/elk/elk/logstash user=elk command=http://www.likecs.com/home/elk/elk/logstash/bin/logstash -f /home/elk/elk/logstash/indexer-logstash.conf [program:kibana] environment=LS_HEAP_SIZE=5000m directory=http://www.likecs.com/home/elk/elk/kibana user=elk command=http://www.likecs.com/home/elk/elk/kibana/bin/kibana按照以上内容配置完成后,执行 sudo supervisorctl reload 即可完成整个 ELK 的启动,而且其默认是开机自启。当然,我们也可以使用 sudo supervisorctl start/stop [program_name] 来管理单独的应用。
结束语在本教程中,我们主要了解了什么是 ELK,然后通过实际操作和大家一起搭建了一个 ELK 日志分析平台,并且接入了 Logback 和 Nginx 两种日志。