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: '3513784343@qq.com'  # 邮箱smtp地址
  smtp_auth_username: '3513784343@qq.com' # 发件人登录的用户名,默认和发件人地址一致
  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: '3513784343@qq.com'
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

查看规则

查看告警

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

相关推荐
Yaml41 小时前
智能化健身房管理:Spring Boot与Vue的创新解决方案
前端·spring boot·后端·mysql·vue·健身房管理
小码编匠2 小时前
一款 C# 编写的神经网络计算图框架
后端·神经网络·c#
AskHarries2 小时前
Java字节码增强库ByteBuddy
java·后端
佳佳_2 小时前
Spring Boot 应用启动时打印配置类信息
spring boot·后端
许野平3 小时前
Rust: 利用 chrono 库实现日期和字符串互相转换
开发语言·后端·rust·字符串·转换·日期·chrono
BiteCode_咬一口代码4 小时前
信息泄露!默认密码的危害,记一次网络安全研究
后端
齐 飞5 小时前
MongoDB笔记01-概念与安装
前端·数据库·笔记·后端·mongodb
LunarCod5 小时前
WorkFlow源码剖析——Communicator之TCPServer(中)
后端·workflow·c/c++·网络框架·源码剖析·高性能高并发
码农派大星。6 小时前
Spring Boot 配置文件
java·spring boot·后端