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

查看规则

查看告警

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

相关推荐
代码之光_19807 分钟前
SpringBoot校园资料分享平台:设计与实现
java·spring boot·后端
编程老船长19 分钟前
第26章 Java操作Mongodb实现数据持久化
数据库·后端·mongodb
IT果果日记40 分钟前
DataX+Crontab实现多任务顺序定时同步
后端
姜学迁2 小时前
Rust-枚举
开发语言·后端·rust
爱学习的小健2 小时前
MQTT--Java整合EMQX
后端
北极小狐3 小时前
Java vs JavaScript:类型系统的艺术 - 从 Object 到 any,从静态到动态
后端
【D'accumulation】3 小时前
令牌主动失效机制范例(利用redis)注释分析
java·spring boot·redis·后端
2401_854391083 小时前
高效开发:SpringBoot网上租赁系统实现细节
java·spring boot·后端
Cikiss3 小时前
微服务实战——SpringCache 整合 Redis
java·redis·后端·微服务
Cikiss3 小时前
微服务实战——平台属性
java·数据库·后端·微服务