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

Введение в работу мониторинга

Вы можете мониторить состояние WAF‑ноды с помощью предоставляемых нодой метрик. Их сбор осуществляется collectd, установленным на каждой ноде.

collectd предоставляет несколько способов передачи данных, что позволяет направить поток метрик во множество систем мониторинга для контроля состояния WAF‑нод Вебмониторэкс.

Необходимость мониторинга

Отказ или нестабильная работа модуля Вебмониторэкс могут привести к полному или частичному отказу в обслуживании пользовательских запросов к защищаемому WAF‑нодой приложению.

Отказ или нестабильная работа модуля постаналитики может привести к недоступности следующей функциональности:

  • Выгрузка данных об атаках в облако Вебмониторэкс. В результате этого атаки перестанут отображаться на портале Вебмониторэкс.

  • Обнаружение поведенческих атак (см. «брутфорс»).

  • Получение сведений о структуре защищаемого приложения.

Вы можете осуществлять мониторинг как модуля Вебмониторэкс, так и модуля постаналитики (в том числе, если он установлен отдельно).

Формы мониторинга

Все документы, описывающие настройку мониторинга WAF‑ноды, пригодны для настройки мониторинга:

  • Отдельно развернутого модуля Вебмониторэкс.
  • Отдельно развернутого модуля постаналитики.
  • Совместно развернутых модулей Вебмониторэкс и постаналитики.

Необходимые условия для работы мониторинга

Для функционирования мониторинга требуется, чтобы:

  • NGINX отдавал статистику работы WAF‑ноды (wallarm_status on),

  • нода находилась в режиме monitoring/block.

По умолчанию статистика доступна по адресу http://127.0.0.8/wallarm-status.

Если вы настроили отображение статистики так, чтобы для этого использовался нестандартный адрес, вам необходимо:

  1. Добавить параметр status_endpoint в файл /etc/wallarm/node.yaml и указать в нем новый адрес, например:

    hostname: example-node-name
    uuid: ea1xa0xe-xxxx-42a0-xxxx-b1b446xxxxxx
    ...
    status_endpoint: 'http://127.0.0.2:8082/wallarm-status'
    
  2. Внести этот адрес в файл конфигурации collectd в параметр URL. Расположение этого файла зависит от типа вашего дистрибутива:

    /etc/collectd/wallarm-collectd.conf.d/nginx-wallarm.conf
    
    /etc/collectd.d/nginx-wallarm.conf
    

Если используется нестандартный IP‑адрес или порт для Tarantool, необходимо внести эту информацию в файл настроек Tarantool. Расположение этого файла зависит от типа вашего дистрибутива:

/etc/collectd/collectd.conf.d/wallarm-tarantool.conf
/etc/collectd.d/wallarm-tarantool.conf

Если на системе с WAF‑нодой установлен SELinux, убедитесь, что он настроен или отключен. В этом руководстве для упрощения предполагается, что SELinux отключен.

Вид метрик

Как выглядят метрики collectd

Метрики collectd имеют следующий вид:

host/plugin[-plugin_instance]/type[-type_instance]

Где:

  • host — полное доменное имя хоста (англ. Fully Qualified Domain Name, FQDN), для которого получается метрика.

  • plugin — имя плагина, с помощью которого получается метрика.

  • -plugin_instance — инстанс плагина, если он есть.

  • type — тип значения метрики. Допустимые типы:

    • counter,
    • derive,
    • gauge.

    Подробная информация о типах значения доступна здесь.

  • -type_instance — инстанс типа (тип инстанса эквивалентен величине, метрику для которой мы хотим получить), если он есть.

Полная расшифровка иерархии в имени метрики доступна здесь.

Как выглядят метрики collectd, специфичные для Вебмониторэкс

На WAF‑ноде используется collectd, собирающий метрики, специфичные для Вебмониторэкс.

Метрики для NGINX с модулем Вебмониторэкс, собираемые collectd, имеют следующий вид:

host/curl_json-wallarm_nginx/type-type_instance

Метрики для модуля постаналитики, собираемые collectd, имеют следующий вид:

host/wallarm-tarantool/type-type_instance

Примеры метрик

Для хоста node.example.local с WAF‑нодой:

  • Метрика, описывающая количество обработанных запросов:

    node.example.local/curl_json-wallarm_nginx/gauge-abnormal
    
  • Метрика, описывающая задержку экспорта в Tarantool в секундах:

    node.example.local/wallarm-tarantool/gauge-export_delay
    

Полный список метрик, которые могут использоваться для мониторинга, доступен здесь.

Способы получения метрик

Вы можете собрать метрики с WAF‑ноды несколькими способами:

  • С помощью выгрузки данных напрямую из collectd.

    Такую выгрузку можно настроить следующим образом:

    • С помощью плагина Network для collectd.

      Этот плагин позволяет collectd выгружать метрики с WAF‑ноды на сервер collectd или в базу данных InfluxDB.

      InfluxDB

      Может использоваться для агрегации метрик, поступающих от collectd и других источников данных, с их последующей визуализацией (например, с помощью системы мониторинга Grafana).

    • С помощью одного из write‑плагинов для collectd.

      Например, плагин write_graphite позволяет передавать собранные данные в Graphite.

      Graphite

      Может использоваться в качестве источника данных для систем мониторинга и визуализации (например, Grafana).

    Этот способ получения метрик поддерживается WAF‑нодами, которые:

    • развернуты в облаках Amazon AWS, Google Cloud;
    • установлены на Linux для платформ NGINX/NGINX Plus и Kong.
  • С помощью выгрузки данных утилитой collectd-nagios.

    Эта утилита получает значение заданной метрики от collectd (на момент вызова утилиты) и представляет его в Nagios‑совместимом формате.

    Этим способом вы можете выгружать метрики с WAF‑ноды в системы мониторинга Nagios или Zabbix.

    Этот способ поддерживается всеми вариантами WAF‑нод.

  • С помощью отправки уведомлений от collectd при достижении заданного порогового значения какой-либо метрикой.

    Этот способ получения метрик поддерживается всеми вариантами WAF‑нод.