Получение метрик¶
Выгрузка метрик напрямую из collectd¶
Вы можете напрямую выгружать метрики, собранные collectd, в инструменты, которые поддерживают работу с потоком данных в формате collectd.
Внимание
Все дальнейшие действия необходимо выполнять с правами суперпользователя (например, root).
Выгрузка метрик с помощью плагина Network¶
Настройте и подключите плагин Network к collectd:
-
Создайте в директории
/etc/collectd/collectd.conf.d/файл конфигурации для плагина с расширением.conf(например,export-via-network.conf) и следующим содержимым:LoadPlugin network <Plugin "network"> Server "Server IPv4/v6 address or FQDN" "Server port" </Plugin>Согласно этому конфигурационному файлу, плагин будет запускаться при старте
collectd, работать в режиме клиента и пересылать данные о метриках WAF‑ноды на указанный сервер. -
Настройте сервер, который будет принимать данные от collectd-клиента. Необходимые шаги по настройке зависят от выбранного сервера (примеры:
collectd, InfluxDB).
Работа с плагином Network
Плагин Network работает с использованием протокола UDP (см. документацию плагина). Убедитесь, что на сервере разрешена работа по протоколу UDP.
-
Перезапустите сервис
collectd, выполнив команду, соответствующую операционной системе, на которой установлена WAF‑нода:sudo service wallarm-collectd restartsudo systemctl restart wallarm-collectd.service
Пример
Вы можете ознакомиться с примером выгрузки метрик с помощью плагина Network в InfluxDB с последующей визуализацией метрик в Grafana.
Выгрузка метрик с помощью write‑плагина collectd¶
Для того, чтобы настроить выгрузку метрик с помощью write‑плагина collectd, обратитесь к документации соответствующего плагина.
Пример
Для получения базовых сведений об использовании write‑плагинов, вы можете ознакомиться с примером выгрузки метрик в Graphite с последующей визуализацией метрик в Grafana.
Выгрузка метрик с помощью утилиты collectd-nagios¶
Для выгрузки метрик с помощью этого способа:
-
Установите утилиту
collectd-nagiosна хост с WAF‑нодой, выполнив одну из следующих команд (для WAF‑ноды, установленной на Linux):sudo apt install --no-install-recommends collectd-utilssudo yum install collectd-utilsОбраз Docker
Образ Docker c WAF‑нодой уже содержит в себе предустановленную утилиту
collectd-nagios. -
Убедитесь, что у вас есть возможность запускать эту утилиту с повышенными правами либо от имени пользователя суперпользователя (например,
root), либо с помощьюsudoпутем добавления необходимых пользователей в файлsudoersс директивойNOPASSWD.Работа с Docker‑контейнером
При вызове утилиты
collectd-nagiosиз Docker‑контейнера с WAF‑нодой повышение прав не требуется. -
Подключите и настройте плагин
UnixSockдля передачи метрикcollectdчерез сокет домена Unix. Для этого создайте файл/etc/collectd/collectd.conf.d/unixsock.confсо следующим содержимым:LoadPlugin unixsock <Plugin unixsock> SocketFile "/var/run/wallarm-collectd-unixsock" SocketGroup "root" SocketPerms "0770" DeleteSocket true </Plugin> -
Перезапустите сервис
collectd, выполнив команду, соответствующую операционной системе, на которой установлена WAF‑нода:sudo service wallarm-collectd restartsudo systemctl restart wallarm-collectd.service -
Получите значения требуемых метрик, выполнив следующую команду:
/usr/bin/collectd-nagios -s /var/run/wallarm-collectd-unixsock -n <название метрики без указания имени хоста> -H <полное доменное имя хоста с WAF‑нодой, на котором запускается утилита>docker exec <имя контейнера> /usr/bin/collectd-nagios -s /var/run/wallarm-collectd-unixsock -n <название метрики без указания имени хоста> -H <идентификатор контейнера>Получение идентификатора контейнера Docker
Вы можете узнать значение идентификатора контейнера, выполнив команду
docker ps(см. столбец «CONTAINER ID»).
Настройка порогов для утилиты collectd-nagios
При необходимости вы можете указать диапазон значений, при которых утилита collectd-nagios будет возвращать статус WARNING или CRITICAL с помощью параметров -w и -c (подробная информация доступна в документации утилиты).
Примеры вызова утилиты:
-
Чтобы получить значение метрики
curl_json-wallarm_nginx/gauge-abnormalна Linux‑хостеnode.example.localс WAF‑нодой, необходимо выполнить следующую команду:/usr/bin/collectd-nagios -s /var/run/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-abnormal -H node.example.local -
Чтобы получить значение метрики
curl_json-wallarm_nginx/gauge-abnormal(на момент вызоваcollectd-nagios) для WAF‑ноды, запущенной в Docker‑контейнере с именемwallarm-nodeи с идентификатором95d278317794, необходимо выполнить следующую команду:docker exec wallarm-node /usr/bin/collectd-nagios -s /var/run/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-abnormal -H 95d278317794
Примеры
Для получения базовых сведений об использовании утилиты collectd-nagios, вы можете ознакомиться с примерами выгрузки метрик:
Отправка уведомлений от collectd¶
Уведомления настраиваются в файле:
/etc/collectd/wallarm-collectd.conf.d/traps.conf
/etc/collectd.d/traps.conf
Общее описание работы уведомлений доступно здесь.
Подробное описание процесса настройки уведомлений доступно здесь.
Возможные методы для отправки уведомлений:
-
NSCA и NSCA-ng,
-
SNMP TRAP,
-
почтовые сообщения,
-
собственные скрипты.
Выгрузка метрик в формате prometheus¶
Метрики, которые отслеживаются в модуле постаналитики, можно получить в формате prometheus, для этого используются переменные окружения:
-
WMX_TARANTOOL_METRICS_HOST -
WMX_TARANTOOL_METRICS_PORT
С помощью переменных можно управлять адресом и портом HTTP-сервера с метриками.
Значения по умолчанию
Если переменные не заданы, то используются значения по умолчанию:
- Хост:
127.0.0.1. - Порт:
3314.
Для определения переменных используйте конфигурационный файл:
Метрики Prometheus доступны по пути /metrics/prometheus:
Пример
$ curl http://127.0.0.1:3314/metrics/prometheus
# HELP export_drops_flag Have dropped before export in the past minute?
# TYPE export_drops_flag gauge
export_drops_flag 0
# HELP last_request_id Last request ID
# TYPE last_request_id gauge
last_request_id 1
# HELP export_drops Dropped before export
# TYPE export_drops gauge
export_drops 0
# HELP timeframe_size Time between first and last stored requests
# TYPE timeframe_size gauge
timeframe_size 1
# HELP export_delay Export delay
# TYPE export_delay gauge
export_delay 0