一、预警方案
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的控制台:xx.xx.xx.xx:3000/ 用户名、密码:admin/admin
设置数据源,如果设置过的可以跳过。
保存就可以了,接下来我们来设置预警。
Contact points(创建告警渠道)
进入后选择Contact points->New contact points
设置完成后可以试试邮件是否设置成功,点击Test
弹出的窗体点击
这样就说明邮件设置成功,如果有异常这里也会红色的提示。
这是收到的测试邮件效果
没问题后就保存
Notification policies(创建告警通道匹配规则)
Alert rules(配置告警策略)
Folder下拉没有东西,可以随便填个名称:
填写时会在下拉列表出现Create:的效果
在这栏的最下面会多出一条
我们选择一个变量,并设置它的预警规则
当最近的F值(可用内存值)高于3时就会预警。
条件就是上面的G表达式不用变,下面的时间可以调整一下,每30秒进行一次规则检查,如果符合报警条件,延迟5分钟进行报警。
Add details for your alert,这里填写一个信息就可以保存。
等待 30s - 1min之后,观察是否可以接收到告警
如果发现这些按钮的地址都是localhost想修改的话
可以vim grafana.ini增加
[server]
protocol = http
http_port = 3000
domain = 10.9.2.50
然后docker restart grafana