【prometheus+alertmanager+自定义告警管理】

系列文章目录

第一章 生产环境部署prometheus+grafana+kafka+redis+nginx+node+postgres



前言

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

猜你喜欢

转载自blog.csdn.net/qq_44637753/article/details/126717153