功能介绍

利用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   作者:伍润源