一、预警方案
Prometheus+Grafana 实现邮件报警的方案主要有以下几种:
方案一:使用 Prometheus 的 Alertmanager 组件
Prometheus 的 Alertmanager 组件是一个专门用于告警的组件,它可以将告警发送到多种通知渠道,包括邮件。要使用 Alertmanager 实现邮件报警,需要在 Alertmanager 的配置文件中添加邮件通知配置。以下是邮件通知配置的示例:
receivers: - name: "mail" email_configs: - to: "user@example.com" from: "alertmanager@example.com" server: "smtp.example.com" port: 25 username: "user" password: "password"
在 Grafana 中,可以创建告警规则,并将告警规则与 Alertmanager 的邮件通知配置关联起来。
方案二:使用 Grafana 的 Alert Notification
Grafana 的 Alert Notification 功能可以让您直接在 Grafana 中配置邮件通知。
要使用 Grafana 的 Alert Notification 实现邮件报警,需要在 Grafana 的配置文件中添加邮件通知配置。以下是邮件通知配置的示例:
alerts: - name: "CPU usage is too high" alert_rules: - alert_rule_id: "1" notification_channels: - name: "mail" email_configs: - to: "user@example.com" from: "alertmanager@example.com" server: "smtp.example.com" port: 25 username: "user" password: "password"
在 Grafana 中,可以创建告警规则,并将告警规则与 Grafana 的邮件通知配置关联起来。
方案三:使用第三方告警组件
除了 Prometheus 和 Grafana 自带的告警功能外,还可以使用第三方告警组件来实现邮件报警。例如,OneAlert 是一个开源的告警组件,它可以将告警发送到多种通知渠道,包括邮件。要使用 OneAlert 实现邮件报警,需要在 OneAlert 的配置文件中添加邮件通知配置。以下是邮件通知配置的示例:
alerts: - name: "CPU usage is too high" alert_rules: - alert_rule_id: "1" notification_channels: - name: "mail" email_configs: - to: "user@example.com" from: "alertmanager@example.com" server: "smtp.example.com" port: 25 username: "user" password: "password"
在 Grafana 中,可以创建告警规则,并将告警规则与 OneAlert 的邮件通知配置关联起来。
二、搭建预警
环境准备
以下是本文所需的环境:
- 一台运行 Linux 的服务器(建议使用 CentOS 或 Ubuntu)
- Docker环境
- Prometheus
- Node Exporter
Grafana安装
修改配置文件
vim /data/grafana/grafana.ini
复制以下内容
###SMTP / Emailing ### [smtp] enabled = true host = smtp.exmail.qq.com:465 #这里换成自己的smtp及端口 user = xx.qq.com #这里换成自己的邮箱地址 password = xx #这里换成自己的邮箱密码 ;cert_file = ;key_file = ;skip_verify = false from_address = xx.qq.com #一般与上面的邮箱地址一致 from_name = Grafana ehlo_identity = startTLS_policy = [emails] welcome_email_on_sign_up = true templates_pattern = emails/*.html, emails/*.txt content_types = text/html
除了注明要改的其它的都可以不变,然后启动docker
docker run -d --name=grafana -p 3000:3000 \ -v /data/grafana/grafana.ini:/etc/grafana/grafana.ini \ grafana/grafana
基本设置
打开grafana的控制台:http://xx.xx.xx.xx:3000/ 用户名、密码:admin/admin
添加图片注释,不超过 140 字(可选)
设置数据源,如果设置过的可以跳过。
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
保存就可以了,接下来我们来设置预警。
添加图片注释,不超过 140 字(可选)
Contact points(创建告警渠道)
进入后选择Contact points->New contact points
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
设置完成后可以试试邮件是否设置成功,点击Test
添加图片注释,不超过 140 字(可选)
弹出的窗体点击
添加图片注释,不超过 140 字(可选)
这样就说明邮件设置成功,如果有异常这里也会红色的提示。
添加图片注释,不超过 140 字(可选)
这是收到的测试邮件效果
添加图片注释,不超过 140 字(可选)
没问题后就保存
添加图片注释,不超过 140 字(可选)
Notification policies(创建告警通道匹配规则)
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
Alert rules(配置告警策略)
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
Folder下拉没有东西,可以随便填个名称:
添加图片注释,不超过 140 字(可选)
填写时会在下拉列表出现Create:的效果
添加图片注释,不超过 140 字(可选)
在这栏
添加图片注释,不超过 140 字(可选)
的最下面会多出一条
添加图片注释,不超过 140 字(可选)
我们选择一个变量,并设置它的预警规则
添加图片注释,不超过 140 字(可选)
当最近的F值(可用内存值)高于3时就会预警。
添加图片注释,不超过 140 字(可选)
条件就是上面的G表达式不用变,下面的时间可以调整一下,每30秒进行一次规则检查,如果符合报警条件,延迟5分钟进行报警。
Add details for your alert,这里填写一个信息就可以保存。
添加图片注释,不超过 140 字(可选)
等待 30s - 1min之后,观察是否可以接收到告警
添加图片注释,不超过 140 字(可选)
如果发现这些按钮的地址都是localhost想修改的话
添加图片注释,不超过 140 字(可选)
可以vim grafana.ini增加
[server] protocol = http http_port = 3000 domain = 10.9.2.50
然后docker restart grafana