当前位置: 首页 > web >正文

ingress-nginx 开启 Prometheus 监控 + Grafana 查看指标

环境已经部署了 ingress-nginx(DaemonSet 方式),并且 Prometheus + Grafana 也已经运行。但之前 /metrics 端点没有暴露 Nginx 核心指标(如 nginx_ingress_controller_requests_total),经过调整后现在可以正常采集数据。以下是完整操作总结:


1. 确保 ingress-nginx 暴露 Prometheus 指标

(1)检查并修改 DaemonSet 配置

kubectl edit daemonset ingress-nginx-controller -n ingress-nginx

在 containers.args 中添加:

args:
- /nginx-ingress-controller
- --enable-metrics=true          # 启用 Prometheus 指标
- --metrics-per-host=true       # 按 Host 统计指标(可选)
- --configmap=$(POD_NAMESPACE)/ingress-nginx
- ...(其他原有参数保持不变)

保存后会自动重启 Pod,或者手动滚动更新:

kubectl rollout restart daemonset ingress-nginx-controller -n ingress-nginx

(2)验证指标是否暴露

kubectl exec -it $(kubectl get pods -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx -o jsonpath='{.items[0].metadata.name}') \-n ingress-nginx -- curl -s http://localhost:10254/metrics | grep 'nginx_ingress_controller_requests_total'

预期输出

nginx_ingress_controller_requests_total{ingress="your-ingress", namespace="default", status="200"} 15

2. 配置 Prometheus 采集指标

(1)创建 ServiceMonitor(如果尚未配置)

cat <<EOF | kubectl apply -f -
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:name: ingress-nginxnamespace: ingress-nginxlabels:release: prometheus  # 必须匹配 Prometheus 的 serviceMonitorSelector
spec:selector:matchLabels:app.kubernetes.io/name: ingress-nginx  # 匹配 Service 的标签endpoints:- port: metrics        # 必须与 Service 的端口名称一致interval: 15spath: /metrics
EOF

(2)检查 Prometheus Targets

访问 Prometheus 的 Targets 页面(如 http://prometheus-server:9090/targets),确认 ingress-nginx 的 target 状态为 UP

(3)手动查询 Prometheus 验证

# 进入 Prometheus Pod 查询
kubectl exec -it $PROM_POD -n prometheus -c prometheus -- \curl -s "http://localhost:9090/api/v1/query?query=nginx_ingress_controller_requests_total" | jq

预期:返回带 ingress 和 status 标签的指标数据。


3. 在 Grafana 中查看指标

(1)导入官方 Dashboard

  1. 登录 Grafana(如 http://grafana.example.com

  2. 点击 + → Import

  3. 输入 Dashboard ID:

    • 最新版(推荐)14314(官方链接)

    • 旧版兼容:9614

  4. 选择正确的 Prometheus 数据源

(2)检查数据源和查询

  • 确认数据源:Dashboard 右上角选择正确的 Prometheus 数据源。

  • 检查查询语句:点击任意 Panel → Edit → 查看 Query 是否使用正确的指标(如 nginx_ingress_controller_requests_total)。

  • 调整时间范围:确保选择最近的时间范围(如 Last 1 hour)。

(3)常见问题排查

  • 无数据

    • 检查 Prometheus 是否真的采集到数据(直接查询 nginx_ingress_controller_requests_total)。

    • 确保有流量经过 ingress-nginx(空流量无指标)。

  • 指标名称不匹配

    • 新版本可能用 controller_nginx_requests_total,需调整 Grafana 查询。


4. 最终验证

  1. Prometheus 有数据

    curl -s "http://prometheus:9090/api/v1/query?query=nginx_ingress_controller_requests_total" | jq
  2. Grafana 图表正常

    • 打开 Dashboard,查看请求量、错误率、延迟等图表。


总结

步骤关键操作
1. 启用指标--enable-metrics=true + 重启 DaemonSet
2. 配置采集创建 ServiceMonitor 匹配 metrics 端口
3. 检查 TargetPrometheus 的 Targets 页面确认 UP
4. 导入 DashboardGrafana 导入 ID 14314,选择正确数据源
5. 验证数据直接查询 Prometheus + 检查 Grafana 图表

你的环境已经可以正常监控 ingress-nginx,后续只需关注 Grafana Dashboard 即可实时观察流量、错误率等关键指标!

http://www.xdnf.cn/news/12496.html

相关文章:

  • 《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
  • Python爬虫实战:研究mechanize库相关技术
  • 深入解析JVM工作原理:从字节码到机器指令的全过程
  • 四叉树在空间结构建模中的应用
  • 车载以太网数据流量抓取手段全解析
  • 深度学习环境配置指南:基于Anaconda与PyCharm的全流程操作
  • C++11完美转发
  • Fullstack 面试复习笔记:Spring / Spring Boot / Spring Data / Security 整理
  • intelrealsense深度相机产品介绍
  • 从零开始的python学习(七)P95+P96+P97+P98+P99+P100+P101
  • MySQL安装与配置
  • (nice!!!)(LeetCode每日一题)2434. 使用机器人打印字典序最小的字符串(贪心+栈)
  • 口罩佩戴检测算法AI智能分析网关V4工厂/工业等多场景守护公共卫生安全
  • Linux 服务管理与自启动配置全解析:rc.d、systemctl与service对比
  • MySQL 性能调优入门 - 慢查询分析与索引优化基础
  • 智能终端与边缘计算按章复习
  • Skia如何绘制几何图形
  • 解决基于LangGraph框架的DeerFlow使用Qwen3不能正常被解析的问题
  • Edge(Bing)自动领积分脚本部署——基于python和Selenium(附源码)
  • 开源投屏工具Escrcpy的使用教程
  • MySQL基础2
  • F5 GSLB 最佳实践:如何手动将Wide IP 故障转移到另一个数据中心
  • Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
  • 链游技术破壁:NFT资产确权与Play-to-Earn经济模型实战
  • 从零开始基于Ubuntu18搭建Gazebo地图仿真环境
  • 【AI】智驾地图在不同自动驾驶等级中的作用演变
  • [opt 31-67] vivado编译出错 Implementation error 问题定位与解决
  • 【Linux】Linux 进程间通讯-管道
  • yolo 训练 中间可视化
  • 物联网嵌入式开发实训室建设方案探讨(高职物联网应用技术专业实训室建设)