skywalking
- APM(应用性能管理)工具
- 链路追踪 https://www.sohu.com/a/319806744_100123073
- 性能监控
SkyWalking是一个开源的观测平台,用于从服务和云原生等基础设施中收集、分析、聚合以及可视化数据。SkyWalking 提供了一种简便的方式来清晰地观测分布式系统,甚至可以观测横跨不同云的系统。SkyWalking 更像是一种现代的应用程序性能监控(Application Performance Monitoring,即APM)工具,专为云原生,基于容器以及分布式系统而设计
SkyWalking组成
探针
基于不同的来源探针可能是不一样的,但作用都是收集数据,将数据格式化为 SkyWalking 适用的格式。例如在Java中则是做字节码植入,无侵入式的收集,并通过 HTTP 或者 gRPC 方式发送数据到平台后端
平台后端
是一个支持集群模式运行的后台,用于数据聚合、数据分析以及驱动数据流从探针到用户界面的流程。平台后端还提供了各种可插拔的能力,如不同来源数据(如来自 Zipkin)格式化,不同存储系统以及集群管理。你甚至还可以使用观测分析语言来进行自定义聚合分析。
存储
是开放式的,可以选择一个既有的存储系统,如 ElasticSearch、H2 或 MySQL 集群(Sharding-Sphere 管理),也可以选择自己实现一个存储系统
用户界面
也就是SkyWalking的可视化界面,UI非常炫酷且强大,同样它也是可定制以匹配你已存在的后端的
下载地址
http://skywalking.apache.org/downloads/
windows 下环境搭建
-
下载压缩包 apache-skywalking-apm-6.6.0.zip
-
解压,进入
\apache-skywalking-apm-6.6.0\apache-skywalking-apm-bin\bin\
目录运行
start.bat
,此时分别启动了两个服务- oapService
- webappService
-
进入
\apache-skywalking-apm-6.6.0\apache-skywalking-apm-bin\agent\
目录,找到文件skywalking-agent.jar
-
登陆控制台 localhost:8080
java 项目集成
-
服务启动时增加启动参数
-javaagent:E:\skywalking\apache-skywalking-apm-bin\agent\skywalking-agent.jar(jar目录) -Dskywalking.agent.service_name=服务名称 -Dskywalking.collector.backend_service=192.168.0.71:11800(skywalking oapService 服务地址,默认127.0.0.1:11800)
-
启动服务即可
-
仪表盘
- 拓扑图
- 请求追踪
整合log4j 打印日志traceId
-
添加依赖
<dependency> <groupId>org.apache.skywalking</groupId> <artifactId>apm-toolkit-log4j-2.x</artifactId> <version>6.0.0-GA</version> </dependency>
-
log4j配置增加
[%traceId]
<Property name="pattern">%d--[%traceId]-- [%thread] %-5level %logger{36} %line - %msg%n%ex</Property>
效果
2020-07-07 17:43:24,449 --[TID: 16.174.15941149994700001]-- [http-nio-1112-exec-1] INFO com.netflix.util.concurrent.ShutdownEnabledTimer 58 - Shutdown hook installed for: NFLoadBalancer-PingTimer-queenOA-jpa 2020-07-07 17:43:24,466 --[TID: 16.174.15941149994700001]-- [http-nio-1112-exec-1] INFO com.netflix.loadbalancer.BaseLoadBalancer 192 - Client: queenOA-jpa instantiated a LoadBalancer: DynamicServerListLoadBalancer:{NFLoadBalancer:name=queenOA-jpa,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:null 2020-07-07 17:43:24,487 --[TID: 16.174.15941149994700001]-- [http-nio-1112-exec-1] INFO com.netflix.loadbalancer.DynamicServerListLoadBalancer 214 - Using serverListUpdater PollingServerListUpdater 2020-07-07 17:43:24,496 --[TID: 16.174.15941149994700001]-- [http-nio-1112-exec-1] INFO com.netflix.loadbalancer.DynamicServerListLoadBalancer 150 - DynamicServerListLoadBalancer for client queenOA-jpa initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=queenOA-jpa,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:org.springframework.cloud.netflix.ribbon.eureka.DomainExtractingServerList@6be31718 2020-07-07 17:43:24,930 --[TID: 16.174.15941149994700001]-- [http-nio-1112-exec-1] ERROR com.queen.oa.api.web.PublicController 2154 - goto /public/findMemberListByNameNew: