
## 工作流概述
这个n8n工作流实现了实时监控Kubernetes集群CPU使用情况,并在检测到CPU峰值时自动发送告警到Slack。工作流每5分钟触发一次,查询Prometheus获取所有Kubernetes Pod的CPU使用率数据。
## 工作原理
### 1. 定时触发
– **🕒 Every 5 Min Trigger**:每5分钟自动触发工作流执行
– 可根据监控需求调整触发间隔(如1分钟进行更积极的监控)
### 2. Prometheus数据查询
– **📡 Query Prometheus for CPU Spikes**:通过HTTP GET请求查询Prometheus
– 使用PromQL查询语句获取超过CPU使用率阈值的Pod(例如>0.8核心)
– 确保n8n能够访问Prometheus且查询语句正确调优
### 3. 数据格式转换
– **🧠 Format Prometheus JSON**:将原始Prometheus JSON数据转换为结构化数组
– 提取应用名称、命名空间、Pod名称和CPU使用率(浮点数)
– 仅过滤超过阈值的CPU使用率的Pod
### 4. 告警分组逻辑
– **🔎 Check Number of Pods in Group**:检查同一应用下是否有多个Pod超过阈值
– 如果pods.length > 1 → 分组告警
– 否则 → 单个Pod告警
### 5. 消息格式化
– **🧷 Format Batched Slack Message**:为同一应用的多个Pod格式化富文本Slack消息
– 包含应用名称、命名空间、受影响Pod列表及CPU使用率
– **✉️ Format Single Pod Slack Message**:为单个高CPU Pod格式化告警消息
– 适用于不跨应用共享的孤立峰值
### 6. Slack通知发送
– **📤 Send Alerts to Slack**:通过webhook或Bot API发送格式化告警消息到Slack
– 确保Slack令牌已添加到凭据中
– 频道ID正确
– 消息体格式:{ “text”: $json[“text”] }
## 设置步骤
1. 配置Prometheus访问权限
2. 添加Slack Bot API凭据
3. 设置正确的Slack频道ID
4. 根据需要调整CPU阈值和监控间隔
## 技术特点
– 实时监控Kubernetes集群CPU使用情况
– 智能分组告警,避免信息过载
– 支持批量Pod和单个Pod告警
– 易于扩展和定制

评论(0)