Как использовать NGINX Prometheus exporter

Мониторинг — важная часть разработки программного обеспечения, поскольку он помогает вам следить за производительностью и ресурсами. Без активного мониторинга вы находитесь в неведении, и ваши приложения могут выйти из строя в любой момент без вашего ведома. Здесь помогают такие инструменты, как Prometheus . Prometheus — это решение для наблюдения с открытым исходным кодом, которое отслеживает ключевые показатели и обеспечивает видимость ваших приложений.

Однако Prometheus не может автоматически подключаться ко всем типам приложений и ресурсов. В некоторых случаях вам понадобится адаптер для перевода метрик, генерируемых ресурсом, в формат, который легко понять Prometheus. Prometheus exporters поступают именно так.

Это руководство покажет вам, как использовать prometheus-nginx-exporter инструмент для подключения сервера NGINX к Prometheus.

Что такое экспортер NGINX Prometheus?

NGINX — один из самых популярных веб-серверов, используемых сегодня, а экспортер NGINX Promtheus — это инструмент, который вы можете использовать для экспорта метрик с вашего сервера NGINX и сбора их в вашем экземпляре Prometheus. Хотя NGINX предоставляет базовый набор метрик через свой stub status module, эти метрики не находятся в такой форме, которую может очистить Prometheus.

Вот здесь и prometheus-nginx-exporter помогает. Он прослушивает конечную точку stub_status и генерирует поток метрик, удобных для Prometheus, на конечной точке. Затем вы можете настроить свой экземпляр Prometheus для сбора данных из этой конечной точки и использовать их для отслеживания и анализа производительности вашего сервера NGINX.

Как использовать NGINX Prometheus exporter

Чтобы настроить мониторинг NGINX с помощью Prometheus, вам понадобится следующее:

Для начала обновите файл конфигурации вашего сервера NGINX, чтобы включить /metrics конечную точку, добавив в nginx.conf файл следующее:

server { 
    location /metrics {
        stub_status on;
    }
}

Посетите /metrics маршрут на своем сервере NGINX, чтобы узнать, были ли предоставлены метрики. Вы должны увидеть такой результат:

Active connections: 1 
server accepts handled requests
 7 7 14 
Reading: 0 Writing: 1 Waiting: 0

Затем установите экспортер в контейнер Docker, выполнив следующую команду:

docker run \
  -p 9113:9113 \
  nginx/nginx-prometheus-exporter:0.10.0 \
  -nginx.scrape-uri=http://<nginx ip>:8080/metrics \
  -web.telemetry-path=/metrics

Как только экспортер заработает, вы сможете получить доступ к следующей странице: http:<your machine ip>:9113/metrics и увидеть страницу с подробными показателями вашего сервера NGINX.

# HELP nginx_connections_accepted Accepted client connections
# TYPE nginx_connections_accepted counter
nginx_connections_accepted 10
# HELP nginx_connections_active Active client connections
# TYPE nginx_connections_active gauge
nginx_connections_active 1
# HELP nginx_connections_handled Handled client connections
# TYPE nginx_connections_handled counter
nginx_connections_handled 10
# HELP nginx_connections_reading Connections where NGINX is reading the request header
# TYPE nginx_connections_reading gauge
nginx_connections_reading 0
# HELP nginx_connections_waiting Idle client connections
# TYPE nginx_connections_waiting gauge
nginx_connections_waiting 0
# HELP nginx_connections_writing Connections where NGINX is writing the response back to the client
# TYPE nginx_connections_writing gauge
nginx_connections_writing 1
# HELP nginx_http_requests_total Total http requests
# TYPE nginx_http_requests_total counter
nginx_http_requests_total 21
# HELP nginx_up Status of the last metric scrape
# TYPE nginx_up gauge
nginx_up 1
# HELP nginxexporter_build_info Exporter build information
# TYPE nginxexporter_build_info gauge
nginxexporter_build_info{commit="7a03d0314425793cf4001f0d9b0b2cfd19563433",date="2021-12-21T19:24:34Z",version="0.10.0"} 1

Затем настройте свой экземпляр Prometheus для сбора данных из экспортера. Вы можете сделать это, обновив prometheus.yaml файл, включив в него следующее:

scrape_configs:
  - job_name: ‘nginx exporter’
    scrape_interval: 5s
    static_configs:
      - targets: ['<your machine ip>:9113']

Как только все будет настроено правильно, вы сможете увидеть метрики, связанные с NGINX, в предложениях автозаполнения PromQL:‍

Рекомендации по автозаполнению PromQL

Теперь вы можете использовать эти метрики в запросах PromQL для мониторинга вашего сервера NGINX и визуализаций с помощью других инструментов, таких как Grafana.

Последние мысли

Prometheus — это универсальное решение для мониторинга с открытым исходным кодом. Однако для работы с внешними инструментами и сервисами требуется дополнительная настройка. В этом руководстве вы увидели, как экспортировать метрики с вашего сервера NGINX и фиксировать их в Prometheus с помощью NGINX Prometheus exporter.