的恢复时间Alertmanager处理Prometheus服务器等客户端应用发送的告警。负责分组、消音、抑制、去重并路由到正确的收件人,如Email、Wechat、Webhook。Prometheus告警处理逻辑问题在prometheus告警系统中,当告警策略正常运行时,如果检测到新的符合告警规则的信息,就会产生告警,发送给alertmanager。如果恢复了,恢复后的信息也会生成并发送到alertmangaer,这是最理想的情况。如果在报警过程中有报警规则的更新,比如发现报警阈值过低,调整了阈值,那么在prometheus的更新过程中,旧的评价信息会被丢弃,而评估将直接使用新的评估规则再次运行。评估过程,如果不再产生告警,则不再产生恢复信息。那会引起问题。以前发送到Alertmanager的旧规则生成的警报将不会收到恢复。总结就是:每个评估周期持续向Alertmanger发送警报。如果有规则更新,直接启动一个新的goroutine进行新的评估,直接抛弃旧的规则和goroutine。Alertmanager的修复逻辑Prometheus评估发送给Alertmanger的触发警报,没有结束时间。[{“标签”:{“alert_class”:“metric”,“alert_rule_id”:“940”,“alert_severity”:“1”,“alert_strategy”:“cwhistle_demo_00”,“alert_strategy_id”:“100”,“alertname”:"Incomingtrafficabnormalalarm","city":"chongqing2","tcs_instance":"10.27.38.145","tcs_product":"clb","tcs_type":"clb_tgw_inner_outer"},"annotations":{"query":"barad_tbr{tcs_type=~\"clb_tgw_inner_outer\",tcs_product=~\"clb\",clb_tgw_inner_outer=~\"10.27.38.145|10.27.38.146\"}<5","value":"0.00"},"state":"firing","activeAt":"2021-01-25T08:31:34.941070644Z","value":"0e+00"}]在Alertmanger中,告警的触发和恢复判断是基于时间的Range实现,Alertmanager中的Alert定义如下,有自己的时间范围。//Alert是Prometheus生态系统中警报的通用表示形式。typeAlertstruct{//用于聚合、匹配和处置的标签值对//调度。这必须至少包含一个“alertname”标签。LabelsLabelSet`json:"labels"`//未定义警报身份的额外键/值信息。AnnotationsLabelSet`json:"annotations"`//此警报的已知时间范围。两端都是可选的。StartsAttime.Time`json:"startsAt,omitempty"`EndsAttime.Time`json:"endsAt,omitempty"`GeneratorURLstring`json:"generatorURL"`}当Alert.EndsAt
