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

查看规则

查看告警

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

相关推荐
想用offer打牌22 分钟前
RocketMQ如何防止消息丢失?
java·后端·架构·开源·rocketmq
源码获取_wx:Fegn08951 小时前
基于springboot + vue健身房管理系统
java·开发语言·前端·vue.js·spring boot·后端·spring
码事漫谈2 小时前
Vibe Coding时代:人人都是开发者
后端
2501_916766542 小时前
【Spring框架】SpringJDBC
java·后端·spring
+VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue图书管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
AntBlack2 小时前
忍不住推荐 : AI 时代 ,桌面端真的可以考虑一下Go+Wails 的组合
后端·go·ai编程
码事漫谈3 小时前
C++20协程如何撕开异步编程的牢笼
后端
DevYK3 小时前
Coze Studio 二次开发(二)支持 MCP Server 动态配置
后端·agent·coze
掘金码甲哥3 小时前
在调度的花园里面挖呀挖
后端
IMPYLH4 小时前
Lua 的 Coroutine(协程)模块
开发语言·笔记·后端·中间件·游戏引擎·lua