prometheus安装与使用(四)
一、grafana邮件告警
grafana>4.0版本可以代替prometheus自带的alertmanager使用,本次版本 Version 9.2.4,但是实测邮件告警没有alertmanager好用。大多数情况grafana只是用来查看监控大盘的,而负责报警还是使用alertmanager。
一、grafana9.4配置邮件告警
- 我这里测试使用邮件告警方式很慢,不知道是虚拟机问题还是网络问题
1、先配置grafana发送邮箱
(1) 编辑grafana发件配置文件
vim cat /usr/share/grafana/conf/defaults.ini
#################################### SMTP / Emailing #####################
[smtp]
enabled = true # 这个开启
host = smtp.qq.com:25 # 这里选择发件服务器地址或写成smtp.qq.com:465
user = 1107916963@qq.com # 发件人地址
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
password = fecmtfzctecigcid # 发件人密码
cert_file =
key_file =
skip_verify = false
from_address = 1107916963@qq.com # 发件人地址
from_name = Grafana
ehlo_identity =
startTLS_policy =
[emails]
welcome_email_on_sign_up = false
templates_pattern = emails/*.html, emails/*.txt
content_types = text/html
(2) 重启grafana服务
# systemctl restart grafana-server
2、测试grafana邮件发送
(1) 选择alerting——Contact points——编辑默认报警方式
(2) 填写收件人和发送测试内容——选择Test测试报警功能

3、配置Notification policies报警策略
(1) 直接选择默认策略——编辑
(2)关联步骤2中的邮件报警——其他保持默认——保存
4、配置报警规则
(1) 选择一个报警表盘——会多出一个Alert——创建报警规则(table方式的表盘不支持报警)
(2)增加一个D的报警策略:对B监控设置报警规则,表示平均值>1时出发告警,点击下面run
WHEN avg() OF B is ABOVE 1
(3) 设置检测动作
(4)设置告警描述信息
(5)这里可以这只自定义标签,如果没有自定义标签就直接保存就可以了
(6)之后就时收邮件了

二、alertmanager邮件告警
grafana主要用于监控大盘的查看,而报警是通过alertmanager实现的
alertmanager是一个独立的报警模块,需要独立安装部署。
配置钉钉或微信报警 https://blog.csdn.net/weixin_43266367/article/details/129131147
1、下载安装包并启动alertmanager服务
(1)下载安装并启动
# wget https://github.com/prometheus/alertmanager/releases/download/v0.25.0/alertmanager-0.25.0.linux-amd64.tar.gz
# cat /usr/lib/systemd/system/alertmanager.service
[Unit]
Description=alert-manager for linux server
Documentation=https://prometheus.io/
After=network.target
[Service]
WorkingDirectory=/usr/local/alertmanager/
ExecStart=/usr/local/alertmanager/alertmanager --config.file=/usr/local/alertmanager/alertmanager.yml --storage.path=/usr/local/alertmanager/data/
Restart=on-failure
[Install]
WantedBy=multi-user.target
# systemctl enable alertmanager
# systemctl start alertmanager
# netstat -npult|grep alert
tcp6 0 0 :::9093 :::* LISTEN 9908/alertmanager
tcp6 0 0 :::9094 :::* LISTEN 9908/alertmanager
udp6 0 0 :::9094 :::* 9908/alertmanager
(2)能访问到告警面说明部署正常
http://192.168.1.200:9093

2、修改配置文件并设置报警方式(配置文件中可以有中文注释)
(1) 修改配置文件
# cat /usr/local/alertmanager/alertmanager.yml
global:
resolve_timeout: 5m # 持续5分钟没有收到告警标记就会认为已经发送过了
smtp_from: "1107916963@qq.com" # 配置发件邮箱信息
smtp_smarthost: 'smtp.qq.com:25'
smtp_auth_username: "1107916963@qq.com"
smtp_auth_password: "fecmtfzctecigcid"
smtp_require_tls: false # 禁用TLS传输方式
templates: # 可以不写,使用默认模版
- '/etc/alertmanager/template/*.tmpl' # 指定告警通知时使用的模版,如果不写会使用默认模版
route: # 路由配置:用于判断把告警信息发给谁,路由可以有多个
group_by: ['alertname'] # 定义分组名称,promethues支持告警分组功能:满足规则的报警会被合并到一个通知中
group_wait: 10s # 分组等待时间间隔:在这个时间内收到的告警信息会合并到之前的告警信息中
group_interval: 10s # 定义相同组间发送告警通知的时间间隔
repeat_interval: 30m # 定义报警重复时间间隔
receiver: 'email' # 把告警信息发给哪一个接收者(对应reveivers中的name标签)
routes: # 配置子路由:把特定的报警发送给特定的人或特定的地址比如mail 钉钉 微信
- match:
system: node # 自定义一个标签(对应rule.yml中的labels标签)
receiver: 'qqmail' # 把带有system:node的标签的告警信息发送给qqmail(对应reveivers中的子name标签)
receivers: # 接收者配置
- name: 'email' # 接收者名称(对应receiver标签)
email_configs: # email配置参数,还支持wechat_configs、webhook_configs
- to: "wenqiangit@163.com,xxxxxx@163.com" # 接收者邮箱
send_resolved: true
headers: # 这个不写也可以
subject: "Grafana告警" # 自定义邮件主题信息, 可以只写这一条
from: "Grafana" # 自定义由谁发出的信息
to: "OP" # 自定义要发给谁
- name: 'qqmail' # 接收者名称(对应子路由中的receiver标签)
email_configs:
- to: "1107916963@qq.com"
send_resolved: true
headers:
subject: "Grafana告警"
inhibit_rules: # 抑制配置:防止同一条信息重复发送
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
# systemctl restart alertmanager
3、prometheus关联alertmanager并配置告警规则
(1) 修改prometheus配置文件
# vim /usr/local/prometheus/prometheus.yml
alerting:
alertmanagers:
- static_configs:
- targets: ['192.168.1.200:9093'] # 增加alertmanager地址
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
- "/usr/local/prometheus/rules/rules.yml" # 增加alertmanager的告警规则文件
(2) 创建并配置alertmanager告警规则文件
# mkdir -p /usr/local/prometheus/rules
# vim /usr/local/prometheus/rules/rules.yml
groups:
- name: node_alert-rule1 # 第一个告警规则
rules:
- alert: cpu_alert # 告警名称
expr: 100 - avg(irate(node_cpu_seconds_total{mode="idle"}[1m])) by (instance) * 100 > 5 # 告警语句
for: 1m # 持续1分钟就发邮件告警
labels:
level: warning # 告警级别
system: node # 这里可以自定义标签对应alertmanager.yml中的子路由标签
annotations:
description: "instance: {{ $labels.instance }} , cpu usage is too high ! value: {{ $value }}" # 告警内容
summary: "cpu usage is too high" # 描述信息
- name: node_alert-rule2 # 第二个告警规则
rules:
- alert: 硬盘报警
expr: (node_filesystem_size_bytes{mountpoint="/",device="/dev/sda3"} - node_filesystem_free_bytes{mountpoint="/"})/node_filesystem_size_bytes{mountpoint="/"} * 100 > 70
for: 1m
labels:
level: warning
annotations:
description: "报警服务器: {{ $labels.instance }} ,磁盘空间 {{ $labels.mountpoint }} 已使用: {{ $value }}"
summary: "硬盘使用率太高了"
- name: hostdown # 第三个告警
rules:
- alert: hostsDown
expr: up == 0
for: 1m
annotations:
summary: "主机:{{ $labels.hostname }},{{ $labels.instance }} 关机"
(3) 重启prometheus并查看监控面板
# systemctl restart promethues
正常情况告警规则会处于inactive状态
如果已经触发告警就会处于Pending状态
如果Pending状态已经持续1分钟就会进入Firing状态并发送邮件


三、prometheus备份
1、备份prometheus data目录
2、做快照
# 备份生成snapshot快照,备份的快照默认存放在data/snapshots下
curl -XPOST http://prometheusIP:端口/api/v1/admin/tsdb/snapshot
备份成功返回结果:
{"status":"success","data":{"name":"20191220T012427Z-21e0e532e8ca3423"}}
#还原
利用api方式制作成snapshot后,还原时将snapshot中的文件覆盖到data目录下,重启prometheus即可!
https://www.bboy.app/2020/07/01/prometheus备份迁移/
https://www.bbsmax.com/A/pRdBNZkadn/
更多推荐


所有评论(0)