日志中心集成

集成maven依赖

<dependency>
    <groupId>cn.sunline.edspgroupId>
    <artifactId>edsp-cloud-starter-skywalkingartifactId>
    <version>{
    { book.ver }}version>
dependency>

加入这个依赖是为了在下一步注入edsp-application、edsp-group、edsp-instance,如果不加这个依赖,请手动替换

下一步的这三个系统属性。

按规范打印应用日志

应用日志需要按照EDSP定义的规范打印日志到日志文件,EDSP收集到日志后,便可以解析成结构化数据并存储到日志系统。

应用日志解析成结构化数据后,有以下好处:

  1. 使应用日志和链路通过字段建立关联关系
  2. 字段筛选,快速准确地进行故障定位和问题排除
  3. 借助日志系统可以方便得到一些统计信息

规范定义

log4j2 pattern定义

[%d{
     yyyy-MM-dd HH:mm:ss:SSS}] [%-5level] [%X{
     ltts_log_type}] [${sys:edsp.application}] [${sys:edsp.group}] [${sys:edsp.instance}] [%X{
     trace.id}] [%X{
     SW-traceId}] [%X{
     SW-segmentId}] [%t] [%C{
     1}] %m%n

pattern说明

pattern用中括号来分隔字段,每个右中括号后跟着一个英文空格,最后的%m%n表示日志内容后跟着一个换行符。字段含义从左到右依次为:

[机器日期时间] [日志级别] [日志类型] [应用名] [应用实例id] [adp交易流水号] [链路id] [链路节点id] [线程名] [类] 日志内容

pattern字段说明

字段名
pattern格式
必须
说明
与链路关系
说明
打印时间 %d{yyyy-MM-dd HH:mm:ss:SSS} 日志打印时的服务器时间 - 不改动
日志级别 %-5level 即日志级别,例如:DEBUG、INFO、WARN、ERROR、FATAL - 不改动
日志类别 %X{ltts_log_type} 将应用日志划分类别(比如boot、sqlsql、links、busi、poll等)。如果应用没有划分类别,可以留空或者统一使用一个类别(比如:default)。默认通过MDC注入,但可以用一个类别替换掉。 - 如果是adp开发的应用,不建议改动,因为adp有日志分类概念,并通过MDC设置了ltts_log_type;如果是网关,网关也有分类概念,但网关没有通过MDC设置ltts_log_type,而是有多个pattern,每个pattern对应一个分类。非adp应用,非网关应用,可以不改动或改成default。
应用名
(或应用编码)
${sys:edsp.application} 同一个域下,应用编码唯一。值由edsp-client设置。 - 不改动
应用分组名
(或应用分组编码)
${sys:edsp.group} 应用分组,类似集群概念。一个应用下有一个到多个应用分组,同一个应用下,应用分组编码唯一。一个应用分组下会有一到多个应用实例。值由edsp-client设置。 - 不改动
应用实例标识 ${sys:edsp.instance} 同一个域下,应用实例的标识唯一。值由edsp-client设置。 - 不改动
交易流水号 %X{trace.id} 应用定义的交易流水号,值由应用设置到MDC。trace.id为adp设置的。 - adp应用、网关服务端有trace.id字段,不需要改动;其他应用按需调整。
链路id %X{SW-traceId} 交易日志关联到一条链路上,非交易日志没有链路id。值由skywalking探针通过MDC设置。 对应链路id 不改动
链路节点id %X{SW-segmentId} 交易日志关联到一条链路的某个节点上,非交易日志没有链路节点id。值由skywalking探针通过MDC设置。 对应链路段id 不改动
线程名 %t 日志打印时所在线程名 - 不改动
%C{1} 全限定类名 - 不改动
日志内容 %m - - 不改动

异常情况

adp应用有一部分日志包含 s y s : e d s p . a p p l i c a t i o n 、 {sys:edsp.application}、 sys:edsp.application{sys:edsp.group}、${sys:edsp.instance},原因是应用在设置这三个值前就已打印了一些日志。有两类解决办法:

  • 设置默认值, s y s : e d s p . a p p l i c a t i o n : − u n k n o w n 、 {sys:edsp.application:-unknown}、 sys:edsp.application:unknown{sys:edsp.group:-unknown}、${sys:edsp.instance:-unknown}
  • 直接用实际值替换,比如用shopping-app替换 s y s : e d s p . a p p l i c a t i o n ; 用 d e f a u l t 替 换 {sys:edsp.application};用default替换 sys:edsp.applicationdefault{sys:edsp.group}。

日志收集

应用部署在k8s上

EDSP日志收集器filebeat将日志收集目录挂载在filebeat/applogs,filebeat会去filebeat/applogs目录下收集日志,

应用容器只需要将日志所在目录挂载到filebeat/applogs的子目录下,建议子目录以应用名命名。如下图所示:
日志中心集成_第1张图片

你可能感兴趣的:(springboot,java,spring,boot,maven,log4j)