热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

记录我在区块链互联网公司的实习生活Day25

工作记录Day25工作日志任务清单任务记录总结工作日志今天是8月16日,星期一,线上办公第🔟天,隐隐约约感觉要解封啦&#

工作记录Day25

  • 工作日志
    • 任务清单
    • 任务记录
  • 总结


工作日志

今天是8月16日,星期一,线上办公第🔟天,隐隐约约感觉要解封啦,😙

任务清单

今天的任务只有一个主题——深入研究alertmanager的配置

任务记录

深入研究alertmanager的配置
研究到哪就写到哪吧,如果公司没有分配给我新的工作,那这周基本都在这上面了。
今天看了很多的文章,有官方文档也有大佬们写的博客,无外乎就在研究两个问题,一个是路由配置,一个是报警时间相关的问题

1⃣️:路由配置
配置目的:
满足多元化的监控报警要求,比如说区块链方面的报警传给前端的同事,服务器性能方面的报警则要传给运维工作人员(是的,就是我🤠)

怎么配置:
下面是alertmanager.yml文件具体内容:

global:resolve_timeout: 5m# default is 5mroute:group_by: ['alert'] # 与rules.yml中的group name保持一致,表示 `alert`组中的警告都使用下面的路由发送group_wait: 5s # 发出警报后等待同组警报的时间group_interval: 5m # 告警时间间隔repeat_interval: 10m # 重复发送报警的时间间隔receiver: 'default' # 默认根路由的接受者routes: # 子路由- receiver: 'blockchain_Alert'match:project: blockchain # match匹配rules.yml文件里label定义的project,project为blockchain的警报发往 `blockchain_Alert`接受者- receiver: 'performance_Alert'match: # match匹配,与上面的意思相同project: performancereceivers: # 各项接受者的具体配置,其中决定了警报究竟去哪里
- name: 'default' # 匹配receiver为‘default’的alert通过webhook发送至下面的urlwebhook_configs: - url: 'http://xx.xx...'- name: 'performance_Alert' # 与上面的说明一样,但可以把alert传给两个不同的urlwebhook_configs:- url: 'http://xx.xx...'- url: 'http://xx.xx...'- name: 'blockchain_Alert' # 上同啦webhook_configs:- url: 'http://xx.xx...'# inhibit_rules:
# - source_match:
# severity: 'critical'
# target_match:
# severity: 'warning'
# equal: ['alertname', 'dev', 'instance']

在alertmanager的路由配置中,一般是由一个根路由(root route)后接若干个子路由(child root)组成,当然你可以只写一个路由,但考虑到日后监控报警工作的多元化,因此强烈建议设置成多个子路由的形式,方便后面的管理。

为了搭配alertmanager.yml文件的正常运行,所以rules.yml要设置成下面这个样子:

group:
- name: 'alert' # 与alertmanager.yml文件中参数group_by后面的字符串保持一致,同时说明以下两个alert属于同一个组'alert'rules:- alert: PrometheusTargetMissingexpr: up == 0for: 10slabels:level: mediumproject: performance # 此处为文件alertmanager.yml中match的匹配依据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 # 同上,此处为文件alertmanager.yml中match的匹配依据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
# prometheus.yml的配置大致如下global:scrape_interval: 20sevaluation_interval: 1m# -- snip --vim rules.yml
# rules.yml的关键配置如下# 此处语法大家不必较真,只是个例子
ALERT NODE_LOAD_1MIF node_load1 > 20FOR 1m
# -- snip --

那么请问,触发JobMissing警报所用的时间为多少?🤨
是个好问题,一开始我也没有琢磨出来,这也是我一直想知道的
分析这个问题应该从下面的图看起:
在这里插入图片描述
结合下面的分析,大家可以慢慢推敲出答案:

  1. The load of a node constantly changes, but it gets scraped by Prometheus every scrape_interval (ie. 20s)
  2. Alert rules are then evaluated against the scraped metrics every evaluation_interval (ie. 1m)
  3. When an alert rule expression is true (ie. node_load1 > 20), the alert switches to pending, in order to honor the FOR clause
  4. 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的配置又有了一个更深入的了解,我的第二个项目又能升级一下啦。
明天继续加油研究,顺便和师哥交流一下今天的进度,继续升级我的项目😄


推荐阅读
author-avatar
you_only89
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有