Prometheus告警设置

监控流程

prometheus ----> 触发阈值 ----> 超出持续时间 ----> alertManager ----> 分组|抑制|静默 ---> 媒体类型 ----> 邮件|微信|钉钉

sh 复制代码
分组(group): 将类似性质的警报合并为单个通知,比如网络通知、主机通知、服务通知

静默(silences): 是一种简单的特定时间静音的机制,例如:服务器要升级维护可以先设置这个时间段告警静默

抑制(inhibition):当警报发出后,停止重复发送由此警报引发的其他警报即合并一个故障引起的多个警报时间,可以消除冗余警告

服务器配置信息

系统 IP 服务
Ubuntu22.04 192.168.202.221 Prometheus, grafana, blackbox exporter, node exporter ,k8s master
Ubuntu22.04 192.168.202.222 node exporter , k8s worker, alertmanager
Ubuntu22.04 192.168.202.223 node exporter, k8s worker
Ubuntu22.04 192.168.202.224 node exporter , k8s worker

下载并安装aleretmanager

sh 复制代码
# 下载alertmanager
wget https://github.com/prometheus/alertmanager/releases/download/v0.26.0/alertmanager-0.26.0.linux-amd64.tar.gz

解压alertmanager

sh 复制代码
tar -xf alertmanager-0.26.0.linux-amd64.tar.gz -C /usr/local/

创建软链接

sh 复制代码
ln -s /usr/local/alertmanager-0.26.0.linux-amd64/ /usr/local/alertmanager

创建一个Service文件

sh 复制代码
tee /etc/systemd/system/alertmanager.service <<EOF
[Unit]
Description=Prometheus Server
After=network.target

[Service]
Restart=on-failure
WorkingDirectory=/usr/local/alertmanager
ExecStart=/usr/local/alertmanager/alertmanager

[Install]
WantedBy=multi-user.target
EOF

重载并启动

sh 复制代码
systemctl daemon-reload 
systemctl start alertmanager
systemctl enable alertmanager

修改alertmanager的配置文件

官方配置文档

本示例使用邮箱告警

yaml 复制代码
global:
  smtp_from:    # 发件人邮箱地址
  smtp_smarthost:   # 邮箱smtp地址
  smtp_auth_username:  # 发件人登录的用户名,默认和发件人地址一致
  smtp_auth_passwd:    # 发件人登录密码,有时候是授权码
  smtp_require_tls:    # 是否需要tls协议,默认是true
  
  resolve_timeout:  # 在指定时间内没有产生新的事件就发送恢复通知

配置示例

yaml 复制代码
global:
  smtp_smarthost: 'smtp.qq.com:465' # 发件人邮箱地址
  smtp_from: '[email protected]'  # 邮箱smtp地址
  smtp_auth_username: '[email protected]' # 发件人登录的用户名,默认和发件人地址一致
  smtp_auth_passwordd: 'yjdsdihwqecfdsds'   # 发件人登录密码,有时候是授权码
  smtp_require_tls: false  # 是否需要tls协议,默认是true
  
  resolve_timeout: 5m # 在指定时间内没有产生新的事件就发送恢复通知

route:  # 用来设置报警的分发策略
  group_by: ['alertname'] # 采用哪个标签来作为分组的依据
  group_wait: 30s   # 组警告等待时间,也就是告警产生后等待30s,如果有同组告警一起发出
  group_interval: 2s  # 两组告警的间隔时间
  repeat_interval: 2m  # 重复告警的间隔时间,减少相同邮件的发送频率
  receiver: 'web.hook'  # 设置接收人
receivers:
  - name: 'web.hook'
    # webhook_configs:
    #  - url: 'http://127.0.0.1:5001/'
    email_configs:
      - to: '[email protected]'
inhibit_rules:  # 抑制的规则
  - source_match:  # 源匹配级别,当匹配成功发出通知,但是其他的通知将被抑制
      severity: 'critical'  
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

重启服务

sh 复制代码
systemctl restart alertmanager

查看服务

alertmanager 监听在9093端口

sh 复制代码
root@node2:/usr/local/alertmanager# ss -tunlp | grep 9093
tcp   LISTEN 0      4096                 *:9093             *:*    users:(("alertmanager",pid=131133,fd=8))      

验证报警匹配规则

sh 复制代码
 ./amtool alert --alertmanager.url=http://192.168.202.222:9093
Alertname  Starts At  Summary  State 

在Prometheus配置文件中添加alertmanager的地址

yaml 复制代码
# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
           - 192.168.202.222:9093  # 配置alertmanager地址
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
   - "/usr/local/prometheus/rule.yml"  # 告警规则文件

添加报警规则

在/usr/local/prometheus目录下创建rule.yaml文件,/usr/local/prometheus目录为prometheus解压后的工作目录

yaml 复制代码
#rule.yml
groups:
  - name: pod_rules
    rules:
    - alert: Node  Memery Size
      expr: node_memory_MemFree_bytes > 1
      for: 2m
      labels:
        severity: critical
      annotations:
        description: Pod memory size is less 

检查配置文件

sh 复制代码
root@node1:/usr/local/prometheus# ./promtool check config prometheus.yml 
Checking prometheus.yml
  SUCCESS: 1 rule files found
 SUCCESS: prometheus.yml is valid prometheus config file syntax

Checking rule.yml
  SUCCESS: 1 rules found

重启Prometheus

sh 复制代码
systemctl restart prometheus

查看规则

查看告警

可以看到邮箱里面也收到了告警通知

相关推荐
蒂法就是我2 小时前
详细说说Spring的IOC机制
java·后端·spring
秋野酱2 小时前
基于javaweb的SpringBoot高校图书馆座位预约系统设计与实现(源码+文档+部署讲解)
java·spring boot·后端
HWL56793 小时前
Express项目解决跨域问题
前端·后端·中间件·node.js·express
-曾牛3 小时前
Spring AI 集成 Mistral AI:构建高效多语言对话助手的实战指南
java·人工智能·后端·spring·microsoft·spring ai
shengjk14 小时前
序列化和反序列化:从理论到实践的全方位指南
java·大数据·开发语言·人工智能·后端·ai编程
hie988945 小时前
使用Spring Boot集成Nacos
java·spring boot·后端
源码方舟6 小时前
基于SpringBoot+Vue的房屋租赁管理系统源码包(完整版)开发实战
vue.js·spring boot·后端
景天科技苑6 小时前
【Rust trait特质】如何在Rust中使用trait特质,全面解析与应用实战
开发语言·后端·rust·trait·rust trait·rust特质
Mikey_n7 小时前
Spring Boot 注解详细解析:解锁高效开发的密钥
java·spring boot·后端
Kookoos7 小时前
【实战】基于 ABP vNext 构建高可用 S7 协议采集平台(西门子 PLC 通信全流程)
后端·物联网·c#·.net