Выгрузка метрик с помощью write‑плагина collectd
в Graphite¶
В этом документе приводится пример использования write‑плагина write_graphite
для экспорта метрик в Graphite.
Схема работы примера¶
Пример метрики
В этом примере рассматривается работа с единичной метрикой curl_json-wallarm_nginx/gauge-abnormal
, которая показывает количество запросов, обработанных нодой Вебмониторэкс.
В этом документе используется следующая схема развертывания:
-
WAF‑нода Вебмониторэкс развернута на хосте, доступном по IP‑адресу
10.0.30.5
и полному доменному имениnode.example.local
.Плагин
write_graphite
дляcollectd
на WAF‑ноде настроен следующим образом:- Все метрики отсылаются на сервер
10.0.30.30
, слушающий на порту2003/TCP
. - Поскольку некоторые специфичные для Вебмониторэкс плагины для
collectd
поддерживают несколько инстансов, плагинwrite_graphite
содержит параметрSeparateInstances
. Значениеtrue
у этого параметра означает, что плагин может работать с несколькими инстансами.
Полный список параметров плагина доступен здесь.
- Все метрики отсылаются на сервер
-
На отдельном хосте с IP‑адресом
10.0.30.30
(далее — хост Docker) развернуты сервисыgraphite
иgrafana
в виде Docker‑контейнеров.Сервис
graphite
с Graphite настроен следующим образом:- Слушает входящие соединения на порту
2003/TCP
, на которыйcollectd
будет отправлять метрики WAF‑ноды. - Слушает входящие соединения на порту
8080/TCP
, через который будет происходить коммуникация с Grafana. - Сервис находится в общей Docker‑сети
sample-net
с сервисомgrafana
.
Сервис
grafana
c Grafana настроен следующим образом:- Веб-консоль Grafana доступна по адресу
http://10.0.30.30:3000
. - Сервис находится в общей Docker‑сети
sample-net
с сервисомgraphite
.
- Слушает входящие соединения на порту
Настройка выгрузки метрик в Graphite¶
Необходимые условия
Предполагается, что:
- На хост Docker
10.0.30.30
уже установлены Docker Community Edition и утилитаdocker-compose
. - WAF‑нода
node.example.local
уже развернута, настроена, доступна для дальнейшей настройки (например, по протоколу SSH) и работает.
Развертывание Graphite и Grafana¶
Разверните Graphite и Grafana на хосте Docker:
-
Создайте файл
docker-compose.yaml
со следующим содержимым:version: "3" services: grafana: image: grafana/grafana container_name: grafana restart: always ports: - 3000:3000 networks: - sample-net graphite: image: graphiteapp/graphite-statsd container_name: graphite restart: always ports: - 8080:8080 - 2003:2003 networks: - sample-net networks: sample-net:
-
Соберите сервисы с помощью команды
docker-compose build
. -
Запустите сервисы с помощью команды
docker-compose up -d graphite grafana
.
На этом этапе у вас должны быть запущены Graphite, готовый принимать метрики от collectd
, и Grafana, готовая осуществлять мониторинг и визуализацию данных, хранящихся в Graphite.
Настройка collectd
¶
Настройте collectd
на выгрузку метрик в Graphite:
-
Подключитесь к WAF‑ноде (например, с помощью протокола SSH). Убедитесь, что вы работаете под аккаунтом
root
или другим аккаунтом с правами суперпользователя. -
Создайте файл
/etc/collectd/wallarm-collectd.conf.d/export-to-graphite.conf
со следующим содержимым:LoadPlugin write_graphite <Plugin write_graphite> <Node "node.example.local"> Host "10.0.30.30" Port "2003" Protocol "tcp" SeparateInstances true </Node> </Plugin>
Здесь задаются:
- Имя хоста, с которого собираются метрики (
node.example.local
). - Сервер, на который необходимо отправлять метрики (
10.0.30.30
). - Порт сервера (
2003
) и протокол (tcp
). - Логика передачи данных, при которой данные одного инстанса плагина отделены от данных другого инстанса (
SeparateInstances true
).
- Имя хоста, с которого собираются метрики (
-
Перезапустите сервис
collectd
, выполнив команду, соответствующую операционной системе, на которой установлена WAF‑нода:sudo service wallarm-collectd restart
sudo systemctl restart wallarm-collectd.service
Теперь Graphite получает все метрики WAF‑ноды. Вы можете визуализировать интересующие вас метрики и осуществлять их мониторинг с помощью Grafana.