接入规范

##

一、调用链接入规范

基础镜像要求

ZCM平台默认植入iTracing Agent 实现调用链自动上报, 对应用发布者透明。自动上报的前提是基础镜像规范化,应用发布者需要使用ZCM提供的2个基础镜像来构建应用,如下:

  • 10.45.80.1/public/centos7-java-base:openjdk1.8.0.151
  • 10.45.80.1/public/centos7_java8_tomcat8_base:8.0.35

对于java基础应用使用第一个基础镜像,对于web类应用使用第二个基础镜像。

##

租户级开关

iTracing 通过环境变量 APM_INIT 作为功能开关,取值为apm.sh脚本地址,容器启动时,会检测该环境变量,如果有值,则从对应地址下载脚本并执行,如果没有值,则代表功能关闭。

默认情况,所有应用会共用租户级环境变量配置,配置路径:ZCM Portal > 基础设施 > 租户管理 ,如下图所示,可以对此值进行修改和删除操作:

###

应用级开关

租户级是全局开关,如果要进行项目级别开关,只需要修改项目环境变量,覆盖租户级环境变量即可。

二、日志接入规范

###

Dockerfile编写规范

应用日志采集文件方式接入iLog,无需主动上报,应用只需通过Docker 标签申明日志路径即可。iLog 会监听容器事件,自动采集并上报。

1.Dockerfile 声明日志路径

1
VOLUME /zcm/logs

注:/zcm/logs为例,需要根据实际情况申明挂载,例如:/root/logs 等。

2.Dockerfile 声明日志文件,支持通配符"*"

1
LABEL zcm.logs.myapp="/zcm/logs/ *.log"

注:语法是,LABEL zcm.logs.xxx=”/xxx/xxx” , xxx 根据实际情况填写。

3.可以申明多组日志,如:

  • LABEL zcm.logs.myapp1="/zcm/logs1/ *.log"
  • LABEL zcm.logs.myapp2="/zcm/logs2/ mon.log"

###

日志贯穿

通过“日志贯穿”,可以实现事务级上下文日志,并且支持调用链和日志上下文的双向关联。

iTracing 通过对logbacklog4j 进行字节码干预,在日志输出时,利用MDC机制,将调用链ID(TracdId) 注入到日志,TF9.0框架已统一处理格式,业务参照如下格式修改logback即可。

1.引入框架 logback-base.xml

1
<include resource="log/logback-base.xml" />

2.修改自定义logger的pattern

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<appender name="APP_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
<encoder>
<charset>utf-8</charset>
<pattern>${PATTERN}</pattern>
</encoder>
<prudent>false</prudent>
<append>true</append>
<file>${APP_LOG_FILE}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${APP_LOG_FILE}.%d{yyyy-MM-dd}-%i.gz</fileNamePattern>
<maxFileSize>10MB</maxFileSize>
<maxHistory>15</maxHistory>
<totalSizeCap>200MB</totalSizeCap>
</rollingPolicy>
</appender>