分布式链路追踪-SkyWalking

分布式链路追踪-SkyWalking

说明

技术 版本
ElasticSearch 7.12.0
Skywalking 8.7.0

配置 SkyWalking

  1. 下载
  2. 修改管理平台配置(webapp/webapp.yml)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server:
port: 8828
spring:
cloud:
gateway:
routes:
- id: oap-route
uri: lb://oap-service
predicates:
- Path=/graphql/**
discovery:
client:
simple:
instances:
oap-service:
- uri: http://127.0.0.1:12800
  1. 修改收集器配置(config/application.yml)
1
2
3
4
storage:
selector: ${SW_STORAGE:elasticsearch7}
elasticsearch7:
nameSpace: ${SW_NAMESPACE:"elasticsearch"}
  1. 启动 es 和 skywalking,可以看到 Skywalking-Webapp 和 Skywalking-Collector 已经在运行了
  2. 打开 http://localhost:8828 看到如下界面即可,当然,你现在应该是没有数据显示的

image.png

配置服务

  1. 修改 JVM 启动参数(每个服务都需要进行这项配置)
1
2
3
-javaagent:D:\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar
-Dskywalking.agent.service_name=systemService
-Dskywalking.plugin.jdbc.trace_sql_parameters=true

javaagent:探针所在的位置
这里的配置是为了覆盖 agent/config/agent.config
service_name:管理平台页面中看到的服务名称
trace_sql_parameters:输出 sql 参数
backend_service:收集器服务的地址,默认 127.0.0.1:11800

image.png

  1. 启动服务,随意访问几个接口,打开管理平台界面,已经有数据显示了

image.png

image.png

image.png

插件

监控 SpringCloud Gateway

将 agent/optional-plugins 下的 apm-spring-cloud-gateway-3.x-plugin-8.7.0.jar 和 apm-spring-webflux-5.x-plugin-8.7.0.jar 放到 agent/plugins 后重启服务即可

监控 Spring Bean

将 agent/optional-plugins/apm-spring-annotation-plugin-8.7.0.jar 放到 agent/plugins 后重启服务即可

监控任意代码
  1. 将 agent/optional-plugins/apm-customize-enhance-plugin-8.7.0.jar 放到 agent/plugins 目录下
  2. 在 agent 目录下创建文件 enhance.xml
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="UTF-8"?>
<enhanced>
<class class_name="com.github.pagehelper.page.pageMethod">
<method method="startPage(int.class,int.class)" operation_name="/pageHelper" static="true">
<operation_name_suffix>arg[0]</operation_name_suffix>
<operation_name_suffix>arg[1]</operation_name_suffix>
<tag key="tag_1">arg[0]</tag>
<log key="log_1">arg[0]</log>
</method>
</class>
</enhanced>
  1. 修改 agent\config\agent.config 文件,plugin.customize.enhance_file=D:\apache-skywalking-apm-bin-es7\agent\enhance.xml

告警

  1. 修改 D:\apache-skywalking-apm-bin-es7\config\alarm-settings.yml
1
2
3
4
5
6
7
8
9
10
11
rules:
service_response_time_rule:
metrics-name: service_resp_time
threshold: 1000
op: ">"
period: 2
count: 1
message: 服务:{}最近2分钟以内,最近1分钟的响应超过了1s
webhooks:
# 告警通知地址
- http://127.0.0.1/notify/
  1. 告警信息示例
1
2
3
4
5
6
7
8
9
10
[{
"scopeId": 1,
"scope": "SERVICE",
"name": "serviceA",
"id0": 12,
"id1": 0,
"ruleName": "service_response_time_rule",
"alarmMessage": "服务:systemService最近2分钟以内,最近1分钟的响应超过了1s",
"startTime": 1636808799000
}]

动态配置

  1. 修改 D:\apache-skywalking-apm-bin-es7\config\application.yml 后重启 Skywalking
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
configuration:
selector: nacos
nacos:
# Nacos Server Host
serverAddr: 127.0.0.1
# Nacos Server Port
port: 8848
# Nacos Configuration Group
group: skywalking
# Nacos Configuration namespace
namespace: public
# Unit seconds, sync period. Default fetch every 60 seconds.
period: 10
# Nacos auth username
username: nacos
password: nacos
# Nacos auth accessKey
# accessKey: ${SW_CONFIG_NACOS_ACCESSKEY:""}
# secretKey: ${SW_CONFIG_NACOS_SECRETKEY:""}
  1. 在 nacos 中添加 Skywalking 相关配置

image.png