Docker------prometheus(普罗米修斯)之部署监控及邮件报警(2)

案例环境:(全部关闭防火墙,禁用selinux)

Docker容器:ip

需要安装的组件

Docker:192.168.1.40

nodeExporter                 

Prometheus   server       

Cadvisor   

grafana

alertmanager

 

docker2:192.168.1.50

nodeExporter  

 Cadvisor

docker3:192.168.1.100

nodeExporter  

Cadvisor

基于Docker------prometheus(普罗米修斯)之部署组件及模板(1)的部署环境。在docker1上部署AlertManager报警插件。

配置alertmanager

alertmanager:用来接收prometheus发送的报警信息,并且执行设置好的报警方式,报警内容。

Prometheus的报警方式有好几种方式,像是邮箱、钉钉、微信等。

我这里选择由邮箱来报警。

需要AlertManager的镜像。
[root@docker1 ~]# docker images
prom/alertmanager    latest              30594e96cbe8        3 months ago        53.2MB

先运行一个容器,将配置文件导出到本地。
[root@docker1 ~]# docker run -d --name alertmanager -p 9300:9300 prom/alertmanager

[root@docker1 ~]# docker cp alertmanager:/etc/alertmanager/alertmanager.yml /root
#将容器中的配置文件复制到本地
[root@docker1 ~]# vim alertmanager.yml

修改配置文件:
修改后的配置文件如下:
[root@docker ~]# cat alertmanager.yml 
global:
  resolve_timeout: 5m                     
  smtp_from: '576075690@qq.com'                 ###发送者信息
  smtp_smarthost: 'smtp.qq.com:465'             ###qq邮箱的SMTP服务器地址
  smtp_auth_username: '576075690@qq.com'		###接收者信息
  smtp_auth_password: 'phiujjtmgeflbeef'		###使用qq邮箱生成的授权码
  smtp_require_tls: false
  smtp_hello: 'qq.com'
route:
  group_by: ['alertname']
  group_wait: 5s
  group_interval: 5s
  repeat_interval: 5m
  receiver: 'email'
receivers:
- name: 'email'
  email_configs:
  - to: '576075690@qq.com'					###发送者信息
    send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

AlertManager.yml配置文件:

       global:全局配置,包括报警解决后的超时时间、SMTP相关配置、各种渠道通知的API地址等新消息。

       route:用来设置报警的分发策略。

       receivers:配置告警消息接收者信息。

       inhibit_rules:抑制规则配置,当存在于另一组匹配的警报时,抑制规则将禁用于一组匹配的警报。

删除刚刚运行的容器(alertmanager)。
[root@docker1 ~]# docker rm -f alertmanager 
Alertmanager

重新运行容器:
[root@docker1 ~]# docker run -d --name alertmanager -p 9093:9093 -v /root/alertmanager.yml:/etc/alertmanager/alertmanager.yml prom/alertmanager

Prometheus配置alertmanager报警规则:
[root@docker1 ~]# mkdir -p prometheus/rules
[root@docker1 ~]# cd prometheus/rules/
[root@docker1 rules]# cat node-up.rules 
groups:
- name: node-up
  rules:
  - alert: node-up
    expr: up{job="prometheus"} == 0			#必须与prometheus中配置文件(yml文件)中的  - job_name: 'prometheus' 一样。
    for: 15s
    labels:
      severity: 1
      team: node
    annotations:
      summary: "{{ $labels.instance }} 已停止运行超过 15s!"

具体的规则怎么写,在官网文档上有规则模板:
https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/
配置完报警规则后,编辑prometheus的配置文件(本地挂载的)
[root@docker01 ~]# vim prometheus.yml 
# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - 192.168.1.40:9093		#修改这一行。必须格外注意配置文件的格式,注意缩进。

rule_files:
  - "/usr/local/prometheus/rules/*.rules"			#添加,这是容器内的路径,是我们刚刚定义的报警规则。
  # - "first_rules.yml"
  # - "second_rules.yml"
删除prometheus的容器:
[root@docker01 ~]# docker rm -f prometheus 
prometheus

重新运行prometheus容器:
[root@docker01 ~]# docker run -d -p 9090:9090 --name prometheus --net=host -v /root/prometheus.yml:/etc/prometheus/prometheus.yml -v /root/prometheus/rules/node-up.rules:/usr/local/prometheus/rules/node-up.rules  prom/prometheus

创建监控规则,使用email报警方式。监控服务运行状态,如果服务节点down机状态,则发送邮件。

在网页上验证查询报警规则:

为验证监控报警我们先在docker2服务器上关闭服务,测试一下是否会触发报警:

登录邮箱会收到信息!

Altermanager配置自定义邮件模板

[root@docker01 ~]# cd prometheus/
[root@docker01 prometheus]# mkdir alertmanager-tmpl
[root@docker01 prometheus]# ls
alertmanager-tmpl  rules
[root@docker01 prometheus]# cd alertmanager-tmpl/
[root@docker01 alertmanager-tmpl]# vim email.tmpl
{{ define "email.from" }}576075690@qq.com{{ end }}					#go语言,谷歌开发。
{{ define "email.to" }}576075690@qq.com{{ end }}
{{ define "email.to.html" }}
{{ range .Alerts }}
=========start==========<br>
告警程序: prometheus_alert<br>
告警级别: {{ .Labels.severity }} 级<br>
告警类型: {{ .Labels.alertname }}<br>
故障主机: {{ .Labels.instance }}<br>
告警主题: {{ .Annotations.summary }}<br>
触发时间: {{ .StartsAt.Format "2019-08-04 16:58:15" }} <br>
=========end==========<br>
{{ end }}
{{ end }}

编辑完成后,保存退出,编辑alertmanager配置文件。
[root@docker01 ~]# vim alertmanager.yml 
只添加有注释的:
global:
  resolve_timeout: 5m
  smtp_from: '576075690@qq.com'
  smtp_smarthost: 'smtp.qq.com:465'
  smtp_auth_username: '576075690@qq.com'
  smtp_auth_password: 'kerrsgkynyzbeahh'
  smtp_require_tls: false
  smtp_hello: 'qq.com'
templates:               #添加此行
  - '/etc/alertmanager-tmpl/*.tmpl'     #添加此行		#容器内的路径,需要去挂载一下。
route:
  group_by: ['alertname']
  group_wait: 5s
  group_interval: 5s
  repeat_interval: 5m
  receiver: 'email'
receivers:
- name: 'email'
  email_configs:
  - to: '{{ template "email.to" }}'			#修改,必须和email.tmpl中的{{ define "email.to" }}576075690@qq.com{{ end }} 对应。
    html: '{{ template "email.to.html" . }}'		#修改,必须和email.tmpl中的{{ define "email.to.html" }} 名字对应
    send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

保存退出,将alertmanager容器删除,重新运行。

[root@docker01 ~]# docker rm -f alertmanager 
alertmanager

重新运行alertmanager容器,并挂载模板文件。
[root@docker01 ~]# docker run -d --name alertmanger -p 9093:9093 -v /root/alertmanager.yml:/etc/alertmanager/alertmanager.yml -v /root/prometheus/alertmanager-tmpl:/etc/alertmanager-tmpl prom/alertmanager
7810946fb44e790d453bb6ce7676a2c722766c2d03d9d96f4c1caa5c17efe605

为验证监控报警我们先在docker2服务器上关闭服务,测试一下是否会触发报警:

这样报警信息一目了然。

至此,Prometheus的报警插件AlertManager部署完成。

 

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值