Настройка мониторинга Меганоды через Zabbix¶
В этом документе приводится пример настройки мониторинга Мегапаноды с помощью Zabbix с помощью утилиты collectd-nagios
.
Необходимые условия
Предполагается, что:
- Установлен NGINX/Angie и зависмости. Подробнее об установке
- Сервис
collectd
настроен на выгрузку метрик через сокет домена Unix. Подробнее о настройке - На хост Docker
10.0.30.30
уже установлен Docker Community Edition. - Меганода развернута и настроена Подробнее об установке Меганоды.
1. Включение режима мониторинга на ноде¶
- Откройте файл
/etc/nginx/conf.d/default.conf
:
sudo vim /etc/nginx/conf.d/default.conf
sudo vim /etc/angie/conf.d/default.conf
- Добавьте в блок
http
,server
илиlocation
строкуwallarm_mode monitoring;
.
Пример файла /etc/nginx/conf.d/default.conf
server {
# порт, для которого фильтруется трафик
listen 80;
# домен, для которого фильтруется трафик
server_name localhost;
# режим работы ноды Вебмониторэкс
wallarm_mode monitoring;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
Пример файла /etc/angie/conf.d/default.conf
server {
# порт, для которого фильтруется трафик
listen 80;
# домен, для которого фильтруется трафик
server_name localhost;
# режим работы ноды Вебмониторэкс
wallarm_mode monitoring;
location / {
root /usr/share/angie/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/angie/html;
}
}
В режиме monitoring
нода Вебмониторэкс анализирует все входящие запросы, но не блокирует их, если обнаружит признаки атаки. Мы рекомендуем использовать ноду в режиме monitoring
в течение нескольких дней после установки и затем переключить в режим block
. [Рекомендации по настройке режима фильтрации запросов →][waf-mode-recommendations]
2. Перезапуск NGINX/Angie¶
Используйте следующие команды для NGINX/Angie, чтобы перезапустить, активировать автостарт при перезагрузке сервера и проверить статус:
sudo systemctl restart nginx
sudo systemctl enable nginx
sudo systemctl status nginx
sudo systemctl restart angie
sudo systemctl enable angie
sudo systemctl status angie
Сервер NGINX/Angie должен корректно перезапуститься и находиться в состоянии active
.
3. Настройка выгрузки метрик в Zabbix¶
Развертывание Zabbix agent¶
Для развертывания Zabbix выполните следующую команду:
sudo apt install zabbix-agent
Теперь у вас есть работающая система мониторинга Zabbix.
Настройка Zabbix agent для работы с Zabbix Applianc¶
Внесите изменения в файл конфигурации агента: /etc/zabbix/zabbix_agentd.conf
:
Содержимое файла /etc/zabbix/zabbix_agentd.conf
# Стандартные настройки zabbix agent
PidFile=/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix-agent/zabbix_agentd.log
LogFileSize=0
Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf
# Нужно прописать
Server= ip zabbix server куда передаете данные
ServerActive= ip zabbix server куда передаете данные
Hostname= имя вашего хоста где zabbix agent
# Метрики tarantool для передачи на сервер - надо прописать Hostname, который прописали выше
UserParameter=wallarm-tarantool-counter-last_request_id, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n wallarm-tarantool/counter-last_request_id -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm-tarantool-derive-export_drops, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n wallarm-tarantool/derive-export_drops -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm-tarantool-gauge-export_delay, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n wallarm-tarantool/gauge-export_delay -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm-tarantool-gauge-export_drops, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n wallarm-tarantool/gauge-export_drops -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm-tarantool-gauge-export_drops_flag, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n wallarm-tarantool/gauge-export_drops_flag -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm-tarantool-gauge-last_request_id, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n wallarm-tarantool/gauge-last_request_id -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm-tarantool-gauge-timeframe_size, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n wallarm-tarantool/gauge-timeframe_size -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
# Метрики для nginx для передачи на сервер - надо прописать Hostname, который прописали выше
UserParameter=wallarm_nginx-gauge-abnormal, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-abnormal -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm_nginx-gauge-api_errors, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-api_errors -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm_nginx-custom_ruleset_apply_time, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-custom_ruleset_apply_time -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm_nginx-gauge-custom_ruleset_id, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-custom_ruleset_id -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm_nginx-gauge-db_apply_time, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-db_apply_time -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm_nginx-gauge-db_id, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-db_id -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm_nginx-gauge-lom_apply_time, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-lom_apply_time -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm_nginx-gauge-lom_id, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-lom_id -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm_nginx-gauge-memfaults, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-memfaults -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm_nginx-gauge-proton_errors, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-proton_errors -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm_nginx-gauge-proton_instances-failed, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-proton_instances-failed -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm_nginx-gauge-proton_instances-fallback, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-proton_instances-fallback -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm_nginx-gauge-proton_instances-success, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-proton_instances-success -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm_nginx-gauge-proton_instances-total, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-proton_instances-total -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm_nginx-gauge-requests_lost, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-requests_lost -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm_nginx-gauge-segfaults, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-segfaults -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm_nginx-gauge-softmemfaults, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-softmemfaults -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
UserParameter=wallarm_nginx-gauge-tnt_errors, sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n curl_json-wallarm_nginx/gauge-tnt_errors -H Hostname | sed -n "s/.*value\=\(.*\);;;;.*/\1/p"
Настройка сбора метрик с помощью Zabbix‑агента¶
Подключитесь к ноде и настройте сбор метрик с помощью Zabbix‑агента. Для этого выполните следующие действия на хосте с нодой:
1. Установка утилиты collectd_nagios
¶
Для этого выполните следующую команду:
sudo apt install --no-install-recommends collectd-utils
sudo yum install collectd-utils
2. Добавьте возможность запускать утилиту collectd-nagios
с повышенными привилегиями от имени пользователя zabbix
¶
Для этого с помощью утилиты visudo
добавьте следующую строку в файл /etc/sudoers
:
zabbix ALL=(ALL:ALL) NOPASSWD:/usr/bin/collectd-nagios
Это позволит пользователю zabbix
запускать утилиту collectd-nagios
с правами суперпользователя с помощью утилиты sudo
без ввода пароля.
Запуск collectd-nagios
с правами суперпользователя
Утилита должна запускаться с правами суперпользователя, поскольку она использует сокет collectd
(сокет домена Unix) для получения данных. Доступ к этому сокету есть только у суперпользователя.
Также, в качестве альтернативы добавлению пользователя zabbix
в sudoers
, вы можете настроить Zabbix‑агент так, чтобы он запускался с правами пользователя root
(это может представлять угрозу безопасности, поэтому использовать этот способ не рекомендуется). Это достигается с помощью включения опции AllowRoot
в конфигурационном файле агента.
3. Убедитесь, что пользователь zabbix
может получать значения метрик от collectd
¶
Для этого выполните следующую тестовую команду ноде:
sudo -u zabbix sudo /usr/bin/collectd-nagios -s /opt/wallarm/var/run/wallarm-collectd-unixsock -n wallarm-tarantool/gauge-timeframe_size -H HOSTNAME
Проверка доступности метрики:
zabbix_get -s IP_ZABBIX_AGENT -p 10050 -k "wallarm_nginx-gauge-lom_id"
zabbix_get -s IP_ZABBIX_AGENT -p 10050 -k "wallarm_angie-gauge-lom_id"
5. Перезапустите агент¶
Для этого выполните одну из следующих команд:
sudo service zabbix-agent restart
sudo systemctl restart zabbix-agent
5. Импортируйте шаблон в Zabbix Client¶
Для получения шаблона свяжитесь с технической поддержкой Вебмониторэкс.
Настройка завершена. Теперь вы можете осуществлять мониторинг пользовательских параметров с помощью Zabbix.