Prometheus入门2-Prometheus和AlertManager

一.Prometheus:配置获取node_export的JOB

我们可以修改 Prometheus 的配置文件,将服务器加到 scrape_configs 中:

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'server'
    static_configs:
      - targets: ['xx.xx.xx.xx:9100']

增加你要监控的node_export地址

  - job_name: 'node_export_20'
    static_configs:
    - targets: ['10.3.3.20:9100']
  • 修改配置后,需要重启 Prometheus 服务
  • 在 Prometheus Web UI 的 Status -> Targets 中,可以看到新加的服务器

二.Prometheus:整合Prometheus-rule

  1. 编写Prometheus规则文件
# vim /opt/monitor/soft/prometheus-2.13.0.linux-amd64/rule.yml
groups:
- name: alert-rules                               #告警的分组,后续告警优化时,可通过分组做优化配置
  rules:
  - alert: InstanceStatus                        #告警规则名称
    expr: up{job="node_export_6"} == 0    #1是服务正常 ,0服务挂了
    for: 10s                                             #评估等待10s,等待期间报警状态为pending
    labels:                                               #此标签可用于match之后的通知操作
      severity: 'critical'
    annotations:                                      #描述告警信息
      summary: "实例: {{ $labels.instance }} 服务挂了"  
      description: "job: {{ $labels.job }} 服务挂了,请检查服务."
  • 这里的expr需要熟悉PromQL语法
  • severity跟下面的alertmanager模块路由相关
  1. Prometheus配置文件读取规则文件
# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets: ['localhost:19093']

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - "/opt/monitor/soft/prometheus-2.13.0.linux-amd64/rule.yml"
  # - "first_rules.yml"
  # - "second_rules.yml"

其中:

  • targets: ['localhost:19093']写alertmanagers的服务地址
  • rule_files配置对应的规则文件,重新启动Prometheus

三.AlertManager模块告警配置

上面配置好规则,接下来我们需要在alertmanager模块进行配置。

3.1 自定义消息模版

告警通知使用的是默认模版,因为它已经编译到二进制包了,所以我们不需要额外配置。如果我们想自定义模版,这又该如何配置呢?

步骤一: 下载官方默认模版

$ wget https://raw.githubusercontent.com/prometheus/alertmanager/master/template/default.tmpl

步骤二: 根据自己的需求修改模版,主要是下面这一段

其中:node_export.html为自定义,跟后面配置alertmanager.yml要一致。

{{ define "node_export.html" }}
.... // 修改内容
{{ end }}

步骤三: 修改 alertmanger.yml,添加 templates 配置参数

templates:          #默认Alertmanager使用系统自带的默认通知模板 ,用户也可在此自定义模板          
  #- '/opt/monitor/soft/alertmanager-0.19.0.linux-amd64/template/*.tmpl'
  - './template/*.tmpl'

最后保存重新加载配置即可。

步骤四: 创建一个自定义模板文件

样例

{{ define "node_export.html" }}
{{ if gt (len .Alerts.Firing) 0 -}}
Alerts Firing:
<br/>
{{ range .Alerts}}
告警级别: {{ .Labels.severity }}
<br/>
告警类型: {{ .Labels.alertname }}
<br/>
故障主机: {{ .Labels.instance }}
<br/>
告警主题: {{ .Annotations.summary }}
<br/>
告警详情: {{ .Annotations.description }}
<br/>
触发时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }}
{{- end }}
{{- end }}
{{ if gt (len .Alerts.Resolved) 0 -}}
Alerts Resolved:
{{ range .Alerts}}
告警级别: {{ .Labels.severity }}
<br/>
告警类型: {{ .Labels.alertname }}
<br/>
故障主机: {{ .Labels.instance }}
<br/>
告警主题: {{ .Annotations.summary }}
<br/>
触发时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }}
<br/>
恢复时间: {{ .EndsAt.Format "2006-01-02 15:04:05" }}
{{- end }}
{{- end }}
{{- end }}

3.2 配置文件alertmanager.yml路由和email模板引用

下面需要配置文件alertmanager.yml进行配置

  • 配置email地址和引用的模板
receivers:                                  
- name: 'node-export'
  email_configs:             
  - to: 'xxx@xxx.cn'
    send_resolved: false  #告警解除发送恢复通知
    html: '{{ template "node_export.html" . }}'     #应用哪个模板
    headers: { Subject: "node-export服务告警" }   #邮件主题信息 如果不写headers也可以在模板中定义默认加载email.default.subject这个模板

不同报警发送不同的邮箱,每个邮箱的模板都可以自定义。

  • 配置路由
route:                   #顶级路由必须匹配所有报警,因为他要接受所有报警,再分匹配到分支路由上
  group_by: ['alertname']   ##将传入警报分组在一起的标签。例如,cluster=A和alertname=LatencyHigh的多个警报将批处理为单个组。
  group_wait: 30s  #当传入的警报创建新的警报组时,至少等待"30s"发送初始通知。
  group_interval: 5m  #当发送第一个通知时,等待"5m"发送一批新的警报,这些警报开始针对该组触发。 (如果是group_by里的内容为新的如:alertname=1,alertname=2 会马上发送2封邮件, 如果是group_by之外的会等待5m触发一次)
  repeat_interval: 10m #如果警报已成功发送,请等待"4h"重新发送,重复发送邮件的时间间隔
  receiver: 'default-receiver'
  routes:                 #分支路由,可设置不同的匹配规则
  - receiver: 'default-receiver'
    match:              #匹配告警规则的key:value
      severity: 'critical'                
  - receiver: 'node-export'
    match:              #匹配告警规则的key:value
      severity: 'node-export'                

其中的这一段匹配路由

  - receiver: 'node-export'
    match:              #匹配告警规则的key:value
      severity: 'node-export'     
  • 重启alertmanager模块

四.参考资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容

  • 什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(T...
    dreamer_lk阅读 3,482评论 1 2
  • 主机数据收集 主机数据的采集是集群监控的基础;外部模块收集各个主机采集到的数据分析就能对整个集群完成监控和告警等功...
    梅_梅阅读 6,674评论 0 7
  • 简介 Prometheus 是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,由...
    程序员果果阅读 1,657评论 0 9
  • 公司的监控系统有Zabbix和Prometheus+Grafana,对于Prometheus这一块本人不大熟悉。挂...
    super_pcm阅读 849评论 0 0
  • 背景目前阶段,我司主要监控告警系统使用的是 Zabbix,对于基础设施及应用服务状态监控,Zabbix 内建或由社...
    dennyhong阅读 11,845评论 5 21