1 介绍

nginx ingress controller 是 k8s 集群中最常用的 ingress controller 之一, 它可以根据 ingress 为集群中的应用配置负载均衡,从而使外部网络通过域名访问集群内的应用。
实际项目中,除了使用 ingress 外,我们也需要监控 ingress 和 ingress controller 的相关信息,从而了解集群内服务和网络的可用性。
本文基于 nginx ingress controller 一步步讲述如何通过 prometheus监控 nginx ingress, 并使用 grafana 展示监控信息。

2 安装测试

前置条件,可以参考 k8s笔记12–grafana的配置和常见使用 安装 grafana, 参考 k8s笔记18–快速入门ingress和ingress controller 安装 ingress controller。

2.1 配置环境

  1. 在 Prometheus 的 job_name: kubernetes-service-endpoints 中新增命名空间 ingress-nginx, 如下所示
    - job_name: kubernetes-service-endpoints
      kubernetes_sd_configs:
      - role: endpoints
        follow_redirects: true
        namespaces:
          names:
          - lens-metrics
          - ingress-nginx
    
  2. 在ingress 的 deployment 新增 metrics 端口,在 ingress 的 svc 中新增注解相关的字段,如下所示
    # svc.yaml info
    metadata:
      annotations:
        prometheus.io/port: '10254'
        prometheus.io/scrape: 'true'
    status:
      loadBalancer: {}
    spec:
      ports:
        - name: prometheus
          protocol: TCP
          port: 10254
          targetPort: prometheus
    
    # deploy.yaml info
    spec:
      template:
        spec:
          containers:
            - name: controller
              ports:
                - name: prometheus
                  containerPort: 10254
                  protocol: TCP
    
    新增配置后,Prometheus 中即可看到对应 10254/metrics, 如下图所示 在这里插入图片描述
  3. 在 grafana 中导入 github.com/kubernetes/ingress-nginx/tree/main/deploy/grafana/dashboards 中的json文件

2.2 测试k8s 1.23.6

ingress controller v1.2.0
配置完成并导入数据后,过一段时间就可以在 grafana 上查看 ingress 相关的数据,如下图所示:
ingress controller
在这里插入图片描述
Request Handing Performance
在这里插入图片描述

3 注意事项

该文档中端口和实际不匹配,
https://docs.nginx.com/nginx-ingress-controller/logging-and-monitoring/prometheus/

ingress-nginx 官方文档 docs.nginx.com/nginx-ingress-controller/logging-and-monitoring/prometheus/ 中也介绍了nginx-ingress-controller 的日志监控方法, 但是文档中端口和实际不匹配,因此最好参考 github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/monitoring.md 来配置。

4 说明

软件环境:
grafana 8.5.2
k8s 1.23.6
ingress controller v1.2.0
参考文档:
k8s笔记12–grafana的配置和常见使用
k8s笔记18–快速入门ingress和ingress controller
github.com/kubernetes/ingress-nginx/tree/main/deploy/grafana/dashboards
github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/monitoring.md
基于k8s集群部署prometheus监控ingress nginx

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐