跳到主要内容

SkyWalking 告警规则配置

介绍

SkyWalking的告警系统是其可观测性功能的核心部分,允许您定义规则来监控应用性能指标,并在满足特定条件时触发告警。通过配置告警规则,您可以及时发现潜在问题,比如响应时间过长或错误率过高,从而快速响应。

告警规则基于指标表达式触发条件,支持多种通知方式(如Webhook、Slack、邮件等)。本章将详细介绍如何配置这些规则。


告警规则基础

告警规则文件通常位于SkyWalking的配置目录中(如 config/alarm-settings.yml)。一个完整的告警规则包含以下部分:

  1. 规则名称:唯一标识符。
  2. 指标表达式:基于SkyWalking的指标语法(如 service_resp_time > 1000)。
  3. 触发条件:持续多久触发告警(如 period: 10 表示10分钟内持续满足条件)。
  4. 告警级别(可选):如 CRITICALWARNING
  5. 通知方式:配置接收告警的渠道。
提示

SkyWalking的指标表达式支持多种内置函数(如 avgpercentile),可灵活组合。


配置示例

以下是一个典型的告警规则配置(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等通知方式。详细配置参考官方文档


调试与验证

  1. 日志检查:SkyWalking OAP日志(logs/oap.log)会记录告警触发事件。
  2. 模拟测试:通过压测工具生成异常指标,验证告警是否触发。
  3. Dashboard:在SkyWalking UI的「告警」选项卡查看历史记录。

总结

  • 告警规则通过 alarm-settings.yml 文件配置。
  • 核心字段包括指标表达式、阈值和触发条件。
  • 支持多通知渠道(Webhook、邮件等)。
  • 实际场景中需结合业务需求调整阈值和静默期。

下一步

  1. 练习:尝试为您的服务配置一个内存使用率告警规则。
  2. 扩展阅读