功能介绍
利用ELK技术栈搭建日志管理平台的最佳架构。
简单粗暴版架构图:
上面架构是简单粗暴的架构,这种架构对数据源服务器性能影响较大,因为Logsash是需要安装和运行在需要收集的数据源服务器中,然后将收集到的数据实时进行过滤,过滤环节是很耗时间和资源的,过滤完成后才传输到ES中。
操作示例
1. pai工具创建后端项目自动集成ELK
pai create service -n xxxxx
2. 自定义项目添加ELK(测试环境为例)
3. pom.xml引入依赖
<!--集成logstash-->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>5.3</version>
</dependency>
4. 日志文件配置 logback-config.xml
以下仅为部分代码
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!--
springboot读取配置文件是有优先级的,如果使用默认的logback.xml或者logback-spring.xml为配置文件名则会读取不到nacos上的配置。
命名为logback-spring.xml程序只会在运行后一段时间内报错,一段时间后读取到nacos上的配置文件之后会正常,但是有瑕疵。
logback.xml直接运行失败。所以得使用自定义命名logback配置名称。如:logback-config.xml
要在nacos上配置
logging:
config: classpath:logback-config.xml
-->
<springProperty scope="context" name="spring.application.name" source="spring.application.name"/>
<springProperty scope="context" name="logstash.destination" source="logstash.server-addr"/>
<!-- 此处略去1万字配置内容... -->
<!--输出到logstash的appender-->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!--可以访问的logstash日志收集端口-->
<destination>${logstash.destination}</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
<customFields>{"appname":"${spring.application.name}"}</customFields>
</encoder>
</appender>
<root level="info">
<appender-ref ref="consoleLog"/>
<appender-ref ref="LOGSTASH"/>
</root>
</configuration>
5. Nacos 配置
logging:
config: classpath:logback-config.xml
logstash:
# 集群以逗号分隔
server-addr: 127.0.0.1:6000
此配置请忽略,已抽取至nacos共享配置
6. 查看日志
kibana7.7.0
- 首次创建日志索引
- 查询日志
kibana7.17.2(升级Log4j漏洞)
操作过程同7.7.0,现将新版本入口示意如下图
文档更新时间: 2023-09-04 15:04 作者:伍润源