Мониторинг Nginx при помощи stub_status и Prometheus Exporter

Не так давно возникла задача мониторинга проекта, который не бежит внутри Kubernetes и простые настройки Prometheus не совсем подходят. Знать нагрузки на сервис интересно, но не хочется много накручивать и писать дополнительный код (к тому же проекты работают весьма успешно на PHP). Посмотрев что может отдать стандартный nginx понял, что в принципе базовую нагрузку вытащить будет довольно легко. Приступаем:

  1. Экспорт метрик nginx. Для этого редактируем наш default.conf и добавляем:
    location = /nginx_stats {
      stub_status;
      # we can close status endpoint from public and put allowed IP-s:
      #allow 127.0.0.1;	#only allow requests from localhost
      #deny all;		#deny all other hosts
    }

    Перезапускаем nginx, убеждаемся что все работает и по адресу nginx_stats мы получаем метрики:

    Active connections: 1
    server accepts handled requests
     419 419 8411
    Reading: 0 Writing: 1 Waiting: 0
  2. Воспользуемся Prometheus Exporter, который будет забирать метрики в формате nginx и переводить их на формат Prometheus:
    docker run -p 9113:9113 nginx/nginx-prometheus-exporter:0.8.0 -nginx.scrape-uri https://my-site/nginx_stats

    Теперь если сделаем curl localhost:9113/metrics мы должны будем видеть привычные для нас метрики Prometheus.

  3.  Решение выше отлично работает локально. В следующей серии покажу как можно запускать экспортер внутри Kubernetes чтобы собирать метрики «домашним» Prometheus.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *