坚持原创,共同进步!请关注我,后续分享更精彩!
概述
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模型,工作流程如下:
- client监控端(代理/探针) 收集数据,通过grpc协议上报到backend server端;
- backend端分析处理client上报过来的数据,保存到持久层(支持H2/mysql/es/InfluxDB/PostgreSQL/TiDB);
- 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界面功能使用。
最后,希望本文对大家有所帮助和参考,若有其他建议,欢迎留言讨论。
本文暂时没有评论,来添加一个吧(●'◡'●)