Centos7下安装 prometheus+alertmanager 配置企业微信报警

一、前言

承接上篇文章 Centos7下安装 prometheus+grafana,我们已然对服务器进行了监控,但是只监控不进行报警的监控无疑是用处不大的,今天我们学习部署一下 alertmanager 配置企业微信报警。

二、准备工作

1、安装 alertmanager

1、以下步骤都在 /opt/ 目录下执行

1、wget https://github.com/prometheus/alertmanager/releases/download/v0.22.0-rc.2/alertmanager-0.22.0-rc.2.linux-amd64.tar.gz
2、tar -xf alertmanager-0.22.0-rc.2.linux-amd64.tar.gz
3、mv alertmanager-0.22.0-rc.2.linux-amd64 alertmanager
4、mkdir data
5、vim /usr/lib/systemd/system/alertmanager.service
	[Unit]
	Description=alertmanager
	Documentation=https://github.com/prometheus/alertmanager
	After=network.target
	
	[Service]
	Type=simple
	User=root
	ExecStart=/opt/alertmanager/alertmanager --config.file=/opt/alertmanager/alertmanager.yml --storage.path=/opt/alertmanager/data
	Restart=on-failure
	
	[Install]
	WantedBy=multi-user.target
6、wq && systemctl daemon-reload && systemctl enable alertmanager.service

2、启动 alertmanager.service:systemctl start alertmanager.service

2、创建企业微信监控应用

1、登陆电脑端企业微信后台:https://work.weixin.qq.com,没有的请申请企业微信
2、创建应用管理,如下图:
在这里插入图片描述
3、获取监控应用的 AgentIdSecret
在这里插入图片描述
4、获取 企业微信的 企业ID
在这里插入图片描述
自此准备工作已经完成,接下来让我们实现监控报警。

三、报警的实现

我们知道 Prometheus server 在本地存储收集到的 metrics,并运行已定义好的 alert.rules,记录新的时间序列或者向 Alertmanager 推送警报。

那么我们可知步骤:连接 Alertmanager 服务 -->定义报警rules-->修改Alertmanager 报警推送配置

1、连接 Alertmanager 服务

1、修改配置
vim /opt/prometheus/prometheus.yml
	# Alertmanager configuration
	alerting:
	  alertmanagers:
	  - static_configs:
	    - targets:
	      - 127.0.0.1:9093  # 连接 Alertmanager 服务

2、定义报警rules

1、确定报警文件位置
vim /opt/prometheus/prometheus.yml
	# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
	rule_files:
	  - "rules/*.yml"  # 报警规则文件位置
	  # - "second_rules.yml"
2、定义规则
vim /opt/prometheus/rules/host.yml
groups:
  - name: hostStatsAlert
    rules:
    - alert: InstanceDown
      expr: up == 0
      for: 1m
      annotations:
        summary: "主机:{{ $labels.hostname }},{{ $labels.instance }} 关机"

    - alert: 内存使用率
      for: 1m
      labels:
        severity: warning
      annotations:
        summary: "内存使用率>5%"
        description: "主机:{{ $labels.hostname }},{{ $labels.instance }},当前值:{{ humanize $value }}"

    - alert: CPU使用率
      for: 1m
      labels:
        severity: warning
      annotations:
        summary: "CPU使用率>10%"
        description: "主机:{{ $labels.hostname }},{{  $labels.instance }},当前值:{{ humanize $value }}"

    - alert: 磁盘使用率
      for: 1m
      labels:
        severity: warning
      annotations:
        summary: "磁盘使用率>20%"
        description: "主机:{{ $labels.hostname }},{{ $labels.instance }},当前值:{{ humanize $value }}"

3、修改Alertmanager 报警推送配置

1、修改 alertmanager.yml 文件
vim /opt/alertmanager/alertmanager.yml
global:
  resolve_timeout: 5m # 报警恢复通知

route:
  group_by: ['alertname']
  group_wait: 10s  # 告警等待时间。告警产生后等待10s,如果有同组告警一起发出
  group_interval: 10s  # 两组告警的间隔时间
  repeat_interval: 1m  # 重复告警的间隔时间,减少相同右键的发送频率 此处为测试设置为1分钟 
  receiver: wechat  # 默认接收者
  routes:
  - match:
      severity: critical
    receiver: wechat
  - match_re:
      severity: ^(warning|critical)
    receiver: wechat
receivers:
- name: 'wechat'
  wechat_configs:
  - send_resolved: true
    to_user: '***'  # 接收告警消息的人员企业Id 
    agent_id: ***  # 自建应用的agentId
	api_secret: '***'  # 自建应用的secret
    api_url: 'https://qyapi.weixin.qq.com/cgi-bin/'
	corp_id: '***'  # 企业ID
    
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

4、开启服务,验证报警

systemctl restart alertmanager.service
systemctl restart prometheus.service

企业应用得到如下报警信息。从下图来看并不好看,那么我们可以使用报警模板。
在这里插入图片描述

5、使用模板

1、修改 alertmanager.yml 文件
vim /opt/alertmanager/alertmanager.yml
global:
  resolve_timeout: 5m

# 添加报警模板文件
templates:
- '/opt/alertmanager/template/*.tmpl'
2、创建报警模板文件
vim /opt/alertmanager/template/wechat.tmpl
{{ define "wechat.default.message" }}
{{ range .Alerts }}
========监控报警==========
告警状态:{{   .Status }}
告警级别:{{ .Labels.severity }}
告警类型:{{ .Labels.alertname }}
告警应用:{{ .Annotations.summary }}
告警主机:{{ .Labels.instance }}
告警详情:{{ .Annotations.description }}
触发阀值:{{ .Annotations.value }}
告警时间:{{ .StartsAt.Format "2021-05-21 15:04:05" }}
========end============= {{ end }} {{ end }}

6、重启服务、验证报警模板

systemctl restart alertmanager.service
systemctl restart prometheus.service

在这里插入图片描述

四、总结

总体来看并不是特别难,简单记录一下,有问题欢迎指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值