搭建ELK日志服务和SpringBoot集成
Comment前言
一个完整软件系统,日志服务是必不可少的一环,定位问题,分析日志都需要它的帮助,现在市面上用的比较多的日志服务方案是ELK,我看看如何来搭建集成。
ELK代表:Elasticsearch、Logstash、Kibana
Elasticsearch - 实时全文搜索和分析引擎,提供搜集、分析、存储数据功能
Logstash - 用来搜集、分析、过滤日志的工具
Kibana - Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据
我们用个简单的架构来演示:ELK + SpringBoot
ELK日志服务搭建
这里我们采用的是docker的方式来进行的搭建,直接在github上找了一个开源项目docker-elk,快速简单的完成搭建。
构建镜像运行容器
下面的命令直接就可以构建并运行elk:
1 | git clone https://github.com/deviantony/docker-elk.git |
注:因为仓库里的yml配置的是build命令。所以每次up -d都会重新构建镜像,因此,构建完成后,后续启动建议时间start命令。
或者也可以将yml的build命令修改为指定的image+版本,可以更好的管理容器版本,如项目中的docker-stack.yml文件示例。
启动完成后,浏览器打开:http://localhost:5601/ 即可访问kibana页面,默认账号/密码:elastic/changeme。
如果需要清理容器的持久数据,可以执行下面的命令:
1 | docker-compose down -v |
调整核心配置
这些设置是构建镜像的时候的一些默认设置,正常情况下,不需要更改,docker-compose端口映射和相关配置 足以满足我们的需求。
ES配置
在docker-compose.yml文件中,可指定内存大小、密码、以及模式等,如:
1 | environment: |
Logsstash配置
文件路径:./logstash/config/logstash.yml
配置内容:
1 | ## Default Logstash configuration from Logstash base image. |
注:这里需指定es的认证密码、地址和端口
另外,Logsstash还有一个数据输入端口input设置:
文件路径:./logstash/pipeline/logstash.conf
配置内容:
1 | input { |
Kibana配置
文件路径:./kibana/config/kibana.yml
配置内容:
1 | ## Default Kibana configuration from Kibana base image. |
注:同样的,这里也需指定es的认证密码、地址和端口
SpringBoot项目配置
pom文件配置
引入logstash-logback-encoder,它负责链接logstash服务,推送程序日志:
1 | <logstash.version>6.4</logstash.version> |
logback-boot.xml配置
修改项目的logback-boot.xml,配置logstash的日志追加器,因为此案例是在本地搭建的,所以logstash的地址使用的是127.0.0.1,端口是5000。
如果不清楚端口,可以通过查看docker-compose文件查看到 配置暴露在宿主机上的端口
logback-boot.xml配置示例:
1 |
|
然后,我们启动项目,日志就能实时追加到搭建的服务中去了。
Kibana仪表盘设置
1,索引设置:
路径:设置 >> Kibana >> Index Patterns >> Create index pattern
Step1:
索引信息,支持根据通配符设置,如:logstash-*
Step2:
选择按照时戳作为筛选字段:@timestamp
注:仪表盘的这些索引设置,需要我们先写入日志数据
2,然后,进入Discover仪表盘,然后INDEX PATTERN选择logstash-*,就能查看日志了,如:
- 本文作者:沙果栗子本文链接:https://32e.co/2020/09/08/elk-log-springboot/版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!