简介
ELK,包含三款产品,Elasticsearch、Logstash、Kibana,可在项目中作为日志框架使用。
各模块的功能如下:
- 应用服务
生产日志,通过Logger产生日志并输出。 - Logstash
收集日志,通过http接收应用服务产生的日志。 - Elasticsearch
为日志提供全文检索功能。 - kibana
为Elasticsearch提供图形化界面。
安装过程
elasticsearch、logstash、kibana安装
为了简化安装步骤,本文使用docker-compose安装elk,所以需要先安装好docker与docker-compose。如果想自主安装,可以自行百度。
1. 新建logstash配置文件
我创建的为/opt/elk/logstash/logstash-springboot.conf
文件,可以自行调整,但是要和下文docker-compose中的对应上
1 | input { |
2. 编写docker-compose.yml
1 | version: '3' |
注:/opt/elk
和elk版本可以换成自己想要的版本,上面还有一行注释掉的Gemfile,这个等会有用,先别取消注释。
3. 执行docker-compose文件
1 | # 在上述docker-compose.yml的目录下执行docker-compose文件 |
启动成功稍等一会,你就能通过http://127.0.0.1:5601/
访问Kibana了。
4. 修改Gemfile文件
(当然,你要是能挂梯子,可以直接看第五步)
logstash的Gemfile文件默认镜像地址为https://rubygems.org
,但是国内好像很能下载成功,所以我们要改一下,直接在docker里修改也始终不行,所以还是用挂载的吧,操作如下:
- 首先拷贝docker中的文件到本机:
1 | docker cp logstash:/usr/share/logstash/Gemfile /opt/elk/logstash |
- 修改文件中的source为
https://gems.ruby-china.com/
1 | # source "https://rubygems.org" |
- 此时停止容器并移除通过创建的容器
1 | # 在上述docker-compose.yml的目录下执行下面的语句 |
- 然后取消
docker-compose.yml
文件中的Gemfile
注释,重新执行下面的语句
1 | # 在上述docker-compose.yml的目录下执行docker-compose文件 |
5. 安装logstash插件
1 | # 进入logstash容器 |
logstash-plugin install 以后,不出意外的话,你就会看到下面的成功提示:
当然,要是出现下面的OpenTimeout提示,还是去看看第四步吧
1 | ERROR: Something went wrong when installing logstash-codec-json_lines, message: Net::OpenTimeout |
Spring Boot 项目搭建
1. 新建logback-spring.xml文件
新建springboot项目,然后在resources/log/
下新建logback-spring.xml
文件,下面的ip端口改成自己的:
1 |
|
2. 修改application.yml文件
1 | # 加入下面的配置,引入日志文件 |
3. 随便写一个测试接口
1 |
|
Kibana配置
浏览器输入http://127.0.0.1:5601,访问Kibana web界面。进入Management界面,点击index Patterns
,然后点击创建一个索引
在下面的界面中输入springboot-logstash-*
然后点击Next step
,这个springboot-logstash-*
是根据上面logstash-springboot.conf
中output
模块的index
属性确定的,要是你修改了,这边也需要做对应的修改。如果这边输入以后,提示没有任何匹配,可以试着先访问一下logstash
的地址:http://127.0.0.1:4560/
,然后刷新下界面,一般出现箭头处的索引,就基本没啥问题了。
在接下来的页面选择@timestamp
,然后点击Create index pattern
此时,访问一下接口,然后就能在Discover
模块看到记录的日志信息了。
其他
kibana汉化
要是你不习惯kibana
的英文页面,需要汉化,也比较简单,kibana 7.*
以上的版本都带了中文语言包,只需要设置一下即可:
1 | 进入kibana容器 |
修改完的kibana.yml
如下:
等待kibana
重启完能看到中文界面了。