一文搞定关于SkyWalking告警的那些事儿

Apache SkyWalking告警是由一组规则驱动,这些规则定义在config/alarm-settings.yml文件中。

告警规则

告警规则定义了触发告警所考虑的条件。告警规则有两种类型,单独规则和复合规则,复合规则是单独规则的组合。这里重点介绍一下单独规则,单独规则主要有以下几点:


规则名称:在告警信息中显示的唯一名称,必须以_rule结尾。
metrics-name:度量名称,也是OAL脚本中的度量名。默认配置中可以用于告警的度量有:服务,实例,端点,服务关系,实例关系,端点关系。它只支持long,double和int类型。
include-names:包含在此规则之内的实体名称列表。
exclude-names:排除在此规则以外的实体名称列表。
include-names-regex:提供一个正则表达式来包含实体名称。如果同时设置包含名称列表和包含名称的正则表达式,则两个规则都将生效。
exclude-names-regex:提供一个正则表达式来排除实体名称。如果同时设置排除名称列表和排除名称的正则表达式,则两个规则都将生效。
include-labels:包含在此规则之内的标签。
exclude-labels:排除在此规则以外的标签。
include-labels-regex:提供一个正则表达式来包含标签。如果同时设置包含标签列表和包含标签的正则表达式,则两个规则都将生效。
exclude-labels-regex:提供一个正则表达式来排除标签。如果同时设置排除标签列表和排除标签的正则表达式,则两个规则都将生效。
标签的设置必须把数据存储在meter-system中,例如:Prometheus, Micrometer。以上四个标签设置必须实现LabeledValueHolder接口。
threshold:阈值。
对于多个值指标,例如percentile,阈值是一个数组。像value1 value2 value3 value4 value5这样描述。每个值可以作为度量中每个值的阈值。如果不想通过此值或某些值触发警报,则将值设置为 -。例如在percentile中,value1是P50的阈值,value2是P75的阈值,那么-,-,value3, value4, value5的意思是,没有阈值的P50和P75的percentile告警规则。
op:操作符,支持>, >=, <, <=, =。
period:多久告警规则需要被检查一下。这是一个时间窗口,与后端部署环境时间相匹配。
count:在一个周期窗口中,如果按op计算超过阈值的次数达到count,则发送告警。
only-as-condition:true或者false,指定规则是否可以发送告警,或者仅作为复合规则的条件。
silence-period:在时间N中触发报警后,在N -> N + silence-period这段时间内不告警。 默认情况下,它和period一样,这意味着相同的告警(同一个度量名称拥有相同的Id)在同一个周期内只会触发一次。
message:该规则触发时,发送的通知消息。

默认告警规则


过去 3 分钟内服务平均响应时间超过 1 秒
最后2分钟服务成功率低于80%
最近 3 分钟内服务响应时间超过 1s 的百分比
服务实例在过去 2 分钟内平均响应时间超过 1s,并且实例名称与正则表达式匹配
过去 2 分钟内端点平均响应时间超过 1 秒
过去 2 分钟内数据库访问平均响应时间超过 1 秒
过去 2 分钟内端点关系平均响应时间超过 1 秒

hook配置

hook是向外界发送警报信息的一种方式,SkyWalking支持多个相同类型的hook,主要包括
webhook:当告警触发时,被调用的服务端点列表。
gRPCHook:当告警触发时,被调用的远程gRPC方法的主机和端口。
Slack Chat Hook:当告警触发时,被调用的Slack Chat接口。
微信 Hook:当告警触发时,被调用的微信接口。
钉钉 Hook:当告警触发时,被调用的钉钉接口。
飞书 Hook:当告警触发时,被调用的飞书接口。
WeLink  Hook:当告警触发时,被调用的Welink接口。
PagerDuty Hook:当告警触发时,被调用的PagerDuty接口。
Discord:当告警触发时,被调用的PagerDuty接口。

钉钉Hook配置

我们可以按以下方式配置钉钉的 Webhooks ,告警消息将按 Content-Type 为 application/json 通过HTTP的 POST 方式发送。

dingtalkHooks:
  textTemplate: |-
    {
      "msgtype": "text",
      "text": {
        "content": "Apache SkyWalking 告警: \n %s."
      }
    }
  webhooks:
    - url: https://oapi.dingtalk.com/robot/send?access_token=dummy_token
      secret: dummysecret

关于钉钉自定义机器人配置方式,可以参考
https://open.dingtalk.com/document/orgapp/application-types

关于skywalking更加详细的告警配置信息可以参考
https://gitcode.com/apache/skywalking/blob/master/docs/en/setup/backend/backend-alarm.md

我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!

<think>好的,用户想了解SkyWalking告警恢复的配置方法。首先,我需要回顾一下SkyWalking告警机制。根据引用[3],SkyWalking告警规则定义在alarm-settings.yml文件中,其中每个规则都包含触发条件和恢复条件。恢复通常与触发条件相关联,比如当指标回到正常范围时自动恢复。 接下来,用户提到的告警恢复可能需要配置恢复条件。例如,在规则中设置一个持续时间,当指标在指定时间内恢复正常,则触发恢复通知。引用[1]中提到告警持续时间设置为30分钟,这可能意味着恢复需要满足条件持续一段时间。 然后,检查引用[4]中的告警指标,比如服务响应时间、成功率等,恢复配置应该对应这些指标的阈值。例如,当平均响应时间低于100ms时恢复告警。需要确认在alarm-settings.yml中是否支持设置恢复的阈值或条件。 另外,引用[2]提到SkyWalking的部署和存储配置,但用户的问题集中在告警恢复,可能不需要涉及部署部分。不过,存储后端的配置可能影响告警数据的持久化,进而影响恢复检测的时间窗口。 用户可能需要具体的配置示例,比如在规则中添加恢复相关的参数,如recoveryStep和recoveryExpression。同时,需要确保通知方式包含恢复通知,比如在webhooks中处理恢复事件。 最后,综合这些信息,整理出配置步骤和示例,确保用户能正确设置告警恢复,并验证配置是否生效。可能需要提醒用户注意合理设置阈值和持续时间,避免误报或漏报。</think>关于SkyWalking告警恢复的配置方法,以下是具体实现步骤和注意事项: ### 一、告警恢复机制原理 SkyWalking告警恢复机制基于指标状态的持续监测。当触发告警的条件不再满足且**保持正常状态超过指定时间窗口**时,系统会自动标记为恢复状态[^3]。恢复判断采用与触发告警相同的滑动时间窗口算法,确保状态变化的稳定性[^1]。 ### 二、核心配置方法 在`alarm-settings.yml`文件中进行以下配置: ```yaml rules: service_resp_time_rule: metrics-name: service_resp_time # 监控指标名称 threshold: 1000 # 触发阈值(ms) op: ">" # 比较运算符 period: 10 # 检测周期(分钟) count: 2 # 连续触发次数 silence-period: 5 # 静默期(分钟) recovery-step: 3 # 恢复检测周期数 include-names: # 监控服务列表 - serviceA - serviceB webhooks: # 恢复通知配置 - http://alert-system/recovery ``` 关键恢复参数说明: 1. `recovery-step`: 要求指标**连续满足正常状态的时间窗口数**(默认等于触发条件的`count`值) 2. `silence-period`: 相同告警的最小间隔时间,影响恢复通知频率 3. 恢复判定公式:$$ \text{当前值} \leq (\text{阈值} - \text{缓冲区间}) \quad \text{持续} \quad \text{recovery-step} \times \text{period} \text{分钟} $$ ### 三、恢复通知配置 在`webhooks`中需区分告警类型处理: ```yaml webhooks: - http://alert-system/alert?type=trigger - http://alert-system/alert?type=recovery ``` ### 四、验证配置 1. 通过`kubectl exec`进入OAP容器检查配置加载状态 2. 在SkyWalking UI的`Alarm`页面查看历史记录 3. 使用测试工具模拟指标波动,验证恢复触发: ```bash # 生成测试流量 wrk -t4 -c100 -d300s http://service-endpoint ``` ### 五、注意事项 1. 恢复阈值建议设置为触发阈值的80%-90%,避免频繁震荡[^4] 2. 生产环境推荐设置`recovery-step ≥ 2`,防止瞬时抖动 3. 分布式环境下需考虑时钟同步问题 4. 结合日志监控系统实现告警-恢复闭环验证
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试开发Kevin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值