Monitoring NGINX Ingress Controller

原文:https://docs.gitlab.com/ee/user/project/integrations/prometheus_library/nginx_ingress.html

Monitoring NGINX Ingress Controller

在 GitLab 11.7 中引入 .

注意: 0.16.0 之前的 NGINX Ingress 版本提供了一个随附的VTS Prometheus 指标导出器 ,该导出器导出的指标与内置指标不同.

GitLab 支持自动检测和监视 Kubernetes NGINX Ingress 控制器. 这是通过利用 Kubernetes NGINX Ingress 控制器版本 0.16.0及更高版本随附的内置 Prometheus 指标来提供的.

Requirements

Prometheus integration must be active.

Metrics supported

Name Query
吞吐量(要求/秒) sum(label_replace(rate(nginx_ingress_controller_requests{namespace="%{kube_namespace}",ingress=~".*%{ci_environment_slug}.*"}[2m]), "status_code", "${1}xx", "status", "(.)..")) by (status_code)
延迟(毫秒) sum(rate(nginx_ingress_controller_ingress_upstream_latency_seconds_sum{namespace="%{kube_namespace}",ingress=~".*%{ci_environment_slug}.*"}[2m])) / sum(rate(nginx_ingress_controller_ingress_upstream_latency_seconds_count{namespace="%{kube_namespace}",ingress=~".*%{ci_environment_slug}.*"}[2m])) * 1000
HTTP 错误率(%) sum(rate(nginx_ingress_controller_requests{status=~"5.*",namespace="%{kube_namespace}",ingress=~".*%{ci_environment_slug}.*"}[2m])) / sum(rate(nginx_ingress_controller_requests{namespace="%{kube_namespace}",ingress=~".*%{ci_environment_slug}.*"}[2m])) * 100

Configuring NGINX Ingress monitoring

如果您已经使用 GitLab 的Kubernetes 集群集成部署了 NGINX Ingress,则 Prometheus 将自动对其进行监视 .

对于其他部署,需要根据您的安装进行一些配置

  • NGINX Ingress 的版本应为 0.16.0 或更高,并启用指标.
  • NGINX Ingress 应该标注为 Prometheus 监视.
  • Prometheus 应该配置为监视带注释的容器.

About managed NGINX Ingress deployments

使用官方 Helm 图表将 NGINX Ingress 部署到gitlab-managed-apps命名空间中. NGINX Ingress 将通过 Load Balancer 的 Endpoint外部访问 .

通过设置以下内容,将 NGINX 配置为进行 Prometheus 监视:

  • enable-vts-status: "true" ,以导出 Prometheus 指标.
  • prometheus.io/scrape: "true" ,以启用自动发现.
  • prometheus.io/port: "10254" ,以指定度量标准端口.

与 GitLab 部署的 Prometheus 服务结合使用时,将自动收集响应指标.

Manually setting up NGINX Ingress for Prometheus monitoring

NGINX Ingress 的 0.9.0 及更高版本具有对导出 Prometheus 指标的内置支持. 要启用,必须传递 ConfigMap 设置: enable-vts-status: "true" . 启用后,Prometheus 指标端点将开始在端口 10254 上运行.

接下来,需要对 Ingress 进行注释,以进行 Prometheus 监视. 需要添加两个新的注释:

  • prometheus.io/scrape: "true"
  • prometheus.io/port: "10254"

管理这些设置取决于如何部署 NGINX Ingress. 如果您通过官方 Helm 图表进行了部署,则可以使用controller.stats.enabled以及所需的注释来启用指标. 另外,也可以直接在Kubernetes 仪表板中编辑 NGINX Ingress YML.

Specifying the Environment label

为了隔离并仅显示给定环境的相关指标,GitLab 需要一种方法来检测关联了哪些标签. 为此,GitLab 将搜索带有适当标签的指标. 在这种情况下, ingress标签必须为<CI_ENVIRONMENT_SLUG> .

如果您使用自动部署来部署您的应用程序,则将自动使用此格式,并且无需您执行任何操作即可检测到指标.