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

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.lqws.cn/news/181945.html

相关文章:

  • 常用枚举技巧:基础(一)
  • 【第一章:人工智能基础】01.Python基础及常用工具包-(2)Python函数与模块
  • Caliper 配置文件解析:fisco-bcos.json
  • 【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
  • 『React』Fragment的用法及简写形式
  • 国标GB28181设备管理软件EasyGBS远程视频监控方案助力高效安全运营
  • 矩阵和向量范数的区别分析
  • SQL进阶之旅 Day 19:统计信息与优化器提示
  • CMake GLOB返回路径规则及示例
  • 联想困局,破于AI?
  • 蓝桥杯国赛题2022
  • 项目管理平台是什么?项目管理平台又有哪些功能?
  • javascript中Cookie、BOM、DOM的使用
  • 港股TRS交易系统开发:跨境资本的精密调度引擎
  • day46打卡
  • DevSecOps新理念
  • 软考 系统架构设计师系列知识点之杂项集萃(84)
  • TDengine 开发指南——无模式写入
  • Docker + Nginx + Logrotate 日志管理与轮换实践
  • 护网行动面试试题(1)
  • ㊗️高考加油
  • 高考:如何合理选择学科、专业以及职业
  • K7 系列各种PCIE IP核的对比
  • 机器学习算法时间复杂度解析:为什么它如此重要?
  • halcon 透视矩阵
  • day48 python通道注意力
  • vb监测Excel两个单元格变化,达到阈值响铃
  • Java设计模式之状态模式详解
  • pikachu靶场通关笔记17 CSRF关卡03-CSRF(Token)
  • Kerberos面试内容整理-开源 Kerberos 实现(MIT Kerberos、Heimdal 等)