云原生下监控nginx ingress的核心指标是应用层可观测性指标:1.请求错误率(4xx/5xx占比);2.请求延迟p90/p99;3.并发连接数与资源使用率;4.配置重载成功率;5.qps趋势;6.上游连接失败与超时计数,均源自controller内置/metrics端口。

云原生架构下监控 Nginx Ingress 的核心性能指标,关键在于抓取 ingress-nginx controller 自身暴露的 Prometheus 指标,而非传统网络设备意义上的“丢包率”——因为 Ingress 层不直接处理 IP 层报文,没有 ICMP 或 TCP 重传层面的丢包概念。实际需关注的是 应用层请求失败、连接异常、超时与资源耗尽导致的请求丢失行为,这些才是影响服务可用性的真正“丢包”等效指标。
必须采集的核心性能指标
这些指标由 ingress-nginx controller 内置 metrics 端口(默认 10254/metrics)原生提供,无需额外 Exporter:
-
请求成功率与错误分布:用
nginx_ingress_controller_requests{status=~"4..|5.."} / nginx_ingress_controller_requests计算 4xx/5xx 错误率;重点关注502(上游不可达)、504(超时)、404(路由未命中) -
请求延迟(Duration):通过
nginx_ingress_controller_request_duration_seconds_bucket计算 P90/P95/P99 延迟,单位为秒;建议按host、path、ingress维度分组观察 -
并发连接与连接饱和度:
nginx_ingress_controller_nginx_process_connections反映当前活跃连接数;对比控制器 Pod 的 CPU/内存使用率,判断是否因资源瓶颈导致新连接被拒绝 -
配置重载健康度:
nginx_ingress_controller_config_last_reload_successful应恒为 1;若为 0,说明 Ingress 规则语法错误或后端 Service 不存在,将导致部分路由失效 -
每秒请求数(QPS)趋势:用
irate(nginx_ingress_controller_requests[1m])按 Pod 或命名空间聚合,识别突发流量或服务退化
替代“丢包率”的关键可观测性信号
在 Ingress 层,“丢包”体现为请求未到达上游、未返回响应或被主动中断。应重点盯住以下组合指标:
-
上游连接失败数:
nginx_ingress_controller_upstream_response_time_sum{upstream=~".*"} == 0配合nginx_ingress_controller_requests,可定位上游无响应的请求比例 -
请求超时计数:检查
nginx_ingress_controller_request_duration_seconds_count与_sum的比值突增,结合日志中"upstream timed out"关键字确认 -
TCP 连接拒绝(connection refused):通过
nginx_ingress_controller_nginx_process_connections{state="accepting"} == 0并持续下降,可能意味着 worker 进程无法 accept 新连接,常伴随 CPU 饱和或net.core.somaxconn不足 -
Worker 进程异常退出:监控
nginx_ingress_controller_nginx_process_num_procs是否波动;进程 crash 会导致短暂服务中断,表现为秒级 503 或连接重置
Prometheus 采集与告警配置要点
确保指标能被稳定抓取,并设置有效告警阈值:
- 确认 ingress-nginx controller 的
metrics.enabled=true且serviceMonitor.enabled=true(如使用 kube-prometheus-stack) - 在 Prometheus 中配置 scrape job,target 地址为
http://<controller-pod-ip>:10254/metrics</controller-pod-ip>,建议使用 Kubernetes 服务发现 + Pod 注解方式自动发现 - 设置如下基础告警规则:
-
avg(rate(nginx_ingress_controller_requests{status=~"5.."}[5m])) by (namespace, pod) > 0.05(5% 错误率持续 5 分钟) -
histogram_quantile(0.99, rate(nginx_ingress_controller_request_duration_seconds_bucket[5m])) > 2(P99 延迟超 2 秒) -
count(nginx_ingress_controller_config_last_reload_successful == 0) > 0(配置重载失败)
-
可视化与根因辅助分析
在 Grafana 中构建分层看板,提升排查效率:
- 顶层概览:全局 QPS、错误率、P99 延迟、连接数趋势
- 下钻维度:按
host、ingress、namespace、pod分组查看异常指标 - 关联视图:在同一面板叠加 CPU 使用率、内存使用率、
nginx_ingress_controller_nginx_process_resident_memory_bytes,判断是否资源受限 - 日志联动:在 Grafana 中配置 Loki 数据源,点击高延迟请求可跳转到对应 controller 日志,搜索
"client:<ip>.*request_time"</ip>定位慢请求上下文











