系列文章目录
第一章 生产环境部署prometheus+grafana+kafka+redis+nginx+node+postgres
prometheus+alertmanager告警管理
前言
alert官方配置说明文档:https://prometheus.io/docs/alerting/latest/configuration/
Prometheus官方下载地址(很丰富):https://prometheus.io/download/
rules基本配置:https://awesome-prometheus-alerts.grep.to/rules
qq邮箱获取授权码帮助:https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
一、根据qq邮箱帮助文档获取授权码
二、部署alertmanager
1.下载、安装alertmanager
mv alertmanager-0.24.0.linux-amd64.tar.gz /u01/
mkdir alertmanager
tar -zxvf alertmanager-0.24.0.linux-amd64.tar.gz -C alertmanager
cd alertmanager/alertmanager-0.24.0.linux-amd64/
配置alert
global: ##全局配置
resolve_timeout: 5m ##当告警的状态由firing变为resolve时,需等待5min,如果报警未更新,则声明该告警已解决。可略微调高阈值避免
smtp_smarthost: 'smtp.qq.com:465'
smtp_from: '134****[email protected]'
smtp_auth_username: '134****[email protected]'
smtp_auth_password: 'zzsijsyobcddbaah' # 这个密码需要生成,非QQ密码
smtp_require_tls: false
route:
group_by: ['service','alertname','cluster'] ##根据label进行分组。--cluster可创建集群
group_wait: 30s ##触发告警后,等待30s发送
group_interval: 5m ##时间间隔
repeat_interval: 1h ##重复发送
receiver: 'email'
receivers: ###告警的处理方式email
- name: 'email'
#webhook_configs: ##告警转发到下列url
# - url: 'http://127.0.0.1:5001/'
email_configs: ##告警转发到对应邮箱地址
- to: '134****[email protected]'
inhibit_rules: ###添加抑制规则
- source_match: ####根据label匹配源告警
severity: 'critical'
target_match: ####根据label匹配目的告警
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
~
重启alert之后就可以test,test是否正常发送邮件了
nohup ./alertmanager --config.file=alertmanager.yml --web.listen-address=:9106 &
2.配置prometheus告警规则alerts-rules。
vim prometheus.yml
rule_files:
- /data/prometheus/rules/*.rules #规则文件存放位置,绝对路径
vim rules/hoststat-alert.rule (详情可参照rules基本配置网站)
###部分可翻译为中文。
# prometheus目标丢失
- alert: PrometheusTargetMissing
expr: up == 0 ##执行语句
for: 0m
labels:
severity: critical
annotations:
summary: prometheus目标丢失 (实例ip:端口 {
{ $labels.instance }})
description: "prometheus目标丢失.\n VALUE = {
{ $value }}\n LABELS = {
{ $labels }}"
配置完成后,检查规则。
./promtool check rules ./rules/hoststat-alert.rules
重启Prometheus,打开alert默认web监听端口“ip:9093/#/alerts"可发现有部分告警。等待30s邮件接收就欧克了
三、自定义告警规则
在 Grafana 中添加 PostgreSQL 死锁监控的 Alert 可以通过以下步骤完成:
1、在 Grafana 中打开“Alerting”面板,并单击“New Alert”。
2、在弹出的“Create Alert”窗口中,为 Alert 命名并选择适当的数据源。
3、在“Alert”选项卡中,选择适当的触发条件,例如当死锁事件数大于某个阈值时触发。
4、在“Notification”选项卡中选择适当的通知渠道,例如电子邮件、Slack 等。
5、在“Queries”选项卡中,为死锁事件的查询编写 PromQL 查询。
以下是一个例子:
sum(pg_locks{database="<your_database>"}) by (mode) > <your_threshold>
这个查询将返回特定数据库中所有锁的数量,并按锁的模式分组。通过将其与某个阈值进行比较,可以触发警报。
为了找到导致死锁的表及其导致死锁的语句,可以使用以下查询:
SELECT
blocked_locks.pid AS blocked_pid,
blocked_activity.query AS blocked_query,
blocking_locks.pid AS blocking_pid,
blocking_activity.query AS blocking_query,
blocked_activity.query_start,
blocking_activity.query_start
FROM
pg_catalog.pg_locks AS blocked_locks
JOIN pg_catalog.pg_stat_activity AS blocked_activity ON blocked_locks.pid = blocked_activity.pid
JOIN pg_catalog.pg_lock