Kube-Prometheus-Stack无法采集部分Ingress Nginx指标求助
以下是几种常见的配置遗漏点,按优先级排查:
Ingress-Nginx Controller未正确启用指标模块
检查Helm安装Ingress-Nginx时的values配置,确保metrics相关开关已开启:controller: metrics: enabled: true serviceMonitor: enabled: true config: enable-metrics: "true"若未开启
controller.metrics.enabled,Controller不会暴露metrics端口;若serviceMonitor.enabled未开,不会自动生成ServiceMonitor供Prometheus发现。Kube-Prometheus-Stack的ServiceMonitor选择器未匹配目标
Prometheus仅会采集匹配其serviceMonitorSelector规则的ServiceMonitor资源。检查Kube-Prometheus的values配置,确保选择器能覆盖Ingress-Nginx的ServiceMonitor标签(默认标签为app.kubernetes.io/name: ingress-nginx):prometheus: prometheusSpec: serviceMonitorSelector: matchLabels: app.kubernetes.io/name: ingress-nginx # 若使用多标签匹配,可改用matchExpressions,或关闭默认选择器限制 serviceMonitorSelectorNilUsesHelmValues: falseIngress-Nginx版本不兼容或指标被禁用
部分旧版Ingress-Nginx中,状态码相关指标的名称为nginx_ingress_requests_total而非nginx_ingress_controller_requests,需确认当前版本与官方文档匹配。同时检查Controller的启动参数,确保未通过--disable-metrics=requests之类的参数禁用请求指标。网络策略或端口访问限制
确认Prometheus所在命名空间(通常为monitoring)能访问Ingress-Nginx Controller的metrics端口(默认10254)。检查是否存在网络策略阻止了Prometheus Pod与Ingress Controller Pod的通信,或节点防火墙限制了该端口的入站流量。ServiceMonitor的Endpoint配置错误
查看Ingress-Nginx自动生成的ServiceMonitor资源,确认其endpoint的port、path与实际一致:endpoints: - port: metrics path: /metrics scheme: http若自定义了metrics端口或路径,需确保此处配置与Controller的暴露方式匹配。
内容的提问来源于stack exchange,提问作者SiiilverSurfer

