Мониторинг 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