分享免费的编程资源和教程

网站首页 > 技术教程 正文

分布式调用链监控,SkyWalking入门介绍

goqiw 2024-09-18 15:10:31 技术教程 10 ℃ 0 评论
坚持原创,共同进步!请关注我,后续分享更精彩!

概述

SkyWalking是Apache开源的一款APM(application performance monitor)工具。该工具具有分布式系统的性能监控、调用链路跟踪、故障诊断等能力。

核心特性:

  • 服务、服务实例、端点指标分析;
  • 运行时root cause分析;
  • 服务拓扑图分析;
  • 服务、服务实例、端点依赖分析;
  • 慢服务、端点检测;
  • 性能优化分析;
  • 分布式trace跟踪和context跨进程传播;
  • 数据库指标分析,慢sql检测;
  • 预警提醒;
  • 浏览器端性能监控;
  • 基础设施指标(vm虚拟机、网络、磁盘等)监控;

架构

上图是skywalking的逻辑架构,支持多种探针/代理和多平台语言sdk。

  • Java, .NET Core, NodeJS, PHP, and Python auto-instrument agents.
  • Go and C++ SDKs.
  • LUA agent especially for Nginx, OpenResty and Apache APISIX.
  • Browser agent.
  • Service Mesh Observability. Control panel and data panel.
  • Metrics system, including Prometheus, OpenTelemetry, Spring Sleuth(Micrometer), Zabbix.
  • Logs.
  • Zipkin v1/v2 trace.(No Analysis)

系统架构是client-server模型,工作流程如下:

  1. client监控端(代理/探针) 收集数据,通过grpc协议上报到backend server端;
  2. backend端分析处理client上报过来的数据,保存到持久层(支持H2/mysql/es/InfluxDB/PostgreSQL/TiDB);
  3. web UI呈现监控数据和统计分析结果。

安装

本文以java应用监控为例,介绍skywalking 的服务安装。

服务端安装

通过下面地址,选择对应程序版本。这里以apache-skywalking-apm-es7-8.5.0.tar.gz为例。

https://skywalking.apache.org/downloads/

下载完成,解压文件到某个目录。

apache-skywalking-apm-bin-es7下主要目录介绍:

  • agent:代理工具。agent/skywalking-agent.jar是默认java代理程序,在后面监控应用启动参数中会使用。skywalking-agent.jar使用java instrument机制实现应用的无侵入监控。其他语言,如go、nodejs代理需参考官网自行下载。
  • bin:skywalking服务端执行脚本。
  • config:skywalking服务端的配置文件。
  • webapp:skywalking web UI程序,springboot实现。

执行bin/startup.bat脚本(Linux下bin/startup.sh),该程序会同时启动skywalking的backend和web UI两个程序。

  • backend默认以H2内存数据库作为存储介质。
  • backend默认监听0.0.0.0/11800 为gRPC APIs,监听0.0.0.0/12800为http rest APIs。
  • web UI默认监听8080为界面访问端口,请求127.0.0.1/12800向backend执行GraphQL查询。

服务器启动成功,请求http://localhost:8080/地址访问web界面。

客户端监控

skywalking使用java instrument机制,在vm虚拟机层通过动态拦截来实现监控服务及端点信息的数据上报。所以被监控的项目系统无需代码改造,只要在系统启动时添加相关agent参数即可。这里以一个springboot项目app.jar作为测试。执行以下命令,启动程序。

java \
  -javaagent:d:\working\workspace\opensource\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar \
  -Dskywalking.agent.service_name=consumer \
  -Dskywalking.collector.backend_service=127.0.0.1:11800 -jar app.jar

参数说明:

  • javaagent:指定skywalking代理/探针client程序,这里是服务端安装下载包根目录agent/skywalking-agent.jar文件路径。
  • skywalking.agent.service_name:被监控的应用服务名称。
  • skywalking.collector.backend_service:数据上报backend端地址。

应用启动成功,访问任意一个api。

刷新skywalking web ui,点击头部 仪表盘-APM菜单。将会呈现对应的应用监控数据。

点击 '拓扑图' 菜单,显示请求对应的应用拓扑调用关系图。

skywalking web UI中追踪、性能剖析、日志、告警等功能请参考官方文档,自行探索。

附录

https://skywalking.apache.org/docs/
https://skywalking.apache.org/docs/main/v8.5.0/readme/
https://skywalking.apache.org/docs/main/v8.5.0/en/setup/service-agent/java-agent/readme/

小结

本文对skywalking分布式链路调用监控系统进行了入门介绍,包含了skywalking的核心特性,系统架构,服务端安装,java客户端集成和简单web UI界面功能使用。

最后,希望本文对大家有所帮助和参考,若有其他建议,欢迎留言讨论。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表