NGINX Prometheus exporter makes it possible to monitor NGINX or NGINX Plus using Prometheus.
NGINX exposes a handful of metrics via the stub_status page. NGINX Plus provides a richer set of metrics via the API and the monitoring dashboard. NGINX Prometheus exporter fetches the metrics from a single NGINX or NGINX Plus, converts the metrics into appropriate Prometheus metrics types and finally exposes them via an HTTP server to be collected by Prometheus.
In this section, we show how to quickly run NGINX Prometheus Exporter for NGINX or NGINX Plus.
If you’d like to use the NGINX Prometheus Exporter with NGINX Ingress Controller for Kubernetes, see this doc for the installation instructions.
We assume that you have already installed Prometheus and NGINX or NGINX Plus. Additionally, you need to:
/stub_status on port 8080./api on port
8080.9113 and the default metrics path -- /metrics.To start the exporter we use the docker run command.
console
docker run -p 9113:9113 nginx/nginx-prometheus-exporter:1.5.1 --nginx.scrape-uri=http://<nginx>:8080/stub_status
where <nginx> is the IP address/DNS name, through which NGINX is available.
console
docker run -p 9113:9113 nginx/nginx-prometheus-exporter:1.5.1 --nginx.plus --nginx.scrape-uri=http://<nginx-plus>:8080/api
where <nginx-plus> is the IP address/DNS name, through which NGINX Plus is available.
console
nginx-prometheus-exporter --nginx.scrape-uri=http://<nginx>:8080/stub_status
where <nginx> is the IP address/DNS name, through which NGINX is available.
console
nginx-prometheus-exporter --nginx.plus --nginx.scrape-uri=http://<nginx-plus>:8080/api
where <nginx-plus> is the IP address/DNS name, through which NGINX Plus is available.
console
nginx-prometheus-exporter --nginx.scrape-uri=unix:<nginx>:/stub_status
where <nginx> is the path to unix domain socket, through which NGINX stub status is available.
Note. The nginx-prometheus-exporter is not a daemon. To run the exporter as a system service (daemon), you can
follow the example in examples/systemd. Alternatively, you can run the exporter
in a Docker container.
usage: nginx-prometheus-exporter [<flags>]
Flags:
-h, --[no-]help Show context-sensitive help (also try --help-long and --help-man).
--[no-]web.systemd-socket Use systemd socket activation listeners instead
of port listeners (Linux only). ($SYSTEMD_SOCKET)
--web.listen-address=:9113 ...
Addresses on which to expose metrics and web interface. Repeatable for multiple addresses. ($LISTEN_ADDRESS)
--web.config.file="" Path to configuration file that can enable TLS or authentication. See: https://github.com/prometheus/exporter-toolkit/blob/master/docs/web-configuration.md ($CONFIG_FILE)
--web.telemetry-path="/metrics"
Path under which to expose metrics. ($TELEMETRY_PATH)
--[no-]nginx.plus Start the exporter for NGINX Plus. By default, the exporter is started for NGINX. ($NGINX_PLUS)
--nginx.scrape-uri=http://127.0.0.1:8080/stub_status ...
A URI or unix domain socket path for scraping NGINX or NGINX Plus metrics. For NGINX, the stub_status page must be available through the URI. For NGINX Plus -- the API. Repeatable for multiple URIs. ($SCRAPE_URI)
--[no-]nginx.ssl-verify Perform SSL certificate verification. ($SSL_VERIFY)
--nginx.ssl-ca-cert="" Path to the PEM encoded CA certificate file used to validate the servers SSL certificate. ($SSL_CA_CERT)
--nginx.ssl-client-cert=""
Path to the PEM encoded client certificate file to use when connecting to the server. ($SSL_CLIENT_CERT)
--nginx.ssl-client-key="" Path to the PEM encoded client certificate key file to use when connecting to the server. ($SSL_CLIENT_KEY)
--[no-]nginx.proxy-protocol
Pass proxy protocol payload to nginx listeners. ($PROXY_PROTOCOL)
--nginx.timeout=5s A timeout for scraping metrics from NGINX or NGINX Plus. ($TIMEOUT)
--prometheus.const-label=PROMETHEUS.CONST-LABEL ...
Label that will be used in every metric. Format is label=value. It can be repeated multiple times. ($CONST_LABELS)
--log.level=info Only log messages with the given severity or above. One of: [debug, info, warn, error]
--log.format=logfmt Output format of log messages. One of: [logfmt, json]
--[no-]version Show application version.
| Name | Type | Description | Labels |
|---|---|---|---|
nginx_exporter_build_info |
Gauge | Shows the exporter build information. | branch, goarch, goos, goversion, revision, tags and version |
promhttp_metric_handler_requests_total |
Counter | Total number of scrapes by HTTP status code. | code (the HTTP status code) |
promhttp_metric_handler_requests_in_flight |
Gauge | Current number of scrapes being served. | [] |
go_* |
Multiple | Go runtime metrics. | [] |
| Name | Type | Description | Labels |
|---|---|---|---|
nginx_up |
Gauge | Shows the status of the last metric scrape: 1 for a successful scrape and 0 for a failed one |
[] |
| Name | Type | Description | Labels |
|---|---|---|---|
nginx_connections_accepted |
Counter | Accepted client connections. | [] |
nginx_connections_active |
Gauge | Active client connections. | [] |
nginx_connections_handled |
Counter | Handled client connections. | [] |
nginx_connections_reading |
Gauge | Connections where NGINX is reading the request header. | [] |
nginx_connections_waiting |
Gauge | Idle client connections. | [] |
nginx_connections_writing |
Gauge | Connections where NGINX is writing the response back to the client. | [] |
nginx_http_requests_total |
Counter | Total http requests. | [] |
| Name | Type | Description | Labels |
|---|---|---|---|
nginxplus_up |
Gauge | Shows the status of the last metric scrape: 1 for a successful scrape and 0 for a failed one |
[] |
| Name | Type | Description | Labels |
|---|---|---|---|
| `nginxplus_conne |
$ claude mcp add nginx-prometheus-exporter \
-- python -m otcore.mcp_server <graph>