SkyWalking
外观
Developer(s) | Apache软件基金会 |
---|---|
Initial release | 2015 |
Repository |
|
Written in | Java |
Engine | |
Operating system | 跨平台 |
Type | 应用性能监控(APM) |
License | Apache许可证2.0 |
Website | skywalking |
SkyWalking 是一个开源的分布式系统应用性能监控(APM)工具,由Apache软件基金会孵化并毕业为顶级项目。它主要用于监控、追踪和诊断分布式系统中的性能问题,特别适合微服务架构和云原生环境。
概述[编辑 | 编辑源代码]
SkyWalking 提供了从服务到服务、服务到基础设施的全栈监控能力,支持多种数据收集方式,包括:
- 服务间调用链追踪
- 服务指标监控
- 拓扑图分析
- 日志关联
- 告警功能
系统采用模块化架构设计,主要组件包括:
- 探针(Agent):运行在应用进程中,负责数据收集
- OAP(Observability Analysis Platform):数据处理和分析平台
- UI:可视化展示界面
- 存储:支持多种后端存储如Elasticsearch、MySQL等
核心功能[编辑 | 编辑源代码]
分布式追踪[编辑 | 编辑源代码]
SkyWalking 通过分布式追踪技术,可以记录请求在分布式系统中的完整流转路径,帮助开发者理解系统行为并诊断性能瓶颈。
服务拓扑图[编辑 | 编辑源代码]
自动生成服务间调用关系的拓扑图,直观展示系统架构和依赖关系。
性能指标监控[编辑 | 编辑源代码]
收集并展示各种性能指标,包括:
- 响应时间
- 吞吐量
- 错误率
- JVM/CLR运行时指标
- 数据库访问指标
告警系统[编辑 | 编辑源代码]
支持基于规则的告警配置,当系统出现异常或性能下降时自动触发告警。
架构设计[编辑 | 编辑源代码]
SkyWalking 采用分层架构设计:
探针(Agent)[编辑 | 编辑源代码]
探针以非侵入式方式嵌入到应用中,支持多种语言:
- Java
- .NET Core
- Node.js
- PHP
- Python
- Go
- Lua
OAP服务器[编辑 | 编辑源代码]
OAP(Observability Analysis Platform)是SkyWalking的核心处理引擎,负责:
- 接收探针上报的数据
- 进行流式分析
- 聚合计算
- 持久化存储
存储后端[编辑 | 编辑源代码]
支持多种存储后端:
- Elasticsearch
- MySQL
- TiDB
- H2(仅用于测试)
- InfluxDB
安装与配置[编辑 | 编辑源代码]
快速安装[编辑 | 编辑源代码]
以下是在Linux系统上使用Docker快速部署SkyWalking的示例:
# 拉取SkyWalking Docker镜像
docker pull apache/skywalking-oap-server:9.4.0
docker pull apache/skywalking-ui:9.4.0
# 启动OAP服务器
docker run --name oap -d \
-e SW_STORAGE=elasticsearch \
-e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 \
-p 12800:12800 \
-p 11800:11800 \
apache/skywalking-oap-server:9.4.0
# 启动UI
docker run --name ui -d \
-e SW_OAP_ADDRESS=oap:12800 \
-p 8080:8080 \
apache/skywalking-ui:9.4.0
Java Agent配置[编辑 | 编辑源代码]
在Java应用中启用SkyWalking探针:
# 启动Java应用时添加agent参数
java -javaagent:/path/to/skywalking-agent.jar \
-Dskywalking.agent.service_name=your-service-name \
-Dskywalking.collector.backend_service=oap-server-ip:11800 \
-jar your-application.jar
使用案例[编辑 | 编辑源代码]
微服务性能分析[编辑 | 编辑源代码]
SkyWalking被广泛用于微服务架构的性能监控,可以:
- 识别慢服务
- 分析跨服务调用链
- 定位性能瓶颈
云原生环境监控[编辑 | 编辑源代码]
在Kubernetes环境中,SkyWalking可以与Service Mesh(如Istio)集成,提供更全面的可观测性。
与其他工具对比[编辑 | 编辑源代码]
特性 | SkyWalking | Zipkin | Jaeger | Prometheus |
---|---|---|---|---|
分布式追踪 | ✔ | ✔ | ✔ | ✘ |
指标监控 | ✔ | ✘ | ✘ | ✔ |
拓扑分析 | ✔ | ✘ | ✘ | ✘ |
告警功能 | ✔ | ✘ | ✘ | ✔ |
多语言支持 | 广泛 | 有限 | 有限 | 有限 |
社区与发展[编辑 | 编辑源代码]
SkyWalking是Apache软件基金会的顶级项目,拥有活跃的开源社区。项目定期发布新版本,不断增加新功能和改进性能。