Благодаря Zabbix вы можете проверять несколько аспектов доступности веб-сайтов.
Для выполнения веб-мониторинга Zabbix сервер должен быть изначально сконфигурирован с поддержкой cURL (libcurl).
Для активации веб-мониторинга вам необходимо определить веб-сценарии. Веб-сценарий состоит из одного или нескольких запросов HTTP, или "шагов". Шаги периодически выполняются Zabbix сервером в предопределённом порядке. Если узел сети наблюдается через прокси, тогда шаги выполняются этим прокси.
Веб-сценарии привязываются к узлам сети/шаблонам тем же образом, как элементы данных, триггеры и т.д. Это означает, что веб-сценарии можно создавать на уровне шаблона и далее применять к нескольким узлам сети одним движением.
Каждым веб-сценарием собирается следующая информация:
На каждом шаге веб-сценария собирается следующая информация:
Для получения более детальных сведений смотрите элементы данных веб мониторинга.
Собранные данные с выполненных веб-сценариев хранятся в базе данных. Эти данные автоматически используются для графиков, триггеров и оповещений.
Zabbix может также проверять, содержит ли полученная HTML страница заданную строку. Он может выполнить эмуляцию входа и следовать пути, эмулируя нажатия мышкой на странице.
Веб-мониторинг в Zabbix поддерживает и HTTP, и HTTPS. При выполнении веб-сценария, Zabbix сервер может следовать перенаправлениям (смотрите опцию Следовать перенаправлениям ниже). Максимальное количество перенаправлений жёстко задано в исходном коде и равно 10 (используется cURL опция CURLOPT_MAXREDIRS). Все cookies запоминаются на протяжении выполнения одного сценария.
Для настройки веб-сценария:
Вкладка Сценарий позволяет вам настроить общие параметры веб-сценария.
Все обязательные поля ввода отмечены красной звёздочкой.
Параметры сценария:
Параметр | Описание |
---|---|
Имя | Уникальное имя сценария. Поддерживаются пользовательские макросы. Обратите внимание, что если используется пользовательские макросы, то эти макросы останутся нераскрытыми в именах элементов данных веб-мониторинга. |
Интервал обновления | Как часто сценарий будет выполняться.br>Поддерживаются суффиксы времени, например, 30s, 1m, 2h, 1d. Поддерживаются пользовательские макросы Обратите внимание, что если используется пользовательский макрос и его значение изменилось (к примеру, 5m → 30s), следующая проверка будет выполнена в соответствии с предыдущим значением (в данном примере - более далёком будущем). |
Попыток | Количество попыток выполнения шагов веб-сценария. В случае сетевых проблем (превышено время ожидания, отсутствие подключения и прочее) Zabbix может повторять выполнение шагов несколько раз. Указанное количество будет одинаково действовать для каждого шага сценария. Можно указать до 10 попыток, значение по умолчанию равно 1. Примечание: Zabbix не повторит шаг из-за ошибочного кода ответа или несовпадения необходимой строки. |
Агент | Выбор агента клиента. Zabbix будет представляться выбранным браузером. Полезно для мониторинга Веб-сайтов, которые генерируют различное содержимое для разных браузеров. В этом поле можно использовать пользовательские макросы. |
HTTP прокси | Вы можете указать необходимый HTTP прокси, следуя формату: [протокол://][имя_пользователя[:пароль]@]прокси.example.com[:порт] .Это задаёт опцию cURL CURLOPT_PROXY. Можно использовать опциональный префикс протокол:// , чтобы задать альтернативные протоколы прокси (поддержка префикса протокола добавлена в cURL 7.21.7). Если протокол не указан, прокси будет рассматриваться как HTTP прокси.По умолчанию будет использоваться порт 1080. Если указано, прокси заменит переменные окружения, связанные с прокси - такие как http_proxy, HTTPS_PROXY. Если не указано, переменные окружения не будут заменены. Введённое значение передается "как есть", проверка корректности данных не производится. Вы также можете указать адрес SOCKS прокси. Если вы укажете ошибочный протокол, подключение будет неуспешным и элемент данных станет неподдерживаемым. Обратите внимание, что для HTTP прокси поддерживается только простая аутентификация. В этом поле можно использовать пользовательские макросы. |
Переменные | Переменные, которые можно использовать в шагах сценария (URL, переменные post). Переменные имеют следующий формат: {макрос1}=значение1 {макрос2}=значение2 {макрос3}=regex:<регулярное выражение> Например: {username}=Alexei {password}=kj3h5kJ34bd {hostid}=regex: hostid is ([0-9]+) На эти макросы затем можно ссылаться в шагах сценария в виде {username}, {password} и {hostid}. Zabbix автоматически заменит их на актуальные значения. Обратите внимание, что переменным с regex: требуется по крайней мере один шаг, чтобы получить значение из регулярного выражения, поэтому извлечённое значение можно применять только в последующих шагах.Если часть значения начинается с regex: , тогда последующая часть обрабатывается как регулярное выражение, которое будет искать указанную часть веб-страницы, и если найдёт, запомнит найденное значение в переменную. Должна присутствовать как минимум одна подгруппа так, чтобы найденные значения можно было извлечь.Поддерживаются пользовательские макросы и {HOST.*} макросы. Переменные автоматически URL кодируются, когда используются в полях запросов или в данных формы для переменных post, но их необходимо вручную URL кодировать, когда они используются в сыром post или напрямую в URL. |
Заголовки | HTTP заголовки, которые будут отправлены при выполнении запроса. Могут использоваться заголовки по умолчанию и пользовательские. Заголовки, использующие настройки по умолчанию, назначаются в зависимости от типа Агента, выбранного из выпадающего списка на уровне сценария, и будут применены ко всем шагам, если только не переопределены пользовательскими на уровне шага. Следует заметить, что определение заголовка на уровне шага автоматически уничтожает все ранее определённые заголовки, за исключением заголовка 'User-Agent' по умолчанию, который назначается при выборе из выпадающего списка на уровне сценария. Тем не менее, даже заголовок 'User-Agent' по умолчанию может быть переопределён путём указания его на уровне шага. Чтобы убрать заголовок, заданный на уровне сценария, следует на уровне шага указать имя заголовка, сопроводив его пустым значением. Заголовки должны быть перечислены, используя тот же синтаксис, как они могут появиться в HTTP протоколе, опционально можно использовать некоторые дополнительные возможности, поддерживаемые опциями cURL CURLOPT_HTTPHEADER. Например: Accept-Charset: utf-8 Accept-Language: en-US Content-Type: application/xml; charset=utf-8 Поддерживаются пользовательские макросы и {HOST.*} макросы. |
Активирован | Сценарий активирован, если параметр отмечен, в противном случае - деактивирован. |
Обратите внимание, что при редактировании существующего сценария, в диалоге будут доступны две дополнительные кнопки:
(Клонировать) | Создание другого сценария на основе свойств существующего. |
(Очистить историю и динамику изменений) |
Удаление у сценария данных истории и динамики изменений. Эта опция заставит сервер выполнить сценарий сразу после удаления данных. |
Если поле HTTP прокси оставить пустым, можно воспользоваться другим способом указать HTTP прокси, для этого необходимо задать переменные окружения.
Для HTTP проверок - укажите переменную окружения http_proxy для пользователя Zabbix сервера. Например, http_proxy=http://ip_прокси:порт_прокси
.
Для HTTPS проверок - укажите переменную окружения HTTPS_PROXY. Например, HTTPS_PROXY=http://ip_прокси:порт_прокси
. Более подробную информацию можно получить, выполнив в shell команду # man curl.
Вкладка Шаги позволит вам настроить шаги веб-сценария. Чтобы добавить шаг веб-сценария, нажмите на Добавить в блоке Шаги.
Секретные пользовательские макросы не должны использоваться в URL, так как они будут раскрыты в "******".
Параметры шага:
Параметр | Описание |
---|---|
Имя | Уникальное имя шага. Поддерживаются пользовательские макросы. Обратите внимание что если используется пользовательские макросы, то эти макросы останутся нераскрытыми в именах элементов данных веб-мониторинга. |
URL | URL для подключения и получения данных. Например: https://www.example.com http://www.example.com/download Имена доментов можно указывать Юникод символами. Они автоматически конвертируются методом punycode в ASCII при выполнении шага веб-сценария. Кнопку Анализ можно использовать, чтобы отделить из URL опциональные поля запроса (например, ?name=Admin&password=mypassword), переместив атрибуты и значения в Поля запроса, чтобы URL кодировка выполнялась автоматически. Переменные можно использовать в URL, воспользовавшись синтаксисом {макрос}. Переменные можно URL кодировать вручную, используя {{macro}.urlencode()} синтаксис. Поддерживаются пользовательские макросы и {HOST.*} макросы. Ограничено 2048 символами. |
Поля запроса | Переменные HTTP GET для URL. Задаются в виде пар атрибутов и значений. Значения URL кодируются автоматически. Значения из переменных сценария, пользовательских макросов или {HOST.*} макросов раскрываются и затем URL кодируются автоматически. При использовании {{макрос}.urlencode()} синтаксиса будет выполнена двойная URL кодировка этих переменных. Поддерживаются пользовательские макросы и {HOST.*} макросы. |
Post | Переменные HTTP POST. В режиме Данные формы задаются в виде пар атрибутов и значений. Значения URL кодируются автоматически. Значения из переменных сценария, пользовательских макросов или {HOST.*} макросов раскрываются и затем URL кодируются автоматически. В режиме Сырые данные атрибуты/значения отображаются в одной строке и объединяются через символ &. Сырые значения можно URL кодировать/декодировать вручную, используя синтаксис {{макрос}.urlencode()} или {{макрос}.urldecode()}. Например: id=2345&userid={user} Если {user} задан переменной на уровне веб-сценария, он будет заменён своим значением при выполнении шага. Если вы желаете URL кодировать значение, замените {user} на {{user}.urlencode()}. Поддерживаются пользовательские макросы и {HOST.*} макросы. |
Переменные | Список переменных на уровне шага, которые можно использовать в GET и POST функциях. Задаются в виде пар атрибутов и значений. Переменные на уровне шага переопределяют переменные уровня сценария и переменные из предыдущих шагов. Однако, значение переменной уровня шага влияет только на последующие шаги (а не на текущий шаг). Такие переменные имеют следующий формат: {макрос}=значение {макрос}=regex:<регулярное выражение> Более подробную информацию вы найдете в описании переменных уровня сценария. Переменные автоматически URL кодируются, когда используются в полях запросов или в данных формы для переменных post, но их необходимо вручную URL кодировать, когда они используются в сыром post или напрямую в URL. |
Заголовки | Пользовательские HTTP заголовки, которые будут отправлены при выполнении запроса. Задаются в виде пар атрибутов и значений. Заголовок, заданный на уровне шага, будет использоваться для этого конкретного шага. Следует заметить, что при задании заголовка на уровне шага автоматически уничтожаются все ранее заданные заголовки, за исключением заголовков 'User-Agent' по умолчанию, назначенных при выборе из выпадающего списка на уровне сценария. Тем не менее, даже заголовок 'User-Agent' по умолчанию может быть переопределён путём назначения ему значения на уровне шага. Например, если указать имя заголовка без указания значения, то это удалит заголовок по умолчанию, указанный на уровне сценария. Поддерживаются пользовательские макросы и {HOST.*} макросы. Это поле задаёт опцию cURL CURLOPT_HTTPHEADER. Возможность указать пользовательские заголовки поддерживается, начиная с Zabbix 2.4. |
Следовать перенаправлениям | Отметьте для следования по HTTP перенаправлениям. Этот параметр использует опцию cURL CURLOPT_FOLLOWLOCATION. |
Режим получения | Выберите режим получения: Тело - получение только тела из HTTP ответа Заголовки - получение только заголовков из HTTP ответа Тело и заголовки - получение тела и заголовков из HTTP ответа |
Время ожидания | Zabbix не будет тратить более указанного времени при обработке URL (от 1 секунды до максимум 1 часа). В действительности же этот параметр определяет максимальное время содания подключения к URL и максимальное время для выполнения HTTP запроса. Следовательно, Zabbix не будет тратить более 2 x Время ожидания секунд на один шаг. Поддерживаются суффиксы времени, например, 30s, 1m, 1h. Поддерживаются пользовательские макросы. |
Требуемая строка | Требуемый шаблон регулярных выражений. Если полученное содержимое (HTML) не совпадает с требуемым шаблоном, то шаг будет считаться ошибочным. Если поле не заполнено, то проверка не производится. Например: Homepage of Zabbix Welcome.*admin Обратите внимание: Ссылки на регулярные выражения, созданные в веб-интерфейсе Zabbix, в этом поле не поддерживаются. Поддерживаются пользовательские макросы и {HOST.*} макросы. |
Требуемые коды состояния | Список ожидаемых кодов состояния HTTP. Если Zabbix получает код не из списка, то шаг будет считаться ошибочным. Если поле не заполнено, то проверка не производится. Например: 200,201,210-299. Поддердживаются пользовательские макросы. |
Любые изменения в шагах веб-сценариев будут сохранены только, если сам сценарий был также сохранен.
Смотрите также пример из реальной жизни, о том как можно настроить шаги веб-мониторинга.
Вкладка Теги позволяет задать теги уровня сценария.
Теги позволяют фильтровать веб-сценарии и элементы данных веб-мониторинга.
Вкладка Аутентификация позволяет вам настроить опции аутентификации сценария. Зелёная точка в имени вкладки означает, что включён какой-то тип HTTP аутентификации.
Параметры аутентификации:
Параметр | Описание |
---|---|
Аутентификация | Опции аутентификации. Нет - без использования аутентификации. Простая аутентификация - с использованием простой (basic) аутентификации. NTLM аутентификация - с использованием NTLM (Windows NT LAN Manager) аутентификации. Kerberos - с использованием Kerberos аутентификации. Смотрите также: Настройка Kerberos с Zabbix. Digest - с использованием Digest аутентификации. После выбора какого-либо метода аутентификации будут доступны доступны два дополнительных поля для ввода имени пользователя и пароля. В полях имя пользователя и пароль можно использовать пользовательские макросы. |
Проверка SSL узла | Отметьте для верификации SSL сертификата веб-сервера. Сертификат сервера будет автоматически взят из местоположения центра сертификации (CA) всей системы. Вы можете переопределить расположение CA файлов, используя параметр конфигурации SSLCALocation Zabbix сервера или прокси. Этот параметр использует опцию cURL CURLOPT_SSL_VERIFYPEER. |
Проверка SSL хоста | Отметьте для верификации, что поле Common Name или поле Subject Alternate Name сертификата веб-сервера совпадают. Этот параметр использует cURL опцию CURLOPT_SSL_VERIFYHOST. |
Файл SSL сертификата | Имя файла SSL сертификата для аутентификации клиента. Файл сертификата должен быть в формате PEM1. Если файл сертификата также содержит и закрытый ключ (private key), оставьте поле Файл SSL ключа пустым. Если ключ зашифрован, укажите пароль в поле Пароль к SSL ключу. Папка, содержащая этот файл, указывается в параметре конфигурации SSLCertLocation Zabbix сервера и прокси. В этом поле можно использовать макросы HOST.* и пользовательские макросы.Этот параметр использует опцию cURL CURLOPT_SSLCERT. |
Файл SSL ключа | Имя файла закрытого ключа (private key) SSL, который используется для аутентификации клиента. Файл закрытого ключа должен быть в формате PEM1. Папка, содержащая этот файл, указывается в параметре конфигурации SSLKeyLocation Zabbix сервера и прокси. В этом поле можно использовать макросы HOST.* и пользовательские макросы.Этот параметр использует опцию cURL CURLOPT_SSLKEY. |
Пароль к SSL ключу | Пароль к файлу закрытого ключа. В этом поле можно использовать пользовательские макросы. Этот параметр использует cURL опцию CURLOPT_KEYPASSWD. |
[1] Zabbix поддерживает файлы сертификатов и закрытых ключей только в формате PEM. В случае, если у вас имеются данные сертификата и закрытого ключа в формате файла PKCS #12 (обычно используется с расширением *.p12 или *.pfx), вы можете сгенерировать из них PEM файл, используя следующие команды:
Zabbix сервер подхватывает изменения в сертификатах без перезапуска.
Если сертификат клиента и закрытый ключ (private key) находятся в одном файле, просто укажите его в поле "Файл SSL сертификата" и оставьте поле "Файл SSL ключа" пустым. Сертификат и ключ всё ещё должны быть в формате PEM. Очень просто объединить сертификат и ключ:
Для просмотра веб-сценариев настроенных для узла сети, перейдите в Мониторинг → Узлы сети, найдите нужный узел сети в списке и нажмите на ссылку Веб в последней колонке. Нажмите на имя сценария для просмотра подробной статистики.
Обзор сценариев веб-мониторинга можно также отобразить на Мониторинг → Панель в виджете Веб-мониторинга.
Последние результаты выполнения веб-сценария доступны в разделе Мониторинг → Последние данные.
Иногда необходимо записать в журнал полученное содержимое HTML страницы. Это особенно полезно, если некоторые шаги веб-сценария завершаются с ошибкой. Для этой цели служит уровень отладки 5 (трассировка). Этот уровень можно указать в файлах конфигурации сервера и прокси или использовать опции выполнения административных функций (-R log_level_increase="http poller,N"
, где N является номером процесса). При условии, что уровень отладки 4 уже задан, расширенный мониторинг можно запустить так, как демонстрируется в следующих примерах:
# Увеличение уровня журналирования по всем http поллерам:
zabbix_server -R log_level_increase="http poller"
# Увеличение уровня журналирования по второму http поллеру:
zabbix_server -R log_level_increase="http poller,2"
Если расширенный мониторинг не требуется, его можно остановить, используя опцию -R log_level_decrease
.