原文网址:SkyWalking--介绍/说明/官网/指南_IT利刃出鞘的博客-CSDN博客
官网官网:Apache SkyWalking
github:https://github.com/apache/skywalking
官网博客:博客 | Apache SkyWalking
官方测试网址:https://github.com/SkyAPMTest/
简介说明
Skywalking是由国内开源爱好者吴晟(原OneAPM工程师,目前在华为)开源并提交到Apache孵化器的产品,它同时吸收了Zipkin/Pinpoint/CAT的设计思路。特点是:支持多种插件,UI功能较强,支持非侵入式埋点。目前使用厂商最多,版本更新较快。
数据存储支持:Elasticsearch、MySQL、H2、TiDB。默认是H2,而且是存到内存。实际我们一般将其存到ES。
SkyWalking的两个服务
SkyWalking启动之后,会启动两个Java服务:Skywalking-Collector、Skywalking-Webapp
- Skywalking-Collector:追踪信息收集器,通过 gRPC/Http 收集客户端的采集信息 ,Http默认端口 12800,gRPC默认端口 11800。
- Skywalking-Webapp:管理平台页面,默认端口 8080
拉取模式和推送模式
Agent(客户端)收集数据并将其推送到后端,再对数据进一步分析,我们称之为“推送”模式。SkyWalking即便使用了推送模式,同时也可进行数据拉取。在最近的8.x的发版本中,SkyWalking支持从已经集成Prometheus的服务中获取终端用户的数据。
性能官方性能测试:https://github.com/SkyAPMTest/Agent-Benchmarks/blob/master/README_zh.md
用例1:高并发量这里一个常见的基于Spring的应用程序,他包含Spring Boot, Spring MVC,模拟的redis客户端,HikariCP连接池(匹配模拟的mysql客户端)。 监控这个应用程序,每个事务,探针会抓取5个span(1 Tomcat, 1 SpringMVC, 2 Jedis, 1 Mysql)。
请注意:我们这里提到了模拟客户端,之所以我们不使用真正的客户端,是因为,如果这样,服务端性能和网络的波动,会造成应用程序的tps不稳定,从而影响测试结果。如:mysql或redis服务器的配置,网络交换机性能,都会影响客户端性能,而这不是我们的测试目的。所以,我们要避免这种干扰因素。
这是一个近乎不可能的高流量应用
我们模拟500并发用户,设置思考时间为10ms。而我们将应用性能设计的十分优秀,每秒能满足5000tps。
可以看到,探针进行监控时,针对一个负荷在200%以上的应用,只提高了10%的CPU负荷。并且我们不需要开启任何采样策略(注:当然skywalking是支持采样的),所以我们使用每秒要将超过5000个trace segment收集并发送到collector上。显然,skywalking探针拥有极高的性能。如大家所知,在一个x86服务器上的单应用实例,不太可能拥有如此之高的吞吐能力,除非,他内部是直接访问类似redis这样的高速缓存。即使如此,探针对tps和响应时间,也不会造成任何影响。
也就是说,在超高吞吐能力的服务器上,使用探针进行监控,也只是会消耗多一点点CPU,并不会影响应用性能。
老实说,一个单实例的应用,正常的tps都在100到1200之间。据我所知,即使是中国强大的电信和电商系统,单实例处理能力,也不过如此。所以,你真的不必担心探针的性能问题。
用例2:低并发量这个应用和用例1类似,但是我们做了一些调整,让他更像真实的应用。如我所说,用例-1只是一种证明极限的方法(后面还有更变态的用例☺)。这次,我们模拟300并发用户,将tps稳定在1000,当然,这也是很高的吞吐量了。CPU消耗会比之前明显降低,仅仅消耗6%。
你可以看到,探针对TPS和响应时间,依然没有影响 。
组件支持其他网址
官方的组件支持测试: https://github.com/SkyAPMTest/agent-integration-test-report
说明
SkyWalking可以支持如下组件的追踪:
- Redisson
- JdkHttp
- Mysql
- Spring-RestTemplate_Annotation_RestAnnotation
- JettyClient_JettyServer
- Vert.x
- Strut2_H2
- PostgreSQL
- Spring-Async
- OKHttp3
- ActiveMQ
- GRPC
- MongoDB
- Light4J
- Elasticsearch
- Httpasyncclient
- RocketMQ
- Httpclient
- Gson
- Jedis
- Feign
- Hystrix
- spring-webflux
- spring-gateway
- Motan
- RESTEasy
- Zookeeper
- Undertow
- Lettuce
- Pulsar
- Skywalking-Header
- Kafka
- Undertow-Routing
- Canal
- solrj
- RabbitMQ
- Dubbox
- Cassandra
- Dubbo
- SpringMVC
- apm-toolkit-trace
- Play
- Servicecomb
- ShardingSphere
- Customize
- jdkCrossThread
- SOFARPC



