工作日志
今天是8月16日,星期一,线上办公第🔟天,隐隐约约感觉要解封啦,😙
任务清单
今天的任务只有一个主题——深入研究alertmanager的配置
任务记录
深入研究alertmanager的配置
研究到哪就写到哪吧,如果公司没有分配给我新的工作,那这周基本都在这上面了。
今天看了很多的文章,有官方文档也有大佬们写的博客,无外乎就在研究两个问题,一个是路由配置,一个是报警时间相关的问题
1⃣️:路由配置
配置目的:
满足多元化的监控报警要求,比如说区块链方面的报警传给前端的同事,服务器性能方面的报警则要传给运维工作人员(是的,就是我🤠)
怎么配置:
下面是alertmanager.yml文件具体内容:
global:resolve_timeout: 5mroute:group_by: ['alert'] group_wait: 5s group_interval: 5m repeat_interval: 10m receiver: 'default' routes: - receiver: 'blockchain_Alert'match:project: blockchain - receiver: 'performance_Alert'match: project: performancereceivers:
- name: 'default' webhook_configs: - url: 'http://xx.xx...'- name: 'performance_Alert' webhook_configs:- url: 'http://xx.xx...'- url: 'http://xx.xx...'- name: 'blockchain_Alert' webhook_configs:- url: 'http://xx.xx...'
在alertmanager的路由配置中,一般是由一个根路由(root route)后接若干个子路由(child root)组成,当然你可以只写一个路由,但考虑到日后监控报警工作的多元化,因此强烈建议设置成多个子路由的形式,方便后面的管理。
为了搭配alertmanager.yml文件的正常运行,所以rules.yml要设置成下面这个样子:
group:
- name: 'alert' rules:- alert: PrometheusTargetMissingexpr: up == 0for: 10slabels:level: mediumproject: performance annotations:description: "A Prometheus target {{$labels.job}} has disappeared. It might be crashed."- alert: BlockchainProblem_Testexpr: delta(substrate_block_height{status="best"}[20s]) >= 2for: 0slabels:level: testproject: blockchain annotations:description: "The change of the block height(best) within 20 seconds is greater than or equal to 2"
这么一路配置下来,就能正常运行报警系统了
2⃣️:报警时机(报警时间)的理解
配置目的:
对alert进行实时准确的报警
具体理解:
一个经典的例子如下所示:
cd prometheus-2.28.1.linux-amd64/ | vim prometheus.yml
global:scrape_interval: 20sevaluation_interval: 1mvim rules.yml
ALERT NODE_LOAD_1MIF node_load1 > 20FOR 1m
那么请问,触发JobMissing警报所用的时间为多少?🤨
是个好问题,一开始我也没有琢磨出来,这也是我一直想知道的
分析这个问题应该从下面的图看起:
结合下面的分析,大家可以慢慢推敲出答案:
- The load of a node constantly changes, but it gets scraped by Prometheus every
scrape_interval
(ie. 20s
) - Alert rules are then evaluated against the scraped metrics every
evaluation_interval
(ie. 1m
) - When an alert rule expression is true (ie.
node_load1 > 20
), the alert switches to pending, in order to honor the FOR
clause - At the next evaluation cycles, if the alert expression is still true, once the
FOR
clause is honored the alert finally switches to firing
and a notification is pushed to the alert manager
公布一下答案:it takes a time between 1m
and 20s + 1m + 1m
.
把原文挂出来分享给大家:Prometheus: understanding the delays on alerting
这还有个中文翻译的版本:多久可以收到prometheus的告警?
总结
通过今天的学习,对alertmanager的配置又有了一个更深入的了解,我的第二个项目又能升级一下啦。
明天继续加油研究,顺便和师哥交流一下今天的进度,继续升级我的项目😄