1. 说明

技术版本
ElasticSearch7.12.0
Skywalking8.7.0

2. 配置 Skywalking

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
  • 修改收集器配置(config/application.yml)
storage:
  selector: ${SW_STORAGE:elasticsearch7}
  elasticsearch7:
    nameSpace: ${SW_NAMESPACE:"elasticsearch"}
  • 启动 es 和 skywalking,可以看到 Skywalking-Webapp 和 Skywalking-Collector 已经在运行了
  • 打开 http://localhost:8828 看到如下界面即可,当然,你现在应该是没有数据显示的

image.png

3. 配置服务

  • 修改 JVM 启动参数(每个服务都需要进行这项配置)

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

-javaagent:D:\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar
-Dskywalking.agent.service_name=systemService
-Dskywalking.plugin.jdbc.trace_sql_parameters=true

image.png

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

image.png

image.png

Snipaste_20211112_234652.png

4. 插件

4.1 监控 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 后重启服务即可
4.1 监控 Spring Bean
  • 将 agent/optional-plugins/apm-spring-annotation-plugin-8.7.0.jar 放到 agent/plugins 后重启服务即可
4.3 监控任意代码
  • 将 agent/optional-plugins/apm-customize-enhance-plugin-8.7.0.jar 放到 agent/plugins 目录下
  • 在 agent 目录下创建文件 enhance.xml
<?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>
  • 修改 agent\config\agent.config 文件,plugin.customize.enhance_file=D:\apache-skywalking-apm-bin-es7\agent\enhance.xml

5. 告警

  • 修改 D:\apache-skywalking-apm-bin-es7\config\alarm-settings.yml
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/
  • 告警信息示例
[{
    "scopeId": 1,
    "scope": "SERVICE",
    "name": "serviceA",
    "id0": 12,
    "id1": 0,
    "ruleName": "service_response_time_rule",
    "alarmMessage": "服务:systemService最近2分钟以内,最近1分钟的响应超过了1s",
    "startTime": 1636808799000
}]

6. 动态配置

  • 修改 D:\apache-skywalking-apm-bin-es7\config\application.yml 后重启 Skywalking
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:""}
  • 在 nacos 中添加 Skywalking 相关配置

Snipaste_20211113_211937.png

Q.E.D.


盛年不重来,一日难再晨。