SkyWalking 告警规则配置
介绍
SkyWalking的告警系统是其可观测性功能的核心部分,允许您定义规则来监控应用性能指标,并在满足特定条件时触发告警。通过配置告警规则,您可以及时发现潜在问题,比如响应时间过长或错误率过高,从而快速响应。
告警规则基于指标表达式和触发条件,支持多种通知方式(如Webhook、Slack、邮件等)。本章将详细介绍如何配置这些规则。
告警规则基础
告警规则文件通常位于SkyWalking的配置目录中(如 config/alarm-settings.yml
)。一个完整的告警规则包含以下部分:
- 规则名称:唯一标识符。
- 指标表达式:基于SkyWalking的指标语法(如
service_resp_time > 1000
)。 - 触发条件:持续多久触发告警(如
period: 10
表示10分钟内持续满足条件)。 - 告警级别(可选):如
CRITICAL
、WARNING
。 - 通知方式:配置接收告警的渠道。
提示
SkyWalking的指标表达式支持多种内置函数(如 avg
、percentile
),可灵活组合。
配置示例
以下是一个典型的告警规则配置(alarm-settings.yml
):
yaml
rules:
service_resp_time_rule:
metrics-name: service_resp_time
op: ">"
threshold: 1000
period: 10
count: 3
silence-period: 5
message: 服务 {name} 的平均响应时间超过1秒(当前值:{value}ms)
service_error_rate_rule:
metrics-name: service_error_rate
op: ">"
threshold: 0.1
period: 5
message: 服务 {name} 的错误率超过10%(当前值:{value})
字段说明:
metrics-name
:监控的指标名称(如service_resp_time
)。op
:比较运算符(>
、<
、=
)。threshold
:阈值。period
:评估周期(分钟)。count
:触发告警前需满足条件的次数。silence-period
:告警静默期(分钟),避免重复通知。
实际案例
案例1:监控慢查询
假设需要监控某个数据库服务的慢查询(响应时间 > 2秒):
yaml
rules:
slow_db_query_rule:
metrics-name: service_resp_time
op: ">"
threshold: 2000
period: 15
tags:
service: "mysql-service"
message: 数据库服务 {name} 出现慢查询(当前值:{value}ms)
案例2:高错误率告警
当服务的HTTP错误率超过5%时触发:
yaml
rules:
high_error_rate_rule:
metrics-name: service_error_rate
op: ">"
threshold: 0.05
period: 5
tags:
service: "payment-service"
message: 支付服务 {name} 错误率异常(当前值:{value}%)
通知配置
告警通知可通过Webhook发送到外部系统(如钉钉或企业微信):
yaml
webhooks:
- url: "https://your-webhook-url"
secret: "your-secret-key"
备注
SkyWalking还支持邮件、Slack等通知方式。详细配置参考官方文档。
调试与验证
- 日志检查:SkyWalking OAP日志(
logs/oap.log
)会记录告警触发事件。 - 模拟测试:通过压测工具生成异常指标,验证告警是否触发。
- Dashboard:在SkyWalking UI的「告警」选项卡查看历史记录。
总结
- 告警规则通过
alarm-settings.yml
文件配置。 - 核心字段包括指标表达式、阈值和触发条件。
- 支持多通知渠道(Webhook、邮件等)。
- 实际场景中需结合业务需求调整阈值和静默期。
下一步
- 练习:尝试为您的服务配置一个内存使用率告警规则。
- 扩展阅读: