搭建ELK平台
这部分参考作者另一个采坑博客
建一个采用log4j2框架的SpringBoot项目
这部分没啥好说的,注意几个要点
1、确定项目采用了你配置的log4j2框架,而不是用的默认的logback或者其他日志框架
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions><!-- 去掉logback配置 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--log4j2-->
<dependency> <!-- 引入log4j2依赖 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
2、如果你的配置文件不在默认resources文件夹下,记得在applicaton.yml指定配置文件位置
#日志配置
logging:
config: classpath:log4j2.xml
本日志配置文件是在resources文件夹下的,理论上以上配置可以不用配置,只是演示配置方式
3、log4j2配置要点
<appenders>
<Socket name="logstash" host="logstash服务器IP地址" port="自定义端口" protocol="TCP">
<PatternLayout pattern="${LOG_PATTERN}"/>
<JsonLayout properties="true"/>
</Socket>
</appenders>
<loggers>
<root level="info">
<appender-ref ref="Console"/>
<appender-ref ref="logstash"/>
</root>
</loggers>
主要是在appenders里添加socket和loggers里添加appender-ref,当然也有其他方式可以发送日志给logstash,这里不作展开。
4、注意日志记录用的类
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Logger logger=LoggerFactory.getLogger(getClass());
当然如果用到了lombok的 import lombok.extern.slf4j.Slf4j 也可以
配置Logstash
1、按照ELK部署笔记(docker-compose部署)部署
2、到挂载的目录下,修改 logstash.conf 配置文件
input {
tcp {
#host =>"你的服务器ip地址"
port => 9600
codec => json {
charset => "UTF-8"
}
}
}
filter{
json{
source => "message"
}
}
output {
elasticsearch {
#action => "index"
#manage_template => false
hosts => "es:9200"
index => "logstash-%{+YYYY-MM-dd}"
#document_type => "logstash"
}
#stdout { codec=> rubydebug }
}
其中input的port配置一定要和log4j2配置文件中的端口对应上,我这里自行取得9600,其他端口也可以。记得到云服务器的安全组配置一下
操作Kibana
到了这里,你可能还是很懵逼,怎样才能在界面上看到自己的日志,而不是去服务器输命令搂。
1、Kibana-->Management-->Create index pattern
我这是第二步做好了,所以next step可以点
最开始是不行的,需要把第二步搞定
2、按照官网倒点数据到es,请戳Loading sample data
这个链接不一定长久有效,但是可以比较下面的链接,自行查找到Loading sample data
https://www.elastic.co/guide/en/kibana/7.1/tutorial-load-dataset.html#tutorial-load-dataset
该网站搞两步,第一:Loading sample data,第二:Defining your index patterns
做完后,你会发现next step可以点了
大功告成
最后测试步骤如下
1、保证elk三大docker服务都启动好了
2、启动你的SpringBoot服务
3、访问一个带有日志记录的接口
可以看到日志被记录到了Kibana平台上
总结:查阅数篇博客和官网,花了一天时间,终于搭了一个可以跑通的elk日志平台。当然还是有很多细节需要处理。阅读本文,还是需要一定的linux基础,有些常识性细节博主省略了,如有疑问,欢迎留言讨论。