Перейти к содержанию

Мониторинг Ingress‑контроллера

Info

Ingress‑контроллер Валарм разработан на базе официального Ingress‑контроллера NGINX для Kubernetes. Поэтому большинство рекомендаций для Ingress‑контроллера NGINX применяются и для Ingress‑контроллера Валарм.

Рекомендуем для чтения по данной теме:

Помимо использования стандартных метрик NGINX, Валарм предоставляет дополнительный набор метрик мониторинга, которые необходимо отслеживать на production-окружении. Сбор метрик WAF‑ноды включается с помощью атрибута controller.wallarm.metrics файла values.yaml. Например:

controller:
  wallarm:
      metrics:
        enabled: true
        service:
          annotations:
            prometheus.io/scrape: "true"
            prometheus.io/path: /wallarm-metrics
            prometheus.io/port: "18080"

Чтобы изменить атрибут, необходимо использовать опцию --set команды helm install (при установке Ingress‑контроллера) или helm upgrade (при изменении параметров установленного Ingress‑контроллера). Например:

helm install --set controller.wallarm.metrics.enabled=true <INGRESS_CONTROLLER_NAME> wallarm/wallarm-ingress -n <KUBERNETES_NAMESPACE>
helm upgrade --reuse-values --set controller.wallarm.metrics.enabled=true <INGRESS_CONTROLLER_NAME> wallarm/wallarm-ingress -n <KUBERNETES_NAMESPACE>

Ниже приведен список метрик Валарм, полученный из системы Prometheus, после применения настроек выше.

# HELP wallarm_requests requests count
# TYPE wallarm_requests gauge
wallarm_requests 5
# HELP wallarm_attacks attack requests count
# TYPE wallarm_attacks gauge
wallarm_attacks 5
# HELP wallarm_blocked blocked requests count
# TYPE wallarm_blocked gauge
wallarm_blocked 5
# HELP wallarm_abnormal abnormal requests count
# TYPE wallarm_abnormal gauge
wallarm_abnormal 5
# HELP wallarm_tnt_errors tarantool write errors count
# TYPE wallarm_tnt_errors gauge
wallarm_tnt_errors 0
# HELP wallarm_api_errors API write errors count
# TYPE wallarm_api_errors gauge
wallarm_api_errors 0
# HELP wallarm_requests_lost lost requests count
# TYPE wallarm_requests_lost gauge
wallarm_requests_lost 0
# HELP wallarm_overlimits_time overlimits_time count
# TYPE wallarm_overlimits_time gauge
wallarm_overlimits_time 0
# HELP wallarm_segfaults segmentation faults count
# TYPE wallarm_segfaults gauge
wallarm_segfaults 0
# HELP wallarm_memfaults vmem limit reached events count
# TYPE wallarm_memfaults gauge
wallarm_memfaults 0
# HELP wallarm_softmemfaults request memory limit reached events count
# TYPE wallarm_softmemfaults gauge
wallarm_softmemfaults 0
# HELP wallarm_proton_errors libproton non-memory related libproton faults events count
# TYPE wallarm_proton_errors gauge
wallarm_proton_errors 0
# HELP wallarm_time_detect_seconds time spent for detection
# TYPE wallarm_time_detect_seconds gauge
wallarm_time_detect_seconds 0
# HELP wallarm_db_id proton.db file id
# TYPE wallarm_db_id gauge
wallarm_db_id 9
# HELP wallarm_lom_id LOM file id
# TYPE wallarm_lom_id gauge
wallarm_lom_id 38
# HELP wallarm_proton_instances proton instances count
# TYPE wallarm_proton_instances gauge
wallarm_proton_instances{status="success"} 4
wallarm_proton_instances{status="fallback"} 0
wallarm_proton_instances{status="failed"} 0
# HELP wallarm_stalled_worker_time_seconds time a worker stalled in libproton
# TYPE wallarm_stalled_worker_time_seconds gauge

Более подробная информация о настройке мониторинга и список доступных метрик приведены в документации.