
SkyWalking通过在`config/alarm-settings.yml`文件中定义告警规则来实现服务的监控告警通知内容分类。以下是告警规则的主要组成部分:
| 组成部分 | 说明 |
| | |
| `Rule name` | 规则名称,必须以`_rule`结尾,前缀可自定义。 |
| `Metrics name` | 度量名称,取值为OAL脚本中的度量名,支持`long`、`double`和`int`类型。 |
| `Include names` | 该规则作用于哪些实体名称,比如服务名、终端名(可选,默认为全部)。 |
| `Exclude names` | 该规则不作用于哪些实体名称,比如服务名、终端名(可选,默认为空)。 |
| `Threshold` | 阈值,用于触发告警的条件。 |
| `OP` | 操作符,目前支持`>`、`<`、`=`。 |
| `Period` | 多久告警规则需要被核实一次,这是一个时间窗口。 |
| `Count` | 在一个`Period`窗口中,如果值超过`Threshold`值(按`op`),达到`Count`值,需要发送警报。 |
| `Silence period` | 在时间`N`中触发报警后,在`TN -> TN + period`这个阶段不告警。默认情况下,它和`Period`一样,这意味着相同的告警(在同一个`Metrics name`拥有相同的`Id`)在同一个`Period`内只会触发一次。 |
| `message` | 告警消息,包含告警的详细信息。 |
SkyWalking支持通过Webhook发送告警通知。当告警触发时,SkyWalking会向配置的Webhook地址发送HTTP POST请求,请求的Content-Type为`application/json`。Webhook发送的字段包含:
| 字段 | 说明 |
| | |
| `scopeId`、`scope` | 所有可用的Scope`org.apache.skywalking.oap.server.core.source.DefaultScopeDefine`。 |
| `name` | 目标Scope的实体名称。 |
| `id0` | Scope实体的ID。 |
| `id1` | 保留字段,目前暂未使用。 |
| `ruleName` | 告警规则名称。 |
| `alarmMessage` | 告警消息内容。 |
| `startTime` | 告警时间,格式为时间戳。 |
| `tags` | `alarm-settings.yml`中配置的tags。 |
以下是一个示例告警规则,用于监控服务的响应时间:
yaml
service_resp_time_rule:
metrics-name: service_resp_time
op: “>
threshold: 1000
period: 10
count: 3
silence-period: 5
message: 服务:{name}
指标:响应时间
详情:至少3次超过1000毫秒(最近10分钟内)
在这个示例中,当服务的响应时间在最近10分钟内超过1000毫秒的次数达到3次时,SkyWalking将触发告警,并发送包含详细信息的通知。
通过这种方式,SkyWalking可以根据不同的告警规则和通知内容分类,实现对服务监控告警的精细化管理和通知。
Lei
April 24, 2025
技术探讨