Leslie Zhang
Leslie Zhang
如果我不需要软件内置的告警,那么也必须要强依赖与 redis 和 alertmanager 么?这个可以解耦吗?
日志告警的信息能存到 metrics 里,通过 prom 来获取吗? 目前的 metrics: ``` prom_elastic_alert_info prom_elastic_alert_link_redis prom_elastic_alert_query prom_elastic_alert_rule ``` 这几个指标没啥用啊,说明不了我的规则是否触发。如果加一个告警规则是否触发的指标。 ``` # 能把 hit 是的日志内容 message 拿到,然后填充到 label message 中么? # 0 规则没有触发,1 规则触发。 prom_elastic_alert_rule_hit{index="index-01", unique_id="测试告警03",...
**问题:关于时间戳** prom-elastic-alert 里面的查询时间,是 utc 还是 cst ?ES 里面时区是 utc 的。我向 ES 中构造的数据两个时间都用了,但 query 都没有命中。elastialert 我记得是 utc 时间,但它能命中。指定了参数 `--zone=UTC` 还是无法命中。 es dsl query: ``` {"@timestamp": "2024-09-13T08:25:59.050", "message": "test"} {"@timestamp": "2024-09-13T16:25:59.050", "message":...
`/alert/message?key=xxx` 从 redis 里获取的告警信息,然后渲染了告警信息展示页面。 是不是可以通过这个,把告警信息生成为 metrics 便于 prom 抓取。 但是我目前无法命中告警规则,暂时无法预览这个告警页面效果,后面看看为什么无法触发告警。 redis key 里存放了 es 信息和触发告警的文档的 ids: [id1, id2...] 列表,然后遍历这个列表展示在页面上。key 默认 1d 的过期时间。 通过 id 从 es 中查出来的是所有字段,但如果接入 prom,其实就只需要一个 id 中的...
我在 kibana 界面通过 dsl 可以查询到数据,但程序无法命中。 
使用 es v7 能正常触发,es v8 有问题。但官方文档这个 ealsticsearch v7 是兼容 v8 的。 ```go // 在 Elasticsearch 7.x 及更高版本(包括 8.x)中,DocumentType(即文档类型)已经逐步被弃用 // DocumentType: []string{"_doc"}, ``` 注释这个查询条件,重新编译代码后,es v7 和 es v8 都可以通用 go elasitcsearch...
现在需要在触发告警的时候,把这个告警指标推送给 metrics。 应该是加入到 `run.go`,如何从 ES 中获取 message 并将这个 label 写入 metrics? 最简单的是不获取 message 字段,直接复用 rule 指标的 label,只告诉是否触发了告警,具体内容直接去日志中心找。 逻辑: 1,获取 redis key,是否可以直接在 pushAlert() 中,通过 key 到 id 到 es 到 metrics?...
在 `run.go` 的 `runRuleQuery` 里获取到了 hits_num,看下怎么把这个值传递给 metrics `rule_hit`。 ``` # 新指标 prom_elastic_alert_rule_hit # 指标怎么传递的 addQueryMetrics(run.go runRuleQuery) -> collectQueryMetrics(prometheus.go) ```
done!
是否需要把告警命中的 `message` 字段的内容,作为 `rule_hit` 指标的 label 传入,这样告警通知里就能拿到日志内容,而不必再去 kibana 或 prom-elastic-alert 里查看告警日志内容。 获取规则命中列表的第一个 内容(`hits[0].message`)就可以了,其他内容都是重复的,没必要。 但是规则里的 dsl query 查询内容,不一定就是 message 字段。 ```yml # 目前 prom_elastic_alert_rule_hit{uniqeid="xxx", path="xxx", es_address="xxx", index="xxx"} value # 计划 prom_elastic_alert_rule_hit{uniqeid="xxx",...