SkyWalking-1--SkyWalking是什么?

发布于:2025-08-08 ⋅ 阅读:(19) ⋅ 点赞:(0)

Apache SkyWalking是一个开源的应用性能监控(APM)和可观测性分析平台(Observability Platform),专为云原生和微服务架构设计。集分布式追踪、服务网格监控、度量聚合、日志收集、可视化、告警等功能于一体。它帮助开发者和运维团队实时掌握系统的运行状态,快速定位问题根源,优化性能,并提供业务洞察。

1、核心功能

1、分布式追踪(Distributed Tracing)

  • 端到端追踪:为每个请求生成唯一的Trace ID,记录请求在微服务间的流转路径和耗时,形成完整的调用链(Call Chain)。
  • 调用链分析:通过Span(调用片段)记录每个服务的处理时间、调用关系和错误信息,帮助识别性能瓶颈。
  • 示例场景:在电商系统中,用户下单请求经过订单服务、用户服务、库存服务、支付服务等,SkyWalking可以清晰展示每个服务的耗时及调用顺序。

2、性能监控(APM)

  • 实时指标采集:监控服务的响应时间、吞吐量、错误率、CPU/内存使用率等关键指标。
  • 服务依赖分析:通过拓扑图展示服务间的依赖关系,识别关键服务和潜在故障点。
  • 多维度分析:支持按服务、实例、端点(Endpoint)等维度分析性能数据。

3、服务网格监控

  • Istio/Envoy集成:捕获服务网格中的通信细节(如请求延迟、流量分布、错误率),帮助理解微服务间的交互行为。
  • Sidecar模式支持:通过Sidecar代理(如Envoy)采集遥测数据,无需修改业务代码。

4、日志管理

  • 日志聚合:收集和分析分布式系统中的日志数据,支持日志格式化、字段提取、关联追踪(Trace ID)。
  • 高性能采样:支持多种日志采样策略,减少存储和计算开销。
  • 与追踪联动:在日志中关联Trace ID,可直接跳转到对应的调用链路分析页面。

5、度量聚合与告警

  • 多数据源支持:聚合SkyWalking自身指标、OpenTelemetry、Prometheus、Zabbix等第三方指标。如响应时间、吞吐量、成功率等。
  • 灵活告警规则:基于自定义阈值(如响应时间> 1s、错误率> 5%)触发告警,支持邮件、钉钉、Webhook等通知方式。
  • 告警收敛:支持告警分组、抑制规则,避免告警风暴。

6、可视化仪表盘

  • 拓扑图:实时展示服务依赖关系和流量分布
  • 调用链追踪:通过时间轴展示请求的完整生命周期。
  • 性能图表:以图表形式展示响应时间、吞吐量、错误率等指标
  • 自定义视图:支持按业务需求定制仪表盘,方便不同团队聚焦关键指标。

2、架构设计

SkyWalking的架构分为四层,模块化设计使其灵活可扩展。
架构示例图:
在这里插入图片描述

1、Agent(探针)

  • 功能:注入到应用中,采集链路数据(Trace、Metrics、Logs)
  • 支持语言:Java、Go、Python、Node.js、.NET Core、PHP、C++等。
  • 无侵入性:通过Java Agent技术实现无代码修改的监控,适用于Spring Cloud、Dubbo、gRPC等主流框架。

2、OAP Server(后端服务)

  • 核心功能:
    • 数据分析:接收Agent发送的数据,进行聚合、分析。
    • 存储:将数据写入后端存储(如Elasticsearch、MySQL、H2、TiDB、BanyanDB)。
    • 查询服务:提供REST/gRPC接口供UI查询数据。
  • 模块化设计:支持插件化扩展(如新增数据源、告警渠道)。

3、Storage(存储层)

  • 支持类型:
    • Elasticsearch:适合高吞吐量和复杂查询场景。
    • MySQL/H2:轻量级部署,适合开发和测试环境。
    • BanyanDB:SkyWalking自研的时序数据库,专为遥测数据优化。
    • TiDB:支持水平扩展的分布式数据库。

4、UI(前端展示)

  • 功能:
    • 提供Web界面,展示拓扑图、调用链、性能指标
    • 支持自定义仪表盘、告警规则配置。
    • 默认端口:8080,登录账号admin/admin。

示例UI图:
拓扑图:
在这里插入图片描述
链路追踪图:
在这里插入图片描述
指标面板图:
在这里插入图片描述

3、核心优势

1、多语言支持

  • 支持Java、Go、Python、Node.js等主流语言的自动探针,覆盖云原生全栈。

2、轻量高效

  • 无需依赖大数据平台(如Hadoop),资源消耗低,适合中小规模部署。

3、模块化架构

  • 各组件(Agent、OAP、Storage、UI)可独立部署和扩展。

4、云原生友好

  • 支持Kubernetes、Docker、Istio等云原生技术,提供服务网格监控。

5、扩展性强

  • 支持OpenTelemetry、Prometheus等标准协议,可与现有监控系统集成。

6、自研数据库BanyanDB

  • 专为遥测数据设计,支持高吞吐写入和高效查询。

4、典型使用场景

1、微服务调用链追踪

  • 快速定位请求延迟或失败的根本原因(如某个服务响应超时)。
  • 示例:用户登录请求经过认证服务、用户服务、数据库,SkyWalking可显示每个环节的耗时。

2、性能瓶颈分析

  • 通过对服务调用链的分析,识别出性能瓶颈所在的服务或接口。同时可通过拓扑图和指标图表,识别高负载服务或资源瓶颈(如数据库慢查询)。

3、服务依赖分析

  • 可视化服务间依赖关系,发现循环依赖或单点故障风险。

4、日志与追踪联动

  • 在日志中点击Trace ID,直接跳转到对应的调用链分析页面。

5、告警与故障响应

  • 设置告警规则(如服务错误率>5%),通过钉钉或邮件通知运维团队。

6、云原生监控

  • 监控Kubernetes集群中的容器状态、Pod资源使用情况。

5、部署与使用

1、单机部署

步骤:
(1)、安装Elasticsearch(可选,用于存储数据)。
(2)、下载SkyWalking
官网获取安装包。
(3)、配置

  • 修改application.yml配置存储类型(如storage: elasticsearch)。
  • 修改webapp.yml配置前端端口。
    (4)、启动服务
    Bash示例:
# 启动SkyWalking OAP和Web UI
/path/to/skywalking/bin/startup.sh

(5)、访问UI:浏览器打开http://localhost:8080,默认账号admin/admin。

2、微服务集成

  • Java应用:
    • 将SkyWalking Agent挂载到JVM启动参数:
      Bash示例:
java -javaagent:/path/to/skywalking-agent.jar -Dskywalking.agent.service_name=order-service -jar order-service.jar
  • 非Java应用:
    • 使用OpenTelemetry或SkyWalking提供的SDK(如Go、Python客户端)。

6、与其他工具对比

在这里插入图片描述

7、最佳实践

1、生产环境部署

  • 使用Elasticsearch作为存储,确保高可用和扩展性
  • 配置告警规则,监控关键服务的延迟和错误率。

2、性能优化

  • 通过调用链分析,优化慢SQL、第三方接口调用
  • 使用拓扑图识别服务依赖瓶颈,减少不必要的调用

3、日志与追踪联动

  • 在日志中记录Trace ID,实现日志与链路追踪的无缝衔接。

4、持续集成

  • 在CI/CD流程中集成SkyWalking,监控新版本发布后的性能变化。

8、总结

Apache SkyWalking是云原生时代不可或缺的观测性工具,通过分布式追踪、性能监控、日志管理、告警等功能,帮助团队全面掌控微服务和云原生系统的运行状态。其多语言支持、轻量高效、模块化设计和自研数据库BanyanDB使其在同类工具中脱颖而出。无论是中小规模的微服务架构,还是大规模云原生集群,SkyWalking都能提供高效的监控和诊断能力。

向阳前行,Dare To Be!!!


网站公告

今日签到

点亮在社区的每一天
去签到