一、安装 AlterManager

  • 如果没有安装 Prometheus 以及监控客户端的话,可以看博主前面的文章:Prometheus(普罗米修斯)监控系统

[root@k8s-master01 ~]# wget https://github.com/prometheus/alertmanager/releases/download/v0.24.0/alertmanager-0.24.0.linux-amd64.tar.gz
[root@k8s-master01 ~]# tar xf alertmanager-0.24.0.linux-amd64.tar.gz
[root@k8s-master01 ~]# mv alertmanager-0.24.0.linux-amd64 /usr/local/alertmanager
[root@k8s-master01 ~]# nohup /usr/local/alertmanager/alertmanager &

配置文件说明:

  • 全局配置 global:用于定义一些全局配置;
  • 模板 templates:告警时的通知模板(如果没有配置,将自动使用默认的模板)
  • 告警路由 route:通过标签匹配的方式,确定当前告警应当如何处理;
  • 接收人 receivers:配合告警路由使用,定义了接收人的通信方式;
  • 抑制规则 inhibit_rules:合理设置抑制规则可以减少垃圾告警的产生;
global:[ resolve_timeout: <duration> | default = 5m ][ smtp_from: <tmpl_string> ] [ smtp_smarthost: <string> ] [ smtp_hello: <string> | default = "localhost" ][ smtp_auth_username: <string> ][ smtp_auth_password: <secret> ][ smtp_auth_identity: <string> ][ smtp_auth_secret: <secret> ][ smtp_require_tls: <bool> | default = true ][ wechat_api_url: <string> | default = "https://qyapi.weixin.qq.com/cgi-bin/" ][ wechat_api_secret: <secret> ][ wechat_api_corp_id: <string> ][ http_config: <http_config> ]templates:[ - <filepath> ... ]route: <route>receivers:- <receiver> ...inhibit_rules:[ - <inhibit_rule> ... ]

二、配置邮件告警

1)修改 AlertManager 配置文件

[root@k8s-master01 ~]# cat <<END > /usr/local/alertmanager/alertmanager.yml
global:resolve_timeout: 3msmtp_smarthost: 'smtp.163.com:25'smtp_from:  'ChenZhuang1217@163.com'smtp_auth_username: 'ChenZhuang1217@163.com'smtp_auth_password: '邮件授权码'smtp_hello: '163.com'smtp_require_tls: falseroute:group_by: ['env','instance','type','group','job','alertname']group_wait: 30sgroup_interval: 5mrepeat_interval: 1hreceiver: defaultroutes:- receiver: emailgroup_wait: 10smatch:severity: Errorreceivers:
- name: 'default'email_configs:- to: '2085077346@qq.com'send_resolved: true- name: 'email'email_configs:- to: 'ChenZhuang1217@163.com'send_resolved: true
END

配置说明:

  • resolve_timeout:在定义的时间内,若没有继续产生告警,才会发送恢复消息;
  • smtp_require_tls:是否使用 TLS 协议;
  • group_by:将具有相同属性的告警进行分组聚合;
  • group_wait:发送告警前的等待时间;
  • group_interval:发送告警的时间间隔;
  • repeat_interval:分组内 发送相同告警的时间间隔;
  • receiver:指定的接收器(和 receivers 配置里的名字匹配)
  • routes:子路由,通过 匹配告警规则中的标签,来发送到指定的接收人;
  • send_resolved:是否通知已经解决的告警;

[root@k8s-master01 ~]# /usr/local/alertmanager/amtool check-config alertmanager.yml         # 检查配置
[root@k8s-master01 ~]# curl -X POST http://192.168.1.1:9093/-/reload                       # 加载配置文件

2)修改 Prometheus 配置文件

[root@k8s-master01 ~]# cat <<END > /usr/local/prometheus/prometheus.yml
global:scrape_interval: 15sevaluation_interval: 15salerting:alertmanagers:- static_configs:- targets: ["192.168.1.1:9093"]rule_files:
- "/usr/local/prometheus/rules.yml"scrape_configs:- job_name: "prometheus"static_configs:- targets: ["localhost:9090"]- job_name: "Linux"static_configs:- targets: ["192.168.1.1:9100"]
END

3)编写告警规则

  • alert:告警名称;
  • expr:PromQL 查询语句,查询是否满足告警条件;
  • for:评估等待时间,当条件成立一段时间后,才会发送告警(在此期间处于告警处于 Pending 状态)
  • labels:自定义标签,用户可以通过该标签进行路由匹配、告警展示等功能;
  • annotations:附加信息,只能用于告警展示;
[root@k8s-master01 ~]# cat <<"END" > /usr/local/prometheus/rules.yml
groups:
- name: 主机监控rules:- alert: TargetDownexpr: up{job="Linux"} == 0for: 15slabels:severity: Errorannotations:summary: "{{ $labels.job }} 主机已经超过 15s 未响应"description: "{{ $labels.instance }} 主机宕机"- alert: NodeFilesystemUsageexpr: 100 - (node_filesystem_free_bytes{fstype=~"ext4|xfs"} / node_filesystem_size_bytes{fstype=~"ext4|xfs"} * 100) > 80for: 1mlabels:severity: Warningannotations:Summary: "Instance {{ $labels.instance }}: {{ $labels.mountpoint }} 分区使用率过高"Description: "{{ $labels.instance }}: {{ $labels.mountpotint }} 分组使用大于 80% (当前值: {{ $value }})"
END
  • 上面定义的那些告警规则,其实都是通过 PromQL 语句在 Prometheus 里查询出来的结果。

[root@k8s-master01 ~]# /usr/local/prometheus/promtool check config /usr/local/prometheus/prometheus.yml
[root@k8s-master01 ~]# curl -X POST http://192.168.1.1:9090/-/reload

验证:

1)验证时,我们只需要将 node_exporter 关闭即可。

2)再重新打开 node_exporter

Prometheus Alerts 三种状态:

  • Inactive:正常状态,表示还未产生告警。
  • Pending:等待状态。
  • Firing:告警状态,通过 AlertManager 配置文件中定义的信息,发送给指定的接收者。

三、配置企业微信告警

1)注册企业微信:地址

2)创建应用


3)配置可信 IP(如果不配置可信 IP 的话,将导致无法发送告警消息

[root@k8s-master01 ~]# curl httpbin.org/ip                                  # 获取当前主机的公网 IP

4)查看企业ID


1)修改 AlertManager 配置文件

[root@k8s-master01 ~]# cat <<END > /usr/local/alertmanager/alertmanager.yml
global:resolve_timeout: 3mwechat_api_url: "https://qyapi.weixin.qq.com/cgi-bin/"wechat_api_secret: "Secret"wechat_api_corp_id: "企业微信ID"templates:- '/usr/local/alertmanager/wechat.tmpl'route:group_by: ['env','instance','type','group','job','alertname']group_wait: 30sgroup_interval: 5mrepeat_interval: 1hreceiver: wechatreceivers:
- name: 'wechat'wechat_configs:- agent_id: "AgentId"to_party: "部门ID"message: '{{ template "wechat.default.message" . }}'send_resolved: true
END
  • 因为上面我们在配置邮件告警的时候,已经将告警规则配置上了,所以下面我们直接配置告警模板即可。

2)配置告警模板

[root@k8s-master01 ~]# cat <<"END" > /usr/local/alertmanager/wechat.tmpl
{{ define "wechat.default.message" }}
{{- if gt (len .Alerts.Firing) 0 -}}
{{- range $index, $alert := .Alerts -}}
{{- if eq $index 0 }}
======== 监控报警 ========
告警状态:{{   .Status }}
告警级别:{{ .Labels.severity }}
告警类型:{{ .Labels.alertname }}
故障主机:{{ .Labels.instance }}
告警主题:{{ .Annotations.summary }}
告警详情:{{ .Annotations.description }};
故障时间:{{ .StartsAt.Format "2006-01-02 15:04:05" }}
======== = END = ========
{{- end }}
{{- end }}
{{- end }}{{- if gt (len .Alerts.Resolved) 0 -}}
{{- range $index, $alert := .Alerts -}}
{{- if eq $index 0 }}
======== 异常恢复 ========
告警类型:{{ .Labels.alertname }}
告警状态:{{ .Status }}
告警主题:{{ .Annotations.summary }}
告警详情:{{ .Annotations.description }};
故障时间:{{ .StartsAt.Format "2006-01-02 15:04:05" }}
恢复时间:{{ .EndsAt.Format "2006-01-02 15:04:05" }}
{{- if gt (len $alert.Labels.instance) 0 }}
实例信息:{{ $alert.Labels.instance }}
{{- end }}
======== = END = ========
{{- end }}
{{- end }}
{{- end }}
{{- end }}
END
  • 如果告警时间显示的是 UTC 时区,可以将其配置为 {{ (.StartsAt.Add 28800e9).Format "2006-01-02 15:04:05" }}

3)验证

[root@k8s-master01 ~]# curl -X POST http://192.168.1.1:9093/-/reload

重新打开 node_exporter

使用 Prometheus 实现邮件/企业微信告警相关推荐

  1. Zabbix 系统监控(三)VMware 虚拟平台监控、邮件告警、企业微信告警配置

    Vmware 虚拟平台监控.邮件告警.企业微信告警配置 8 Vmware 虚拟平台监控 阅读 zabbix 官方文档,官方提供了 Vmware 虚拟机监控模板,并对模板进行了解释说明,但未对相应名词做 ...

  2. Prometheus+Grafana监控安装及配置JVM实现企业微信告警

    背景 本人Java开发工程师一枚,主攻后端,需要搭建一套Prometheus+Grafana的监控系统,采用企业微信告警通知.在网上各种查阅资料的同时,发现很多资料都大致相通且不完整,踩坑无数,经过多 ...

  3. prometheus+grafana监控以及企业微信告警

    prometheus+grafana监控以及企业微信告警(单机二进制部署) 一.下载部署包,更改其中两个包名称,放到/data下 1.安装包以及解压步骤 grafana-enterprise-8.4. ...

  4. Prometheus监控(三)—— 钉钉和企业微信告警

    一.prometheus 实现钉钉和企业微信告警 基础流程 1.1 钉钉通知 altermanager基础设置可以参照: https://editor.csdn.net/md/?articleId=1 ...

  5. Zabbix设置邮件告警+企业微信告警

    一.告警流程 首先要创建模板 在模板中创建触发器和监控项 创建监控项 创建触发器 1.1添加报警媒介 1.2声音设置 1.3创建用户 1.4配置动作 为触发器 系统用户登录数大于3 添加动作 1.5配 ...

  6. Zabbix企业微信告警最新版

    2019独角兽企业重金招聘Python工程师标准>>> Zabbix企业微信告警最新版 2017年11月21日 15:38:33 阅读数:1481 Zabbix企业微信告警最新版 最 ...

  7. zabbix 配置企业微信告警群机器人告警

    一.企业微信端配置 1.创建微信群机器人 在需要接收告警信息的企业微信群上右键(注意群里成员至少要3人以上),选择"添加群机器人",设置机器人名称,系统自动生成此机器人的webho ...

  8. Prometheus配合 alertmanager 使用企业微信告警(坑已平!!!)

    部署Prometheus 和 Alertmanager略 安装包部署prometheus+Grafana+node_exporter_争取不加班!的博客-CSDN博客 prometheus监控报警部署 ...

  9. prometheus+alertmanager 企业微信告警

    一.应用安装启动 1.软件准备 alertmanager-0.24.0.linux-amd64.tar.gz blackbox_exporter-0.22.0.linux-amd64.tar.gz n ...

最新文章

  1. java和tornado_TornadoJ
  2. python head 函数_python爬虫中header是什么?怎么用?
  3. uCOS-II中的OS_CPU.h,OS_CPU_A.s,OS_CPU.c
  4. Java类加载的那些事
  5. java try catch陷阱_Java异常处理最佳实践及陷阱防范
  6. WinForm 中 comboBox控件之数据绑定
  7. Java JDK安装和配置
  8. python怎么让输出居中_python格式化输出字符串居中
  9. 老师分身多个教室,教学还有这种神操作?
  10. 连接远程hbase长时间等待问题
  11. 利用Linq对集合元素合并、去重复处理
  12. 【小程序】展示弹窗常见API详解
  13. [已解决]Warning: Solver not found (cplex)
  14. 网络广告投放基础,广告
  15. 量化投资之股票统计套利:基于BP神经网络
  16. python取模10^9+7_【Python爬虫】笨办法学python 习题1-10
  17. 笔记本电脑连接wifi显示无网络访问权限怎么办?
  18. 计算机组成原理-唐朔飞 学习指导与习题解答 第2版
  19. 微信域名防封之使用自定义短域名和短域名服务器-不死鸟微信域名防封系统
  20. K-means聚类算法原理及c++实现

热门文章

  1. 一年之内融资两轮、签单数千万,这家公司怎么做到的?
  2. 《人生终要有一场触及灵魂的旅行》 毕淑敏 (又一碗没有心灵鸡胸的心灵鸡汤)
  3. Chrome 83 发布,支持直接读写本地文件!新的跨域策略!
  4. 转:我们在360如何使用Python
  5. php仿天天p图,天天p图怎么样 天天P图拼图及抠图使用教程
  6. [HTML模板]个人作品集网站模板 AALI V1.0 - PERSONAL PORTFOLIO TEMPLATE
  7. 恋人必备之如何表达恋爱情绪
  8. Edsger Dijkstra经典言论 (ZT)
  9. 众人所知,去广告神器:天行广告防火墙!
  10. 去除面部黑色素小妙招_怎么淡斑祛除脸部黑色素 5个小妙招有效淡斑美白