Утилита сбора ссылок (URL) из nginx и apache для мониторинга. Вывод результатов в формате Zabbix Low Level Discovery.
Для версии Zabbix ниже 4.2 используйте опцию --use-data-property
(см.раздел Опции).
- Копируем исполняемый файл
vhdt
в/usr/bin
. - Создаем файл конфигурации:
cp vhost-discovery.conf /etc/zabbix/zabbix-agent.d/
- Даём необходимые права:
chmod +x /usr/bin/vhdt
chown -R zabbix: /var/log/zabbix
setfacl -Rm u:zabbix:rx /etc/nginx/conf.d
setfacl -Rm u:zabbix:rx /etc/nginx/sites-enabled
- Добавляем на Zabbix Server к хосту шаблон
Virtual Hosts
(прилагается в виде файлаvhost-discovery-template.xml
). Шаблон идет с дистрибутивом утилиты. - (Опционально) Устанавливаем утилиту wszl tool, которая создаёт Web-сценарии на базе обнаруженных vhosts.
Утилита идет в конфиги Apache и Nginx и извлекает оттуда доменные имена и порты. На базе этих данных она формирует данные для Low Level Discovery:
- Домен
- Ссылка
Например, server_name tinyops.ru www.tinyops.ru
.
Утилита соберёт только tinyops.ru
и проигнорирует остальные значения.
Создайте тикет с обоснованием, почему вам нужны все домены кроме первого.
Если внутри конфигурации server
есть строка:
return 301 http...
и она вне директивы location
, то такой виртуальный хост не попадёт в итоговые результаты.
Для доменов с протоколом HTTP добавляет постфикс _http
. Например, для сайта http://somesite.ru
будет такая структура:
{
"{#NAME}":"somesite.ru_http",
"{#URL}":"http://somesite.ru"
}
Если в server
не указано значение для server_name
, то данный виртуальный хост игнорируется.
Опция: --work-dir
или -d
Значение по умолчанию: /etc/zabbix
Включает режим поиска файлов конфигураций в подкаталогах.
Опция: -r
Значение по умолчанию: false
Опция: --nginx-vhosts-path
или -n
Значение по умолчанию: /etc/nginx/conf.d
Опция: --apache-vhosts-path
или -a
Значение по умолчанию: /etc/httpd/conf.d
Опция: --include-custom-ports
В результатах будут также хосты вида http://somehost.ru:3823
.
Под стандартными портами понимаются: 80-й и 443-й
Опция: --ignore-by-masks
or -i
Пример:
vhdt -i "^test,rfid$,demo"
Исключит из результатов домены с именами, которые начинаются на test
или
заканчиваются на rfid
или содержат подстроку demo
.
До версии Zabbix 4.2 использовался JSON формат такого вида:
{
"data": []
}
В поздних версиях отказались от свойства data
.
Чтобы включить поддержку старого формата используйте опцию --use-data-property
[
{
"{#NAME}":"somesite.ru",
"{#URL}":"https://somesite.ru"
},
{
"{#NAME}":"15.128.42.21:2231",
"{#URL}":"http://15.128.42.21:2231"
}
]
Утилита пишет свой лог в файл /var/log/zabbix/vhdt.log
.
Запуск утилиты от пользователя zabbix
:
sudo -u zabbix /usr/bin/vhdt
Решение:
setfacl -Rm u:zabbix:rx /etc/nginx/conf.d
или
setfacl -Rm u:zabbix:rx /etc/nginx/sites-enabled
Можно управлять уровнем логирования через флаг --log-level
.
Поддерживаемые значения: debug
, error
, warn
, trace
, info
, off
--log-level=off
Спасибо за поддержку проекта, тестирование и обратную связь: