1、安装配置 Alertmanager

wget https://github.com/prometheus/alertmanager/releases/download/v0.20.0/alertmanager-0.20.0.linux-amd64.tar.gz
tar -zxv -f alertmanager-0.20.0.linux-amd64.tar.gz -C /usr/local
cd /usr/local
mv alertmanager-0.20.0.linux-amd64/ alertmanager

2,创建启动文件

vim /usr/lib/systemd/system/alertmanager.service 

[Unit]
Description=alertmanager
Documentation=https://github.com/prometheus/alertmanager
After=network.target [Service]
Type=simple
User=prometheus
ExecStart=/usr/local/alertmanager/alertmanager --config.file=/usr/local/alertmanager/alert-test.yml --storage.path=/usr/local/alertmanager/data
Restart=on-failure [Install]
WantedBy=multi-user.target

Alertmanager 安装目录下默认有 alertmanager.yml 配置文件,可以创建新的配置文件,在启动时指定即可。

cd /usr/local/alertmanager
vim alert-test.yml
global:
smtp_smarthost: 'smtp.qiye.aliyun.com:25'
smtp_from: 'jump@tongchuangkeji.net'
smtp_auth_username: 'jump@tongchuangkeji.net'
smtp_auth_password: 'xxxx'
smtp_require_tls: false templates:
- '/alertmanager/template/*.tmpl' route:
group_by: ['alertname', 'cluster', 'service']
group_wait: 30s
group_interval: 5m
repeat_interval: 10m
receiver: default-receiver receivers:
- name: 'default-receiver'
email_configs:
- to: 'liqilong@edspay.com'
html: ''
headers: {Subject: "[WARN] 报警邮件 test"}

邮箱一开始使用的是公司的邮箱,结果在后边验证的时候,总是会报错level=error ts=2019-01-26T06:21:59.062483579Z caller=notify.go:332 component=dispatcher msg="Error on notify" err="*smtp.plainAuth failed: unencrypted connection",也在这里看了一些人踩坑的报告,试验了25、465、587端口,发现均无效果,最后改成163邮箱,直接就生效了。

  • smtp_smarthost:是用于发送邮件的邮箱的 SMTP 服务器地址+端口;
  • smtp_auth_password:是发送邮箱的授权码而不是登录密码;
  • smtp_require_tls:不设置的话默认为 true,当为 true 时会有 starttls 错误,为了简单这里设置为 false;
  • templates:指出邮件的模板路径;
  • receivers 下 html 指出邮件内容模板名,这里模板名为 “alert.html”,在模板路径中的某个文件中定义。
  • headers:为邮件标题;

使用阿里云企业邮箱无法发送邮件,报错如下:

Jun 11 13:40:52 worker alertmanager: level=error ts=2020-06-11T05:40:52.638Z caller=notify.go:372 component=dispatcher msg="Error on notify" err="*smtp.plainAuth auth: unencrypted connection" context_err="context deadline exceeded"
Jun 11 13:40:52 worker alertmanager: level=error ts=2020-06-11T05:40:52.638Z caller=dispatch.go:301 component=dispatcher msg="Notify for alerts failed" num_alerts=1 err="*smtp.plainAuth auth: unencrypted connection"

3,配置告警规则

配置 rule.yml。

cd /usr/local/prometheus
vim rule.yml
groups:
- name: alert-rules.yml
rules:
- alert: InstanceStatus # alert 名字
expr: up{job="192.168.75.10"} == 0 # 判断条件,job是指prometheus.yml文件中的job_name
for: 10s # 条件保持 10s 才会发出 alter
labels: # 设置 alert 的标签
severity: "critical"
annotations: # alert 的其他标签,但不用于标识 alert
description: 服务器 已当机超过 20s
summary: 服务器 运行状态

在 prometheus.yml 中指定 rule.yml 的路径

cat prometheus.yml

# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s). # Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
- localhost:9093 # 这里修改为 localhost,# 新增 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
- "/usr/local/prometheus/rule.yml" # 新增 # A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: '192.168.75.11' # metrics_path defaults to '/metrics'
# scheme defaults to 'http'. static_configs:
- targets: ['localhost:9090','localhost:9100'] - job_name: '192.168.75.10'
scrape_interval: 5s
static_configs:
- targets: ['192.168.75.10:9100']

重启 Prometheus 服务:

chown -R prometheus.prometheus /usr/local/prometheus/rule.yml
systemctl restart prometheus

4,编写邮件模板

注意:文件后缀为 tmpl

mkdir -pv /alertmanager/template/ # 路径跟上面的alertmanager.yml 配置文件保持一致
vim /alertmanager/template/alert.tmpl
<table>
<tr><td>报警名</td><td>开始时间</td></tr>
<tr><td></td><td></td></tr>
</table>

注意:启动的时候报错如下:

Jun 11 12:55:44 worker alertmanager: level=error ts=2020-06-11T04:55:44.744Z caller=main.go:236 msg="Unable to create data directory" err="mkdir data/: permission denied"
Jun 11 12:55:44 worker systemd: alertmanager.service: main process exited, code=exited, status=1/FAILURE
Jun 11 12:55:44 worker systemd: Unit alertmanager.service entered failed state.
Jun 11 12:55:44 worker systemd: alertmanager.service failed.
Jun 11 12:55:44 worker systemd: alertmanager.service holdoff time over, scheduling restart.
Jun 11 12:55:44 worker systemd: Stopped alertmanager.

这是因为在新版本中默认情况下存储路径 --storage.path 是相对目录 data/,但是prometheus用户在该路径下没权限创建目录,所以导致启动报错

解决办法:在alertmanager.service文件中指定默认存储路径在当前路径下即可

5,启动 Alertmanager

chown -R prometheus.prometheus /usr/local/alertmanager
systemctl daemon-reload
systemctl start alertmanager.service
systemctl status alertmanager.service
ss -tnl|grep 9093

6,验证效果

此时到管理界面可以看到如下信息:

然后停止192.168.75.10节点上的 node_exporter 服务,然后再看效果。

接着邮箱应该会收到邮件:

2.Prometheus邮件报警配置的更多相关文章

  1. zabbix 邮件报警配置

    zabbxi 邮件告警推送有两种方式: 1.使用zabbix服务端的本地邮箱账号发送,邮件名为:user@hostname.localdomain,user为发送邮件的用户,hostname为zabb ...

  2. Zabbix邮件报警配置

    一.安装sendmail或者postfix yum install sendmail #安装 service sendmail start #启动 chkconfig sendmail on #设置开 ...

  3. zabbix(7)邮件报警配置

    邮件报警可以使用Linux自带邮件服务器(postfix等),也可以使用其他邮件服务器(像腾讯邮箱,126邮箱) 一.使用mail. 1.确定zabbix server是否安装发送邮件的命令mail, ...

  4. CentOS7.3下Zabbix3.5之邮件报警配置

    一.邮件客户端以及脚本相关配置 1.安装sendmail,一般操作系统默认安装了安装 yum install sendmail 启动 service sendmail start 设置开机启动 chk ...

  5. 实战:Zabbix 3.4邮件报警配置

    环境:CentOS 7 + Zabbix 3.4 如果只是监测并不能满足需求,还需要通过邮件的方式对问题进行报警.接下来进行实战操作: 一.安装邮件发送工具 mailx 如果CentOS 有邮件服务, ...

  6. jenkins(5): jenkins邮件报警配置

    参考:  https://blog.csdn.net/u013066244/article/details/78665075 1.  使用 增强版的邮件通知 1.1  安装插件 1.2.  系统配置 ...

  7. Oracle管理监控之使用utl_mail自动邮件报警配置

    --代发邮件存储过程源码如下: CREATE OR REPLACE PROCEDURE send_mail(p_recipient VARCHAR2, -- 邮件接收人                 ...

  8. elasticsearch5之Elastalert 安装使用 配置邮件报警和微信报警

    简介 Elastalert是用python2写的一个报警框架(目前支持python2.6和2.7,不支持3.x),github地址为 https://github.com/Yelp/elastaler ...

  9. zabbix3 设置邮件报警(五)

    Zabbix邮件报警配置 一.安装sendmail或者postfix(安装一种即可) yum install sendmail #安装 service sendmail start #启动 chkco ...

随机推荐

  1. 一文吃透如何部署kubernetes之Dashboard

    kubernetes Dashboard是什么? Dashboard是kubernetes的Web GUI,可用于在kubernetes集群上部署容器化应用,应用排错,管理集群本身及其附加的资源等,它 ...

  2. vite搭建一个vue2的框架

    01-创建一个基础的模板框架 npm init vite@latest  02-安装依赖 npm install npm install vue@2.x vue-template-compiler@2 ...

  3. AtCoder Beginner Contest 249 E - RLE // 动态规划 + 前缀和优化

    传送门:E - RLE (atcoder.jp) 题意: 求满足原长为N且转换后长度严格小于N条件的小写字母组成的字符串的数量,输出时对P取模. 其中,转换规则为,将连续相同的字串替换为"字 ...

  4. 基于yum安装CDH集群

    一.环境准备 准备至少3台设备:CentOS7系统: 如果是在实验环境下,给虚拟机的内存至少4G,根建议1T,数据盘1T,由于是虚拟机,所以根分区和数据盘放心大胆的给:如果是在生产环境则多多益善:我这 ...

  5. Redis系列5:深入分析Cluster 集群模式

    Redis系列1:深刻理解高性能Redis的本质 Redis系列2:数据持久化提高可用性 Redis系列3:高可用之主从架构 Redis系列4:高可用之Sentinel(哨兵模式) 1 背景 前面我们 ...

  6. 论语音社交视频直播平台与 Apache DolphinScheduler 的适配度有多高

    在 Apache DolphinScheduler& Apache ShenYu(Incubating) Meetup 上,YY 直播 软件工程师 袁丙泽 为我们分享了<YY直播基于Ap ...

  7. Unity获取脚本的CustomEditor(自定义编辑)数据

    在此之前,粗略的介绍下 CustomEditor(自定义编辑). Unity对于我们创建的Mono脚本提供了属性面板的展示和修改.默认情况下,Inspector面板中会显示当前脚本类的公开字段(pub ...

  8. IP 地址分类和子网掩码

    IP 地址分类 IP 地址是由 4 组 8 位二进制表示的,格式为:xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx.十进制表示的格式为:xxxx.xxxx.xxxx.xxxx, ...

  9. shiro登录过程

    工作流程: 浏览器将用户名.密码.是否记住登录等信息发送给登录controller , new UsernamePasswordToken()获取token,将用户名.加密后的密码.rememberM ...

  10. P4035 [JSOI2008]球形空间产生器 (向量,高斯消元)

    题面 有一个 n n n 维球,给定 n + 1 n+1 n+1 个在球面上的点,求球心坐标. n ≤ 10 n\leq 10 n≤10 . 题解 好久以前的题了,昨天首 A . n n n 太小了! ...