版本
名称 | 版本 | 说明 |
---|---|---|
apache-skywalking-apm | 9.5.0 | skywalking |
skywalking-agent | 9.0.0 | Java代理包版本 |
安装
# 下载地址
wget https://archive.apache.org/dist/skywalking/9.5.0/apache-skywalking-apm-9.5.0.tar.gz
# 解压
tar -zxvf apache-skywalking-apm-bin.tar.gz
# 全部启动
sh apache-skywalking-apm-bin/bin/startup.sh
# 单独启动服务
sh apache-skywalking-apm-bin/bin/oapService.sh
# 单独启动ui
sh apache-skywalking-apm-bin/bin/webappService.sh
# 查看
jps
ES存储配置
vim apache-skywalking-apm-bin/config/application.yml
storage:
# 选择ES存储
selector: ${SW_STORAGE:elasticsearch}
elasticsearch:
# 命名空间
namespace: ${SW_NAMESPACE:""}
# ip 节点地址,多个用,逗号间隔
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200}
protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"}
connectTimeout: ${SW_STORAGE_ES_CONNECT_TIMEOUT:3000}
socketTimeout: ${SW_STORAGE_ES_SOCKET_TIMEOUT:30000}
responseTimeout: ${SW_STORAGE_ES_RESPONSE_TIMEOUT:15000}
numHttpClientThread: ${SW_STORAGE_ES_NUM_HTTP_CLIENT_THREAD:0}
# 用户
user: ${SW_ES_USER:""}
# 密码
password: ${SW_ES_PASSWORD:""}
trustStorePath: ${SW_STORAGE_ES_SSL_JKS_PATH:""}
trustStorePass: ${SW_STORAGE_ES_SSL_JKS_PASS:""}
UI 配置
vim apache-skywalking-apm-bin/webapp/webapp.yml
# 访问ui
http://ip:port
# SkyWalking UI 服务端口
serverPort: ${SW_SERVER_PORT:-8080}
Agent脚本
# SkyWalking Agent 配置
# SkyWalking Agent jar 地址。
# 配置 Agent 名字。一般来说,我们直接使用 Spring Boot 项目的 `spring.application.name` 。
# 配置 Collector 地址 127.0.0.1:11800。
# 配置链路的最大 Span 数量。一般情况下,不需要配置,默认为 300 。主要考虑,有些新上 SkyWalking Agent 的项目,代码可能比较糟糕 2000。
# Jar 启动
nohup java -javaagent:/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=applicationName -Dskywalking.collector.backend_service=127.0.0.1:11800 -jar demo.jar >nohup.out 2>&1 &
控制面板
-
服务列表
-
拓扑图
-
链路追踪
项目集成(可选)
-
logback日志集成TraceId
<dependency> <groupId>org.apache.skywalking</groupId> <artifactId>apm-toolkit-logback-1.x</artifactId> <version>9.0.0</version> </dependency>
<!-- 格式化输出:%d 表示日期,%X{tid} SkWalking 链路追踪编号,%thread 表示线程名,%-5level:级别从左显示 5 个字符宽度,%msg:日志消息,%n是换行符 --> <property name="PATTERN_DEFAULT" value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} | %highlight(${LOG_LEVEL_PATTERN:-%5p} ${PID:- }) | %boldYellow(%thread [%tid]) %boldGreen(%-40.40logger{39}) | %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/> <!-- 控制台 Appender --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout"> <pattern>${PATTERN_DEFAULT}</pattern> </layout> </encoder> </appender>
-
方法加入链路跟踪
<dependency> <groupId>org.apache.skywalking</groupId> <artifactId>apm-toolkit-trace</artifactId> <version>9.0.0</version> </dependency>
// 方法上添加@Trace注解,SkyWalking通过AOP实现跟踪,静态方法添加@Trace无效,只能用于实例方法. // 链路跟踪只记录方法名,不记录参数值,可通过代码添加,在当前span上添加tag(必须是被SkyWalking跟踪的方法) ActiveSpan.tag("userId", userId); ActiveSpan.tag("account", account); // 通过注解添加 @Tag(key = "userId", value = "userId]") @Tag(key = "account", value = "account")
-
自定义追踪
<dependency> <groupId>org.apache.skywalking</groupId> <artifactId>apm-toolkit-opentracing</artifactId> <version>9.0.0</version> </dependency>
Tracer tracer = new SkywalkingTracer(); Tracer.SpanBuilder spanBuilder = tracer.buildSpan("/request/path"); Span span = spanBuilder.withTag("userId", userId).withTag("account", account).startManual(); span.finish();
-
grpc日志收集
# skywalking-agent的config文件夹下的agent.config添加配置 # 指定要向其报告日志数据的GRPC服务器主机 plugin.toolkit.log.grpc.reporter.server_host=${SW_GRPC_LOG_SERVER_HOST:skywalking服务所在机器的ip} # 指定要向其报告日志数据的GRPC服务器端口 plugin.toolkit.log.grpc.reporter.server_port=${SW_GRPC_LOG_SERVER_PORT:11800} # 指定GRPC客户端要报告的日志数据的最大大小 plugin.toolkit.log.grpc.reporter.max_message_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760} # 客户端向上游发送数据时将超时多长时间,单位是秒 plugin.toolkit.log.grpc.reporter.upstream_timeout=${SW_GRPC_LOG_GRPC_UPSTREAM_TIMEOUT:30}
<!-- 格式化输出:%d 表示日期,%X{tid} SkWalking 链路追踪编号,%thread 表示线程名,%-5level:级别从左显示 5 个字符宽度,%msg:日志消息,%n是换行符 --> <property name="PATTERN_DEFAULT" value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} | %highlight(${LOG_LEVEL_PATTERN:-%5p} ${PID:- }) | %boldYellow(%thread [%tid]) %boldGreen(%-40.40logger{39}) | %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/> <!-- SkyWalking GRPC 日志收集,实现日志中心。注意:SkyWalking 8.4.0 版本开始支持 --> <appender name="GRPC" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender"> <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder"> <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout"> <pattern>${PATTERN_DEFAULT}</pattern> </layout> </encoder> </appender>