个人专题目录
Skywalking项目集成
相关Maven依赖引入
<skywalking.version>6.6.0</skywalking.version>
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-trace</artifactId>
<version>${skywalking.version}</version>
</dependency>
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-log4j-2.x</artifactId>
<version>${skywalking.version}</version>
</dependency>
traceId 集成到日志组件Log4j2,traceId 打印到每条日志里
- 当你使用
-javaagent
激活skywalking tracer后,log4j2将会输出traceId(如果存在的话)。如果tracer未激活,输出将是TID: N/A
。
核心配置:
<Property name="CONSOLE_LOG_PATTERN">%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{[%traceId]} %clr{${LOG_LEVEL_PATTERN}} %clr{${sys:PID}}{magenta} %clr{---}{faint} %clr{[%t]}{faint} %clr{%-40.40c{1.}:%L}{cyan} %clr{:}{faint} %X %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
<Property name="FILE_LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} [%traceId] ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.}:%L : %X %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
@Trace 注解想要追踪的任何方法
-
@Trace
注解的方法,会创建一个 LocalSpan 。 -
ActiveSpan#tag(key, value) 方法,在 LocalSpan 上添加标签键值对。
-
TraceContext.traceId#traceId 方法,获得全局链路追踪编号。
-
在你想追踪的方法上添加
@Trace
注解。添加后,你就可以在方法调用栈中查看到span的信息。 -
在被追踪的方法的上下文周期内添加自定义tag。
-
ActiveSpan.error()
将当前 Span 标记为出错状态. -
ActiveSpan.error(String errorMsg)
将当前 Span 标记为出错状态, 并带上错误信息. -
ActiveSpan.error(Throwable throwable)
将当前 Span 标记为出错状态, 并带上Throwable
. -
ActiveSpan.debug(String debugMsg)
在当前 Span 添加一个 debug 级别的日志信息. -
ActiveSpan.info(String infoMsg)
在当前 Span 添加一个 info 级别的日志信息
跨线程追踪
- 用法1
@TraceCrossThread
public static class MyCallable<String> implements Callable<String> {
@Override
public String call() throws Exception {
return null;
}
}
...
ExecutorService executorService = Executors.newFixedThreadPool(1);
executorService.submit(new MyCallable());
- 用法2
ExecutorService executorService = Executors.newFixedThreadPool(1);
executorService.submit(CallableWrapper.of(new Callable<String>() {
@Override public String call() throws Exception {
return null;
}
}));
ExecutorService executorService = Executors.newFixedThreadPool(1);
executorService.execute(RunnableWrapper.of(new Runnable() {
@Override public void run() {
//your code
}
}));
部署脚本(部分核心内容)
SW_AGENT_NAME=test-xxx
SW_AGENT_COLLECTOR_BACKEND_SERVICES=xx.xxx.xxx.xxx:11800
SW_LOGGING_LEVEL=debug
SW_LOGGING_DIR=${APP_LOG_PATH}
SW_LOGGING_MAX_FILE_SIZE=`expr 1024 \* 1024 \* 1024`
echo "SW_LOGGING_MAX_FILE_SIZE : ${SW_LOGGING_MAX_FILE_SIZE}"
SW_LOGGING_MAX_HISTORY_FILES=180
SW_MYSQL_TRACE_SQL_PARAMETERS=true
SW_SPRING_MVC_USE_QUALIFIED_NAME_AS_ENDPOINT_NAME=true
nohup java -javaagent:/data/apps/java/agent/skywalking-agent.jar=agent.service_name=${SW_AGENT_NAME},logging.level=${SW_LOGGING_LEVEL},logging.dir=${SW_LOGGING_DIR},logging.max_history_files=${SW_LOGGING_MAX_HISTORY_FILES},collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES},plugin.mysql.trace_sql_parameters=${SW_MYSQL_TRACE_SQL_PARAMETERS},plugin.springmvc.use_qualified_name_as_endpoint_name=${SW_SPRING_MVC_USE_QUALIFIED_NAME_AS_ENDPOINT_NAME} -jar -Denv=DEV ${APP_PATH}/${APP_NAME} --spring.profiles.active=test --server.port=${APP_PORT} --logging.path=${APP_LOG_PATH} > /dev/null 2>&1 &
网友评论