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