Мониторинг Nginx с помощью Proto Observability

Сбор метрик Nginx

Введение

  1. Убедитесь, что у вас установлен и настроен ProtoOBP Агент на сервере с Nginx или в Kubernetes (если Nginx работает в Kubernetes)
  2. Измените конфигурацию Nginx для отдачи метрик
  3. Измените конфигурацию Агента для сбора метрик Nginx
  4. Дополнительно Proto Observability Platform поддерживает сбор трейсов с Nginx (не зависит от сбора метрик)

Конфигурация Nginx

  1. Убедитесь, что ваша версия Nginx содержит http_stub_status_module:

    nginx -V 2>&1| grep -o http_stub_status_module
  2. Создайте файл status.conf в директории с конфигурацией Nginx (обычно /etc/nginx/conf.d/ ):

    server { listen 81; server_name localhost; access_log off; allow 127.0.0.1; deny all; location /nginx_status { stub_status; # для NGINX open source < версии 1.7.5 # stub_status on; # для NGINX Plus # status; # получение версии Nginx server_tokens on; } }

Конфигурация ProtoOBP агента

  1. Укажите адрес nginx_status эндпоинта в файле конфигурации ProtoOBP агента (/etc/protoobp-agent/conf.d/nginx.d/conf.yaml):

    init_config: instances: - nginx_status_url: http://localhost:81/nginx_status/
  2. Перезапустите ProtoOBP Агента выполнив:

    systemctl restart protoobp-agent

Добавьте лейблы к контейнеру с Nginx:

LABEL "com.protoobp.ad.check_names"='["nginx"]' LABEL "com.protoobp.ad.init_configs"='[{}]' LABEL "com.protoobp.ad.instances"='[{"nginx_status_url": "http://%%host%%:81/nginx_status/"}]'

Добавьте аннотации к поду Nginx:

apiVersion: v1 kind: Pod metadata: name: nginx annotations: ad.protoobp.com/nginx.checks: | { "nginx": { "init_config": {}, "instances": [ { "nginx_status_url":"http://%%host%%:81/nginx_status/" } ] } } labels: name: nginx