Skywalking
skywalking是一个apm系统,包含监控,追踪,并拥有故障诊断能力的
分布式
系统
一、Skywalking介绍
1.什么是SkyWalking
Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的产品,它同时吸收了Zipkin /Pinpoint /CAT 的设计思路。特点是:支持多种插件,UI功能较强,支持非侵入式埋点。目前使用厂商最多,版本更新较快。
数据存储支持:Elasticsearch、MySQL、H2、TiDB。默认是H2,而且是存到内存。实际我们一般将其存到ES。
主页:http://skywalking.apache.org/
下载:https://skywalking.apache.org/downloads/
github:https://github.com/apache/skywalking
文档:https://github.com/apache/skywalking/tree/master/docs
配置:https://github.com/apache/skywalking/tree/master/docs/en/setup/backend
2.APM
APM全称Application Performance Management应用性能管理,目的是通过各种探针采集数据,收集关键指标,同时搭配数据呈现以实现对应用程序性能管理和故障管理的系统化解决方案.
Zabbix、Premetheus、open-falcon等监控系统主要关注服务器硬件指标与系统服务运行状态等,而APM系统则更重视程序内部执行过程指标和服务之间链路调用情况的监控,APM更有利于深入代码找到请求响应“慢”的根本问题,与Zabbix之类的监控是互补关系 目前市面上开源的APM系统主要有CAT、Zipkin、Pinpoint、SkyWalking,大都是参考Google的 Dapper
实现的.
3.链路追踪工具对比
链路追踪工具一般要有如下功能:
- 心跳检测(确定应用是否还在运行)
- 记录请求的执行流程、执行时间
- 资源监控(CPU、内存、带宽、磁盘)
- 告警功能(监控执行时间、成功率等通过邮件、钉钉、短信、微信等进行通知)
- 可视化页面
常用的工具有:
Zipkin
Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。
Pinpoint
韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能强大,接入端无代码侵入。
SkyWalking
本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能较强,接入端无代码侵入。目前已加入Apache孵化器。
CAT
大众点评开源的基于编码和配置的调用链分析,应用监控分析,日志采集,监控报警等一系列的监控平台工具。
各维度对比
对比项 | Zipkin | Pinpoint | SkyWalking | Cat |
---|---|---|---|---|
实现方式 | 拦截请求,发送(Http,MQ)数据到Zipkin服务 | Java探针,字节码增强 | Java探针,字节码增强 | 代码埋点(拦截器,注解,过滤器等) |
接入方式 | 基于linkerd或者sleuth方式 | javaagent字节码 | javaagent字节码 | 代码侵入 |
agent到collector协议 | http,MQ | thrift | gRPC | http/tcp |
OpenTracing | 支持 | 不支持 | 支持 | 不支持 |
颗粒度 | 接口级 | 方法级 | 方法级 | 代码级 |
全局调用统计 | 不支持 | 支持 | 支持 | 支持 |
traceid查询 | 支持 | 不支持 | 支持 | 不支持 |
报警 | 不支持 | 支持 | 支持 | 支持 |
JVM监控 | 不支持 | 不支持 | 支持 | 支持 |
UI功能 | 支持 | 支持 | 支持 | 支持 |
数据存储 | ES、MySQL等 | HBase | ES/H2/MySQL | MySQL/HDFS |
性能对比图
4.SkyWalking的功能特性
- 多种监控手段,通过语言探针和Service mesh 获得监控的数据
- 支持多种语言自动探针,包括 Java, .NET Core 和 Node.js
- 轻量高效,无需大数据平台和大量的服务器资源
- 模块化,UI,存储,集群管理都有多种机制可选
- 支持报警,告警
- 优秀的可视化解决方案
二、SkyWalking环境搭建
1.Skywalking结构
先来看看Skywalking的结构图
说明:
- Skywalking agent 和业务系统绑定在一起,负责收集各种监控数据
- Skywalking oapservice负责处理监控数据,比如接受Skywalking agent的监控数据,并且存储在数据库中,接受Skywalking webapp前端的请求,从数据库查询数据,并返回给前端,Skywalking oapservice通常会以集群的方式搭建
- Skywalking webapp ,UI服务,用于可视化展示数据
- 用户持久化监控数据的数据库,可以选用ElasticSearch、MySQL等
2.Skywalking部署
从官网提供的下载地址下载安装文件,我们先通过windows操作来演示下:https://skywalking.apache.org/downloads/
点击对应的下载链接下载即可
启动服务:
启动成功后会启动两个服务,一个是Skywalking-oap-server,一个是Skywalking-web-ui:8080
Skywalking-oap-ser