Monitoring NGINX Ingress Controller
Introduced in GitLab 9.5
GitLab has support for automatically detecting and monitoring the Kubernetes NGINX ingress controller. This is provided by leveraging the built in Prometheus metrics included in version 0.9.0 of the ingress.
Metrics supported
Name | Query |
---|---|
Throughput (req/sec) | sum(rate(nginx_upstream_requests_total{upstream=~"%{kube_namespace}-%{ci_environment_slug}-.*"}[2m])) |
Latency (ms) | avg(nginx_upstream_response_msecs_avg{upstream=~"%{kube_namespace}-%{ci_environment_slug}-.*"}) |
HTTP Error Rate (HTTP Errors / sec) | sum(rate(nginx_upstream_responses_total{status_code="5xx", upstream=~"%{kube_namespace}-%{ci_environment_slug}-.*"}[2m])) |
Configuring Prometheus to monitor for NGINX ingress metrics
The easiest way to get started is to use at least version 0.9.0 of NGINX ingress. If you are using NGINX as your Kubernetes ingress, there is direct support for enabling Prometheus monitoring in the 0.9.0 release.
If you have deployed with the gitlab-omnibus Helm chart, these metrics will be automatically enabled and annotated for Prometheus monitoring.
Specifying the Environment label
In order to isolate and only display relevant metrics for a given environment
however, GitLab needs a method to detect which labels are associated. To do this, GitLab will search metrics with appropriate labels. In this case, the upstream
label must be of the form <Kubernetes Namespace>-<CI_ENVIRONMENT_SLUG>-*
.
If you have used Auto Deploy to deploy your app, this format will be used automatically and metrics will be detected with no action on your part.