SpringCloud下skywalking的快速入门( 二 )

此处 , 我们只需要将 SW_STORAGE 的默认值从 H2 改为 elasticsearch7 即可 , 如果之前改过ES的 cluster_name, 此处要将 SW_NAMESPACE 的默认值做对应修改 。
Docker的配置 , 也可直接通过在启动时指定变量值进行改动 。
2.3 启动如果是整合包 , 则解压后 , 直接进入bin目录用startup脚本即可同时启动 OAP 和 UI 服务 。
Docker启动:
# 启动OAP$sudo docker run --name oap --network esnw --restart always -d -p 11800:11800 -p12800:12800 -e SW_STORAGE=elasticsearch7 -e# 启动UI$docker run --name oap-ui --network esnw --restart always -d -p 8080:8080 -e SW_OAP_ADDRESS=oap:12800 apache/skywalking-ui:8.1.0注:
SkyWalking的UI有个坑 , 不支持反向代理 , 具体可参见 github issue #2675
3. 配置并启用AgentSkyWalking对于Java项目十分友好 , 默认提供的 Agent 就是Java的 , 使用 JavaAgent 进行字节码注入实现拦截 。 SkyWalking是遵循 OpenTracing 规范的 , 下图是 OpenTracing 中定义的数据结构 。
SpringCloud下skywalking的快速入门文章插图
其中 ,

  • SpanContext:负责上线文信息保持和传递
  • Trace: 一次调用的完整记录Span: 一次调用中的某个节点/步骤 , 类似于一层堆栈信息 , Trace是由多个Span组成 , Span本身也是可以嵌套自身的数据结构Tag: 节点/步骤中的关键信息Log: 节点/步骤中的日志 , 例如抛出的异常栈Baggage: 主要用于运行时跨Span或跨实例的上下文传递
3.1 配置从前面下载页下载的整合包里 , 把整个 agent 目录拷到项目文件里 , 或者单独放在某个位置 。
activationsbootstrap-plugins# 配置文件存放目录config# agent运行时生成的日志保存在此目录logs# 可选用的插件 , 默认不启用optional-plugins# 可选用的reporter插件 , 默认不启用optional-reporter-plugins# 默认启用的插件放于此目录plugins# 拦截探针实现skywalking-agent.jar暂时没有需要修改的配置 , 就不去更改配置文件了 。
optional-plugins 里的插件默认是不启用的 , 如果要启用 , 需要将其移动到 plugins 目录 。
optional-plugins 里 , 有几个可选插件是值得我们注意的:
  • apm-spring-annotation-plugin-8.1.0.jar该插件可追踪Spring上下文中被 @Bean , @Service,@Component 和 @Repository 注解的方法 , 该插件一旦启用 , 会产生大量的span , 从而消耗更多的资源 , 所以默认是把它放到了可选插件中 。
  • apm-spring-cloud-gateway-2.1.x-plugin-8.1.0.jar该插件将从SpringCloudGateway产生的span与后续相同链路的span合并到一起进行追踪 , 如果没有这个插件 , 一个REST请求 , 如/api/hello , 经过SC Gateway到达服务a时 , 将会在UI上展示两个跟踪记录而非一条(服务a也必须启用skywalking agent) 。 该插件依赖spring-webflux-5.x-plugin 。 但该插件应该只对Spring Cloud Gateway启用 。
  • apm-trace-ignore-plugin-8.1.0.jar该插件可以自定义过滤掉一些路径 , 不被追踪 。 使用时 , 需要把 /agent/optional-plugins/apm-trace-ignore-plugin/apm-trace-ignore-plugin.config 拷贝到 /agent/config 目录 , 然后修改其内容增加想要过滤掉的路径 , 例如:trace.ignore_path=/your/path/1/**,/your/path/2/**
  • apm-customize-enhance-plugin-8.1.0.jar该插件可以通过指定增强文件来实现方法级的精细拦截及span生成的定义 , 而不用写代码 。 具体参见: 这里
为方便测试 , 我们将apm-spring-annotation-plugin-8.1.0.jar和apm-spring-cloud-gateway-2.1.x-plugin-8.1.0.jar 拷入