当前位置: 首页 > news >正文

SkyWalking-1--SkyWalking是什么?

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!!!

http://www.xdnf.cn/news/1255249.html

相关文章:

  • 快速搭建开源网页编辑器(vue+TinyMCE)
  • 【RabbitMQ面试精讲 Day 13】HAProxy与负载均衡配置
  • 深度学习的视觉惯性里程计(VIO)算法优化实践
  • 七、Linux Shell 与脚本基础
  • C语言memmove函数详解:安全高效的内存复制利器
  • 使用Spring Boot + Angular构建安全的登录注册系统
  • 自动化办公革命:3小时完成8小时工作量
  • 每日算法刷题Day58:8.7:leetcode 单调栈5道题,用时2h
  • Python 基础详解:数据类型(Data Types)—— 程序的“数据基石”
  • 超高车辆如何影响城市立交隧道安全?预警系统如何应对?
  • 鸿蒙网络编程系列61-仓颉版基于TCP实现最简单的HTTP服务器
  • 计算机网络:固定网络位长度子网划分flsm和可变长子网掩码划分vlsm的区别
  • 【C++】哈希表原理与实现详解
  • 代码随想录day58图论8
  • Mysql数据仓库备份脚本
  • Android视图状态以及重绘
  • 快速开发实践
  • 内网穿透原理和部署教程
  • 【Kubernetes】部署 kube-bench 实现 K8s 最佳实践
  • tcpdump问题记录
  • Linux下动态库链接的详细过程
  • 【数据结构初阶】--排序(五)--计数排序,排序算法复杂度对比和稳定性分析
  • Python Socket 脚本深度解析与开发指南
  • MySQL梳理四:事务日志机制和多版本并发控制(MVCC)
  • SpringMvc的原理深度剖析及源码解读
  • 前端页面直接生成PDF下载文件
  • “物联网+职业本科”:VR虚拟仿真实训室的发展前景
  • 物联网架构全解析:华为“1+2+1”与格行随身WiFi,技术如何定义未来生活?
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的微商产品经营策略研究
  • 技术优势铸就行业标杆:物联网边缘计算网关凭何引领智能变革?