SkyWalking:云原生时代监控利器

说个云也原生 2024-03-18 17:41:19
1 SkyWalking 简介

SkyWalking 是一个APM(应用程序性能监视器)系统,专门为微服务,云原生和基于容器(Docker,Kubernetes,Mesos)的体系结构而设计。SkyWalking的功能包括对Cloud Native体系结构中的分布式系统的监视,跟踪,诊断功能。核心功能如下:

服务、服务实例、端点指标分析根本原因分析,在运行时分析代码服务拓扑图分析服务、服务实例和端点依赖关系分析检测慢速服务和端点性能优化分布式跟踪和上下文传播数据库访问指标,检测慢速数据库访问语句(包括SQL语句)报警浏览器性能监控详情可访问Github地址:https://github.com/apache/skywalking,本文将介绍如何在k8s环境中部署使用SkyWalking 8.3.0版本,实操,不要错过哦!SkyWalking部署架构

k8s SkyWalking的基础架构如下图所示

架构图

采用aliyun elasticsearch作为skywalking的存储源,skywalking server跟ui都部署在k8s上,skywalking agent客户端采用k8s sidecar 边车模式跟微服务共享容器空间。

3.3 SkyWalking使用

当浏览器登录sw.domain.com的时候,可以看到SkyWalking UI已经准备完成,只不过现在没有服务接入,所有都是空白的,

数据大盘

登录SkyWalking UI页面,右上角刷新一下,可以显示出新增的java服务,如,

服务

从仪表盘的APM中,可以看到Services Load、Slow Services、Un-Health Service、Slow Endpoints的Top10情况。从拓扑图中,可以看到整个环境中的服务链路调用情况,如,

链路

从追踪中,可以看到服务的链路情况明细,如,

追踪

如果trace链路需要忽略某些路径,如/health,/actuator/prometheus,/prometheus这些监控uri,可以在java k8s配置文件中的env.SW_AGENT_TRACE_IGNORE_PATH配置,如需通配路径,参考trace.ignore_path=/your/path/1/**,/your/path/2/**,具体可以查阅https://github.com/apache/skywalking/blob/8.3.0/docs-hotfix/docs/en/setup/service-agent/java-agent/agent-optional-plugins/trace-ignore-plugin.md性能剖析和日志,目前没有使用到,暂不介绍,等后续更新吧···从告警中,可以看到当前服务的链路告警详情,告警规则可以在alarm-settings.yml里配置,告警可以接入WebHook,如Dingtalk Hook,WeChat Hook,Slack Chat Hook,gRPCHook等

详细

rules: service_resp_time_rule: metrics-name: service_resp_time op: ">" threshold: 1000 period: 10 count: 3 silence-period: 60 message: Response time of service {name} is more than 1000ms in 3 minutes of last 10 minutes.

如此配置中,service_resp_time_rule的告警规则为过去3分钟内服务平均响应时间超过1秒就告警,沉默时间为60分钟。告警规则主要有以下几点:

Rule name。在告警信息中显示的唯一名称。必须以_rule结尾。指定的规则(与规则名不同,这里是对应的告警中的规则map,具体可查看 https://github.com/apache/skywalking/blob/master/docs/en/setup/backend/backend-alarm.md#list-of-all-potential-metrics-name,其中一些常见的,endpoint_percent_rule——端点相应半分比告警,service_percent_rule——服务相应百分比告警)Metrics name。也是 OAL 脚本中的度量名。只支持long,double和int类型。详情见所有可能的度量名称列表.Include names。使用本规则告警的服务列表。比如服务名,端点名。Threshold。阈值,与metrics-name和下面的比较符号相匹配OP。操作符, 支持 >, <, =。欢迎贡献所有的操作符。如 metrics-name: endpoint_percent, threshold: 75,op: < ,表示如果相应时长小于平均75%则发送告警Period.。多久告警规则需要被核实一下。这是一个时间窗口,与后端部署环境时间相匹配。Count。在一个Period窗口中,如果values超过Threshold值(按op),达到Count值,需要发送警报。Silence period。在时间N中触发报警后,在TN -> TN + period这个阶段不告警。默认情况下,它和Period一样,这意味着相同的告警(在同一个Metrics name拥有相同的Id)在同一个Period内只会触发一次。
0 阅读:0

说个云也原生

简介:感谢大家的关注