Prometheus: nginx_exporter и сбор метрик с NGINX

By | 07/19/2018
 

Имеется два експортёра для NGINX – discordianfish/nginx_exporter и hnlq715/nginx-vts-exporter.

Второй предоставляет больше возможностей, но мне сейчас нужны самые базовые, поэтому использую discordianfish/nginx_exporter.

NGINX status

Сначала – добавим /nginx_status в NGINX.

Проверяем – собран ли NGINX со статус-модулем:

root@bm-backed-app-dev:/opt/prometheus-client# nginx -V 2>&1 | grep -o with-http_stub_status_module
with-http_stub_status_module

Я добавил отдельный конфиг /etc/nginx/conf.d/status.conf с default_server, который принимает запросы на статус:

server {

    charset utf-8;
    listen 80 default_server;
    server_name _;

    location /nginx_status {

        stub_status on;
        access_log off;
        allow 127.0.0.1;
        deny all;
    }
}

Проверяем конфиг, перезапускаем:

root@bm-backed-app-dev:/opt/prometheus-client# nginx -t && service nginx reload
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Проверяем статус:

root@bm-backed-app-dev:/opt/prometheus-client# curl -s localhost/nginx_status
Active connections: 2
server accepts handled requests
41306 41306 42275
Reading: 0 Writing: 1 Waiting: 1

nginx_exporter

Запускаем екпортёр:

root@bm-backed-app-dev:/opt/prometheus-client# docker run -p 9113:9113 fish/nginx-exporter -nginx.scrape_uri=http://localhost/nginx_status
Unable to find image 'fish/nginx-exporter:latest' locally
latest: Pulling from fish/nginx-exporter
91d086a909e1: Pull complete
a3ed95caeb02: Pull complete
8d6a08280da7: Pull complete
8ba3ebf9e0b6: Pull complete
Digest: sha256:208acc68a1ac581be6d101264445bde55ebbda11e6607dd699cb1015822f2dd1
Status: Downloaded newer image for fish/nginx-exporter:latest
time="2018-07-19T09:19:55Z" level=info msg="Starting Server: :9113" source="nginx_exporter.go:185"

Проверяем метрики:

admin@bm-backed-app-dev:~$ curl -s localhost:9113/metrics | grep -v \# | grep nginx_
nginx_connections_current{state="active"} 1
nginx_connections_current{state="reading"} 0
nginx_connections_current{state="waiting"} 0
nginx_connections_current{state="writing"} 1
nginx_connections_processed_total{stage="accepted"} 41322
nginx_connections_processed_total{stage="any"} 42294
nginx_connections_processed_total{stage="handled"} 41322
nginx_up 1

Добавляем его в Compose файл к остальным експортёрам:

...
  nginx_exporter:
    image: fish/nginx-exporter
    network_mode: "host"
    command:
    - 'nginx.scrape_uri=http://localhost/nginx_status'

Готово.