From cade83f075c010522b84f7e2dc9116d36cb8a436 Mon Sep 17 00:00:00 2001 From: ning1875 <907974064@qq.com> Date: Mon, 26 Jul 2021 17:36:32 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0debug=E6=97=A5=E5=BF=97=20(#7?= =?UTF-8?q?43)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 1. notify.py 支持安装channel反射发送 2. 支持钉钉群发送 3. 生成告警模板信息 * 1. notify.py 支持安装channel反射发送 2. 支持钉钉群发送 3. 增加二开说明 * 1. notify.py 用户创建一个虚拟的用户保存上述im群 的机器人token信息 user的contacts map中 * 1. notify.py alerts目录改为原来的 * 1. notify.py dingtalk send continue匹配 * 1. push型告警支持多条件 任意一个触发就触发 * 1. prometheus查询接口 tag-keys tag-values支持 params为空的情况 * 1. prometheus查询接口 ident匹配全部改为精确匹配 2. tagKey 提示改为tag_key * 1. prometheus查询接口 支持instance_query 对外暴露 * 1. prometheus instance_query改名为instant-query 2. page group中去掉数据查询相关path * 1. prometheus range_query 时间戳改为秒级 2. 查询支持传入分辨率参数 * 1. 新增jmx_exporter内置大盘 * 1. 新增blackbox_exporter内置大盘 2. 新增blackbox_exporter内置告警策略 * 1. 添加一些debug帮助定位恢复的告警在db event中删除的过程 --- alert/consume.go | 1 + judge/last_event.go | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/alert/consume.go b/alert/consume.go index 8d87e30f..4aa3b42c 100644 --- a/alert/consume.go +++ b/alert/consume.go @@ -153,6 +153,7 @@ func genNotifyUserIDs(alertRule *models.AlertRule) []int64 { // 如果是告警,就存库,如果是恢复,就从未恢复的告警表里删除 func persist(event *models.AlertEvent) { if event.IsRecov() { + logger.Debugf("[event.Recovery.db.DelByHashId]: delete recovery event:%+v", event) err := event.DelByHashId() if err != nil { logger.Warningf("event_consume: delete recovery event err:%v, event:%+v", err, event) diff --git a/judge/last_event.go b/judge/last_event.go index 31d496d4..98ba554a 100644 --- a/judge/last_event.go +++ b/judge/last_event.go @@ -45,13 +45,14 @@ func (s *SafeEventMap) DeleteOrSendRecovery(promql string, toKeepKeys map[string continue } if ev.ReadableExpression == promql { - logger.Debugf("[to_del][ev.IsRecovery:%+v][ev.LastSend:%+v]", ev.IsRecovery, ev.LastSend) + logger.Debugf("[to_del][ev.IsRecovery:%+v][ev.LastSend:%+v][promql:%v]", ev.IsRecovery, ev.LastSend, promql) delete(s.M, k) now := time.Now().Unix() // promql 没查询到结果,需要将告警标记为已恢复并发送 // 同时需要满足 已经发送过触发信息,并且时间差满足 大于AlertDuration // 为了避免 发送告警后 一个点 断点了就立即发送恢复信息的case if ev.IsAlert() && ev.LastSend && now-ev.TriggerTime > ev.AlertDuration { + logger.Debugf("[prom.alert.MarkRecov][promql:%v][ev.RuleName:%v]", promql, ev.RuleName) ev.MarkRecov() EventQueue.PushFront(ev) } -- GitLab