如何使用Grafana将EKS集群每日基础设施使用报告发送至Slack?
EKS集群每日基础设施监控报告实现方案
1. 用PromQL提取核心集群指标
直接通过Prometheus内置查询获取所需关键数据:
- 当日节点最大数量:
max_over_time(kube_node_info{job="kube-state-metrics"}[1d])
(统计24小时内集群运行过的节点峰值数量,反映弹性扩缩容情况) - 当日运行中Pod数量(峰值):
max_over_time(sum(kube_pod_status_phase{phase="Running"})[1d]) - 当日运行中Pod数量(平均值):
avg_over_time(sum(kube_pod_status_phase{phase="Running"})[1d])
2. Grafana配置每日定时报告
操作步骤:
- 搭建报告仪表板:新建Grafana仪表板,添加上述指标的可视化面板(单值面板展示峰值,折线图展示全天趋势),调整布局让报告结构清晰。
- 配置通知渠道:进入
Alerting > Contact Points,添加邮件、Slack或企业微信等接收渠道,确保支持接收带附件的通知。 - 创建定时告警规则:
- 进入
Alerting > Alert rules,新建规则 - 设置触发条件为恒成立(比如
vector(1)),评估频率设为每日固定时间(如0 1 * * *,即凌晨1点执行) - 在通知设置中,勾选「Include image」或「Attach PDF」,指定要包含的仪表板面板或整个仪表板
- 通知标题设为「EKS集群每日基础设施报告」,正文可补充简单的指标说明
- 进入
3. 报告内容优化建议
除核心指标外,可额外补充以下内容让报告更全面:
- 节点CPU使用率当日峰值:
max_over_time(avg(irate(node_cpu_seconds_total{mode!="idle"}[5m])) by (node)[1d]) - 节点内存使用率当日峰值:
max_over_time((node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes)/node_memory_MemTotal_bytes * 100[1d]) - 异常状态Pod数量:
sum(kube_pod_status_phase{phase=~"Failed|CrashLoopBackOff"})
4. 验证与调整
- 手动触发告警规则,检查报告附件是否正常生成、指标数据是否准确
- 确认PromQL查询的时间范围是否覆盖完整24小时,避免数据遗漏
- 根据接收端反馈调整报告格式(比如PDF分页、图片分辨率)
内容的提问来源于stack exchange,提问作者Akshay Gopani
相关产品推荐
相关产品推荐

