У меня есть сценарий мониторинга, в котором я хочу отслеживать некоторые URL-адреса HTTP, которые находятся в локальной сети, и отправлять результаты на сервер Zabbix в Интернете. Zabbix можно использовать для мониторинга URL-адресов HTTP без использования агентов, тогда главный сервер должен отслеживать URL-адреса HTTP непосредственно в сценариях веб-мониторинга, и эти URL-адреса должны быть видны для сервера Zabbix. Но в моем сценарии службы HTTP находятся за NAT, поэтому я должен использовать «активные агенты Zabbix» для их мониторинга. Я не смог найти ни одного элемента в Zabbix агентах для этой цели. Кто-нибудь знает, как мне выполнить эту задачу?
РЕДАКТИРОВАТЬ: Я знаю, что zabbix можно использовать для агрегированного мониторинга локальных хостов, но прокси можно использовать для отслеживаемых элементов хостов. Я не смог найти ни одного элемента для мониторинга URL-адресов HTTP на хостах (активных или пассивных).
С уважением, Саджад
Вот что такое Zabbix доверенное лицо для.
Вы устанавливаете прокси Zabbix внутри сети, где он может подключаться к отслеживаемым устройствам, затем на сервере Zabbix вы добавляете прокси и выбираете хосты, которые будут отслеживаться через прокси.
Увидеть документация для получения полной информации о настройке Zabbix прокси.
Вы можете создать настраиваемый пользовательский параметр, в котором запускайте curl по URL-адресу, который вы хотите отслеживать. Что-то такое:
UserParameter=host.url[*],curl -iLs $1 | grep -c "HTTP/1.1 200"
Более подробную информацию вы можете увидеть в документация.
Zabbix прокси PROXY-A должен быть активен.
КОМПЬЮТЕР-Б должен быть активен.
1) Включите EnableRemoteCommands в конфигурации zabbix-agent на сервере: sed -i 's/# EnableRemoteCommands=0/EnableRemoteCommands=1/' /path/to/zabbix_agentd.conf
2) Создайте UserParameter в конфигурации zabbix-agent, чтобы проверить URL: UserParameter=check.url[*],curl -s -o /dev/null -w '%{http_code}' $1
3) Перезапустите Zabbix Agent: systemctl restart zabbix-agent.service
Теперь вы можете проверить любой URL:
zabbix_get -s server-IP-or-DNS -k 'check.url[https://www.google.com]'
200
Если возвращается 200, URL-адрес в порядке. Вы можете проверить весь код состояния HTTP Вот
При необходимости вы можете добавить таймаут к команде curl --connect-timeout 30
# в секундах