全链路日志跟踪定位

2024/12/20 maven

# 一、全链路日志配置

# logback-spring.xml 配置

再每个web项目下的resources的“logback-spring.xml” 里添加如下内容:

image-20220406150904267

<appender name="MOGN" class="com.itonghui.log.MongoDBAppender" >
        <userName>${MQ_USER_NAME}</userName>
        <password>${MQ_PASSWORD}</password>
        <brokerURL>${MQ_BROKER_URL}</brokerURL>
        <!-- 此日志文件只记录ERROR级别的 -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>info</level>
        </filter>
    </appender>

    <!--开发环境:打印控制台 -->
    <springProfile name="dev">
        <logger name="com.itonghui" level="DEBUG" />
        <root level="INFO">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="ASYNC_LOG_DEBUG" />
            <appender-ref ref="ASYNC_LOG_INFO" />
            <appender-ref ref="ASYNC_LOG_WARN" />
            <appender-ref ref="ASYNC_LOG_ERROR" />
            <appender-ref ref="MOGN" />
        </root>
    </springProfile>

    <springProfile name="prod">
        <logger name="com.itonghui" level="WARN" />
        <root level="WARN">
            <appender-ref ref="ASYNC_LOG_WARN" />
            <appender-ref ref="ASYNC_LOG_ERROR" />
            <appender-ref ref="MOGN" />
        </root>
    </springProfile>

    <springProfile name="test">
        <logger name="com.itonghui" level="INFO" />
        <root level="INFO">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="ASYNC_LOG_INFO" />
            <appender-ref ref="ASYNC_LOG_WARN" />
            <appender-ref ref="ASYNC_LOG_ERROR" />
            <appender-ref ref="MOGN" />
        </root>
    </springProfile>

# nacos 链路日志配置

配置 “ith-service-document-{env}.yaml” ,该链路日志服务依赖mongodb 数据库服务:

spring:
  data:
    mongodb:
      host: localhost #数据库ip
      port: 27017 # 数据库端口
      database: demo # 数据库库名
      username: admin # 数据库账号(未设置认证可删除)
      password: w3d56yu8r # 数据库密码 (未设置认证可删除)

启动 ith-service-document 服务

# 使用说明

接口响应报文结构:

{
    "code": 0,
    "ext": {},
    "msg": "操作成功!",
    "success": true,
    "traceId": "dce641ae2c2424b9"
}

code: 响应状态码

ext: 业务数据

msg:响应状态码明文说明

success: 响应状态 true 成功 false失败

traceId:链路日志id 该参数用于链路日志定位跟踪唯一依据

登录管理平台 “系统监控>日志监控管理”,根据 traceId 的值可直接搜索到该接口在整个链路中(有关所有服务)的调用log记录:

# 二、API访问操作日志

数据可追溯性:有助于追踪系统中所有对 API 的操作,方便排查问题和审计。

安全性增强:通过记录操作,能够及时发现异常操作,保障系统安全。

# 1、站点参数和数据字典维护

  • 数据字典:

类型(新增、查询、删除、修改)

INTERVIEW_HANDLE_TYPE

模块 (商品管理、订单管理、...)

INTERVIEW_TYPE

  • 站点参数:

是否开启操作日志记录

LOG_REST_OPER = false

保留操作日志天数

LOG_REST_BACK_DAY = 15

# 2、更新产品服务

ith-service-document

ith-service-gateway

# 3、上传操作日志分类模块

excel模板上传:

# 三、云仓远程显示日志监控

# 1.插件采集插件安装

<!-- 再 “document-service” pom.xml 安装插件 -->
<dependency>
  <groupId>com.ith.framework</groupId>
  <artifactId>ith-collect-log</artifactId>
  <version>1.0.1-SNAPSHOT</version>
</dependency>

# 2. 相关配置

线上项目 再nacos “ith-service-gateway.yaml” 新增 [th-service-document]路由转发 “/api/logrecord/**”

      - id: ith-service-document
        uri: lb://ith-service-document
        predicates:
        - Path=/api/logrecord/**,/api/admin/logrecord/**,/api/authen/doc/**,/api/authen/doc/formauto/**,/api/doc/**,/api/member/logrecord/**