国产开源APM,适用于分布式系统的应用程序性能监视工具,特别是为微服务,云原生和基于容器(Docker,K8s,Mesos)的体系结构而设计的.

Skywalking
公司介绍:
产品详情
Skywalking是Apache软件基金会旗下的开源分布式系统应用性能监控(APM)与可观测性平台,专注于为云原生、微服务、容器化等复杂架构提供全链路追踪、多维度指标监控、日志整合分析的一体化解决方案。其核心目标是帮助开发与运维团队快速定位分布式系统中的性能瓶颈与故障点,提升系统的稳定性、可靠性与用户体验,同时降低运维与排查成本。
一、核心定位与整体架构
Skywalking的核心理念是"以应用为中心"的可观测性,通过自动或手动的方式采集分布式系统中的追踪、指标与日志数据,经过分析与聚合后,提供统一的可视化视图,帮助用户全面理解系统的运行状态。其架构设计遵循高扩展性、高可用性与低侵入性原则,支持从中小规模到超大规模的系统监控需求。
Skywalking的逻辑架构主要分为以下几层:
- 探针层(Agent Layer):部署在被监控应用内部,负责采集追踪、指标与日志数据,支持多语言与多框架,通过低侵入的方式集成到业务系统中。
- 数据收集层(Data Collection Layer):接收来自探针层的数据,支持多种传输协议(如gRPC、HTTP、Kafka),并可集群化部署以应对高吞吐场景。
- 分析与聚合层(Analysis & Aggregation Layer):即OAP(Observability Analysis Platform)Server,负责对收集到的数据进行清洗、分析、聚合与存储,支持自定义指标计算与扩展插件。
- 存储层(Storage Layer):存储分析后的追踪、指标与日志数据,支持多种分布式存储后端(如Elasticsearch、MySQL、TiDB),确保数据的可靠性与查询性能。
- 可视化层(Visualization Layer):提供Web UI界面,展示系统的拓扑图、仪表盘、调用链详情、日志查询与告警信息,支持用户自定义视图。
- 扩展层(Extension Layer):包括告警系统、第三方工具集成(如Prometheus、Grafana)、API网关等,扩展平台的功能边界。
二、核心功能模块详解
1. 探针层(Agent)
探针是Skywalking与业务系统交互的入口,负责采集系统运行时的追踪、指标与日志数据,其设计目标是低侵入性、高兼容性与高性能。
- 多语言支持:覆盖主流开发语言,包括Java、Python、Go、Node.js、.NET、PHP、Ruby等。每种语言的探针都针对该语言的特性进行了优化,例如Java探针采用ByteBuddy字节码增强技术,无需修改业务代码;Go探针支持自动注入与SDK两种方式,平衡侵入性与灵活性。
- 多框架与中间件兼容:支持对数百种主流框架与中间件的监控,包括Spring Boot、Spring Cloud、Dubbo、gRPC、Thrift、MyBatis、Hibernate、Redis、MongoDB、MySQL、PostgreSQL、Kafka、RabbitMQ等。例如,对于Spring Boot应用,探针可自动采集HTTP请求、数据库操作、缓存访问等关键链路数据。
- 自动Instrumentation:大部分场景下,用户只需添加探针依赖(如Java的jar包)或设置启动参数(如Go的环境变量),即可启用监控,无需修改任何业务代码。这种自动注入方式极大降低了集成成本,适合快速部署。
- 手动Instrumentation:针对特殊业务场景,探针提供SDK供用户自定义追踪点。例如,用户可以在业务方法中添加追踪注解,或通过API创建自定义Span,记录业务逻辑的执行耗时与状态。
- 动态配置更新:支持通过OAP Server远程调整探针参数,如采样率、日志级别、数据上报频率等,无需重启应用即可生效。这种动态配置能力适合大规模集群的运维管理。
- 低性能开销:探针经过严格的性能优化,确保对业务系统的影响最小。例如,Java探针的CPU开销通常低于5%,内存开销低于100MB,适合高并发场景的长期运行。
2. 数据收集层
数据收集层是连接探针与OAP Server的桥梁,负责接收、转发与预处理探针采集的数据,支持高吞吐与高可用的场景需求。
- 多传输协议支持:默认采用gRPC协议进行数据传输,具有高效、低延迟的特点;同时支持HTTP协议,兼容老版本探针或简单场景;还支持Kafka等消息队列作为异步传输通道,应对高并发数据上报场景,避免数据丢失。
- 集群化部署:收集器支持集群化部署,通过负载均衡机制分发数据,提高系统的吞吐量与可用性。例如,多个收集器实例可同时接收探针数据,并将其转发到OAP Server集群。
- 数据预处理:对采集到的数据进行初步清洗与聚合,如过滤无效数据、合并重复请求、计算局部指标等,减少后续OAP Server的处理压力。
- 数据可靠性保障:支持数据重试机制与持久化队列,当OAP Server暂时不可用时,收集器可缓存数据,待服务恢复后重新发送,确保数据不丢失。
3. OAP分析与聚合层
OAP Server是Skywalking的核心分析引擎,负责对收集到的数据进行深度分析、聚合与存储,生成系统的可观测性指标与视图。
- 分布式追踪分析:
- 调用链聚合:将探针采集的多个Span整合成完整的调用链,计算总耗时、错误率、状态等关键信息,并关联相关的指标与日志数据。
- 服务拓扑生成:基于调用链数据自动构建服务之间的依赖关系图,展示调用方向、流量大小与响应时间,帮助用户理解系统的架构与依赖。
- 端点性能分析:对每个服务的端点(如HTTP接口、RPC方法)进行性能统计,包括QPS、平均响应时间、95th/99th分位响应时间、错误率等指标,快速定位慢端点。
- 分布式事务追踪:支持对跨服务事务的追踪,通过全局Trace ID关联不同服务的调用链路,帮助用户理解事务的完整执行流程。
- 多维度指标计算:
- 服务指标:包括服务的QPS、平均响应时间、错误率、实例数、存活状态等,帮助用户了解服务的整体运行情况。
- 实例指标:每个服务实例的CPU使用率、内存使用率、JVM指标(GC次数、堆内存大小、线程数)、磁盘IO、网络IO等,反映实例的资源消耗情况。
- 数据库指标:SQL执行次数、平均耗时、慢SQL统计、错误率、连接池使用率等,帮助用户优化数据库性能。
- 缓存指标:Redis/Memcached的命令执行次数、耗时、命中率、缓存大小等,评估缓存的有效性。
- 消息队列指标:Kafka/RabbitMQ的生产/消费速率、延迟、堆积量、分区数等,监控消息流的健康状态。
- 云原生指标:Kubernetes Pod的CPU/内存使用率、容器状态、Service流量、Istio Sidecar的性能等,适配云原生环境的监控需求。
- 日志整合分析:
- 日志采集:支持通过logback、log4j2等日志框架插件,将Trace ID注入日志中,实现日志与追踪链的关联;同时支持对接Filebeat、Fluentd等日志收集工具,导入外部日志数据。
- 日志查询:提供全文检索功能,支持按关键词、时间范围、服务、实例、Trace ID等维度筛选日志,快速定位问题相关的日志条目。
- 日志与追踪关联:点击日志中的Trace ID,可直接跳转到对应的调用链详情页面,实现从日志到追踪的快速导航,提高故障排查效率。
- 告警规则引擎:
- 多维度告警规则:支持基于服务、实例、端点、指标等维度设置告警规则,例如"服务A的QPS超过1000且错误率大于5%"。
- 灵活的告警条件:支持阈值告警(如响应时间超过2秒)、趋势告警(如QPS在5分钟内增长50%)、异常检测(如错误率突然升高)等多种条件。
- 多样化通知方式:支持邮件、Slack、Webhook、钉钉、企业微信等多种通知渠道,用户可根据需求配置通知方式。
- 告警聚合与抑制:对同一类型的告警进行聚合,避免重复通知;支持告警抑制规则,例如当某个服务实例宕机时,抑制该实例的所有告警,只发送实例宕机的主告警。
- 扩展插件机制:
- 自定义探针插件:用户可通过插件开发框架,编写自己的探针插件,监控特定的框架或中间件。
- 自定义指标计算:通过Observability Analysis Language(OAL)定义自己的指标,OAP Server会自动根据OAL脚本计算指标值。例如,用户可定义"服务A的成功请求数"指标。
- 自定义存储适配器:如果默认的存储后端不满足需求,用户可开发自己的存储适配器,对接第三方存储系统。
4. 存储层
存储层负责持久化OAP Server分析后的追踪、指标与日志数据,支持多种存储后端,适配不同规模与场景的需求。
- 多存储后端支持:
- Elasticsearch:默认推荐的存储后端,适合大规模数据存储与快速查询,支持全文检索与聚合分析,是云原生场景的首选。
- MySQL/TiDB:适合中小规模场景,或者需要与现有关系型数据库整合的情况,TiDB支持分布式存储,可应对较大规模的数据。
- H2:嵌入式数据库,适合本地测试或小规模演示场景,无需额外部署数据库服务。
- InfluxDB:时序数据库,适合存储指标数据,支持高效的时序查询与聚合。
- 存储优化:
- 数据分片:对大表进行分片存储,例如按时间分片,提高查询性能与数据管理效率。
- 数据过期策略:支持自动删除过期数据,例如保留最近7天的追踪数据与最近30天的指标数据,减少存储占用。
- 批量写入:优化数据写入性能,将多个小数据请求合并为批量请求,减少数据库的IO压力。
- 索引优化:针对常用查询场景创建索引,例如Trace ID、服务名称、时间范围等,提高查询速度。
5. 可视化UI层
UI层是用户与Skywalking交互的主要界面,提供直观的可视化视图,帮助用户快速理解系统的运行状态。
- 总览仪表盘:展示整个系统的健康状态,包括服务数量、实例数量、总QPS、平均响应时间、错误率等关键指标,帮助用户快速把握系统的整体运行情况。
- 服务拓扑图:自动生成服务之间的依赖关系图,支持按服务、实例、端点层级展示,可缩放、拖拽,直观呈现系统的架构与调用关系。点击节点可查看该服务的详细指标与调用链数据。
- 调用链详情页面:展示完整的调用链,每个Span的耗时、状态、参数、异常信息等。支持按耗时排序,快速定位慢Span;同时展示Span的上下文信息,如HTTP请求头、数据库SQL语句、缓存命令等,帮助用户分析问题根源。
- 服务仪表盘:每个服务的专属仪表盘,包括QPS趋势、响应时间分布、错误率趋势、实例状态等指标,支持自定义时间范围与指标展示方式。
- 日志查询界面:提供搜索框与筛选条件,支持全文检索与多维度筛选,展示日志的时间、服务、实例、内容等信息,支持分页与导出功能。
- 告警面板:展示当前活跃的告警与历史告警记录,按告警级别(紧急、重要、警告)分类,支持按服务、时间范围筛选。点击告警可查看详细信息,包括触发条件、指标值、通知状态等。
- 自定义仪表盘:用户可根据自己的需求创建仪表盘,添加所需的指标组件(如折线图、柱状图、饼图),设置组件的数据源与展示方式,满足个性化的监控需求。
6. 扩展层
扩展层丰富了Skywalking的功能边界,支持与第三方工具集成,提供更全面的可观测性解决方案。
- 第三方工具集成:
- Prometheus/Grafana:支持将Skywalking的指标数据导出到Prometheus,或通过Grafana展示Skywalking的指标,整合现有监控体系。
- Alertmanager:支持将Skywalking的告警信息发送到Alertmanager,利用其强大的告警管理与通知功能。
- Kubernetes/Istio:深度集成Kubernetes,支持自动发现Pod与Service;集成Istio,支持服务网格的流量监控与追踪。
- Jaeger/Zipkin:支持导入Jaeger或Zipkin的追踪数据,兼容现有分布式追踪系统。
- API网关:提供RESTful API与GraphQL API,支持用户通过编程方式访问Skywalking的数据,例如获取服务指标、调用链详情等,便于集成到自定义的运维系统中。
- 多租户支持:支持多租户隔离,不同租户的数据与视图相互独立,适合SaaS平台或大型企业的多团队使用场景。
三、技术特点与优势
Skywalking作为开源可观测性平台的领导者,具有以下核心技术特点与优势:
- 云原生与微服务友好:深度支持Kubernetes、Istio、Service Mesh等云原生技术栈,自动适配容器化、Serverless等场景,是云原生应用监控的理想选择。
- 低侵入性:通过自动探针技术,无需修改业务代码即可实现监控,降低集成成本与风险;同时支持手动SDK扩展,满足特殊场景需求。
- 一体化可观测性:整合追踪、指标、日志三大可观测性支柱,提供统一的视图与关联查询能力,从指标异常到追踪链再到日志,快速定位问题根源。
- 高扩展性:插件机制支持自定义探针、指标、存储适配器,兼容数百种框架与中间件;同时支持与第三方工具集成,扩展平台的功能边界。
- 高性能与高可用:OAP Server支持集群化部署,负载均衡;数据收集层支持异步队列,应对高吞吐场景;存储层采用分布式数据库,确保数据可靠性与查询性能。
- 开源生态丰富:作为Apache顶级项目,拥有活跃的社区与开发者生态,持续更新迭代;支持多种开源框架与中间件,覆盖大部分主流技术栈。
- 跨平台支持:支持Windows、Linux、macOS等操作系统,适配不同的部署环境;同时支持公有云、私有云与混合云场景,满足多样化的云部署需求。
四、典型应用场景
Skywalking适用于多种场景,帮助企业解决分布式系统的监控与故障排查问题:
- 微服务性能监控与故障排查:监控微服务之间的调用关系与性能指标,快速发现慢调用、错误调用;通过调用链详情定位故障点,例如某个服务的响应慢或数据库查询耗时过长;利用服务拓扑图了解系统依赖,评估变更影响。
- 云原生环境观测:监控Kubernetes集群中的应用状态,包括Pod、Deployment、Service等;观测Istio服务网格中的流量管理,如路由规则是否生效、Sidecar的性能;监控容器的资源使用率,避免资源瓶颈。
- 分布式系统容量规划:分析服务的QPS趋势、响应时间分布,预测未来的容量需求;识别系统中的瓶颈资源,如CPU、内存、数据库连接池等;基于历史数据进行容量规划,确保系统能够应对峰值流量。
- 用户体验分析:监控用户请求的端到端响应时间,了解用户体验;分析用户请求的分布,如哪些地区的用户响应时间较长;识别影响用户体验的关键因素,如某个API接口的性能问题。
- 全链路压测:在压测过程中,监控系统的性能指标,如QPS、响应时间、错误率;通过调用链分析压测中的瓶颈点,优化系统性能;评估系统的最大承载能力,为上线做准备。
- 日志集中管理与分析:将分散在各个服务中的日志集中收集,统一管理;通过日志与追踪的关联,快速定位问题根源;利用日志分析发现系统中的潜在问题,如异常日志的出现频率。
- 多团队协作与多租户管理:支持多租户隔离,不同团队的数据与视图相互独立;提供统一的监控平台,促进开发、测试、运维团队之间的协作,提高问题解决效率。
五、总结
Skywalking作为开源分布式系统的可观测性平台,以其低侵入性、高扩展性、一体化可观测性能力,成为云原生与微服务场景下的首选监控工具。它帮助企业快速定位分布式系统中的性能瓶颈与故障点,提升系统的稳定性与可靠性,降低运维与排查成本。无论是中小规模的微服务架构,还是大规模的云原生集群,Skywalking都能提供全面的监控与观测支持,助力企业数字化转型中的系统运维与优化。
点击链接,了解更多产品详情:
登录后查看
https://skywalking.apache.org/" rel="noopener noreferrer" target="_blank" style="color: rgb(230, 0, 0, null, null, null, null, null, 9, null, 0, 0, null, 0, null, 0, null, 0, 0, null, 0);">https://skywalking.apache.org/

案例介绍
版权/专利


.png)
.png)










.png)

.png)
.png)
.png)

