Благодаря Zabbix вы можете проверять несколько аспектов доступности веб-сайтов.
Для выполнения веб-мониторинга Zabbix сервер должен быть изначально сконфигурирован с поддержкой cURL (libcurl).
Для активации веб-мониторинга вам необходимо определить веб-сценарии.Веб-сценарий состоит из одного или нескольких запросов HTTP или "шагов". Шаги периодически выполняются Zabbix сервером в предопределенном порядке. Если узел сети наблюдается через прокси, тогда шаги выполняются на этом прокси.
Веб-сценарии привязываются к узлам сети/шаблонам тем же образом как элементы данных, триггеры и т.д. Это означает, что веб-сценарии можно создавать не уровне шаблона и далее применять к нескольким узлам сети одним движением.
Каждым веб-сценарием собирается следующая информация:
На каждом шаге веб-сценария собирается следующая информация:
Для получения более детальных сведений смотрите элементы данных веб мониторинга.
Собранные данные с выполненных веб-сценариев хранятся в базе данных. Эти данные автоматически используются для графиков, триггеров и оповещений.
Zabbix может также проверять содержит ли полученная HTML страница заданную строку. Он может выполнить эмуляцию входа и следовать пути, эмулируя нажатия мышкой на странице.
Веб-мониторинг в Zabbix поддерживает и HTTP, и HTTPS. При выполнении веб-сценария, Zabbix сервер будет следовать перенаправлениям (смотрите опцию Следовать перенаправлениям ниже). Максимальное количество перенаправлений жестко задано в исходном коде и равно 10 (используется cURL опция CURLOPT_MAXREDIRS). Все cookies запоминаются на протяжении выполнения одного сценария.
Смотрите также известные проблемы по веб-мониторингу при использовании HTTPS протокола.
Для настройки веб-сценария:
Вкладка Сценарий позволяет настроить общие параметры веб-сценария.
Все обязательные поля ввода отмечены красной звездочкой.
Параметры сценария:
Параметр | Описание |
---|---|
Имя | Уникальное имя сценария. Пользовательские макросы поддерживаются. Примечание: если используются пользовательские макросы, эти макросы останутся неразрешенными в именах элементов данных веб-мониторинга. |
Интервал обновления | Как часто будет выполняться сценарий. Суффиксы времени поддерживаются, например, 30s, 1m, 2h, 1d. Пользовательские макросы поддерживаются. Примечание: если используется пользовательский макрос и его значение изменяется (например, 5m → 30s), следующая проверка будет выполнена согласно предыдущему значению (с учетом указанного примера - позже). Новые веб-сценарии будут проверяться в течение 60 секунд после их создания. |
Попытки | Количество попыток выполнения шагов веб-сценария. В случае сетевых проблем (тайм-аут, отсутствие соединения и т.д.) Zabbix может повторить выполнение шага несколько раз. Указанная цифра одинаково влияет на каждый шаг сценария. Можно указать до 10 попыток, значение по умолчанию - 1. Примечание: Zabbix не будет повторять шаг из-за неправильного кода ответа или несоответствия требуемой строки. |
Агент | Выберите клиентский агент. Zabbix будет представляться выбранным браузером. Это полезно, если сайт возвращает разное содержимое для разных браузеров. В этом поле могут использоваться пользовательские макросы. |
HTTP-прокси | Вы можете указать HTTP-прокси, используя формат [protocol://][username[:password]@]proxy.example.com[:port] .Это устанавливает параметр cURL CURLOPT_PROXY. Необязательный префикс protocol:// может использоваться для указания альтернативных протоколов прокси (поддержка префиксов протоколов добавлена в cURL 7.21.7). Если префикс не указан, прокси будет считаться HTTP-прокси.По умолчанию будет использоваться порт 1080. Если указано, прокси заменит переменные среды, связанные с прокси, такие как http_proxy, HTTPS_PROXY. Если не указано, прокси не заменит переменные среды, связанные с прокси. Введенное значение передается "как есть", проверка корректности не проводится. Вы также можете ввести адрес прокси SOCKS. Если вы укажете неправильный протокол, соединение завершится неудачно, и элемент данных станет неподдерживаемым. Примечание: только простая аутентификация поддерживается для HTTP-прокси. В этом поле могут использоваться пользовательские макросы. |
Переменные | Переменные, которые могут использоваться в шагах сценария (URL, переменные POST). Они имеют следующий формат: {macro1}=значение1 {macro2}=значение2{macro3}=regex:<регулярное выражение> Например: {username}=Alexei {password}=kj3h5kJ34bd {hostid}=regex:hostid is ([0-9]+) Макросы затем могут быть использованы в шагах как {username}, {password} и {hostid}. Zabbix автоматически заменит их на реальные значения. Обратите внимание, что переменные с regex: требуют одного шага для получения значения регулярного выражения, поэтому извлеченное значение может быть применено только на следующем шаге.Если часть значения начинается с regex: , то последующая часть рассматривается как регулярное выражение, которое ищет на веб-странице и, если найдено, сохраняет соответствие в переменной. Должна быть по крайней мере одна подгруппа, чтобы извлечь найденное значение.Поддерживаются пользовательские макросы и {HOST.*} макросы. Переменные автоматически кодируются в URL при использовании в полях запросов или данных формы для переменных POST, но должны быть закодированы вручную при использовании в "сырых" запросах 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://proxy_ip:proxy_port
.
Для HTTPS-проверок - установите переменную среды HTTPS_PROXY. Например, HTTPS_PROXY=http://proxy_ip:proxy_port
. Подробнее можно узнать, выполнив команду в оболочке: # man curl.
Вкладка Шаги позволяет настроить шаги веб-сценария. Чтобы добавить шаг веб-сценария, нажмите на Добавить в блоке Шаги.
Секретные пользовательские макросы не должны использоваться в URL, так как они будут отображаться как"******".
Параметры шага:
Параметр | Описание |
---|---|
Имя | Уникальное имя шага. |
URL | URL для подключения и получения данных. Например: https://www.google.com http://www.zabbix.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:<регулярное выражение> Более подробную информацию вы найдете в описании переменных уровня сценария. Возможность использования переменных на уровне шага поддерживается начиная с Zabbix 2.2. Переменные автоматически URL кодируются, когда используются в полях запросов или в данных формы для переменных post, но их необходимо вручную URL кодировать, когда они используются в сыром post или напрямую в URL. |
Заголовки | HTTP заголовки, которые будут отправлены при выполнении запроса. Задаются в виде пар атрибутов и значений. Заголовки на уровне шага перезаписывают заголовки уровня сценария. Например, 'User-Agent:' без наличия данных, удалит User-Agent указанный на уровне сценария. Поддерживаются пользовательские макросы и {HOST.*} макросы. Это поле задаёт CURLOPT_HTTPHEADER cURL опцию. |
Следовать перенаправлениям | Отметьте для следования по HTTP перенаправлениям. Этот параметр использует cURL опцию CURLOPT_FOLLOWLOCATION. |
Режим получения | Выберите режим получения: Тело - получение только тела с HTTP ответа Заголовки - получение только заголовков с HTTP ответа Тело и заголовки - получение тела и заголовков с HTTP ответа |
Время ожидания | Zabbix не будет тратить более указанного времени при обработке URL (максимум 1 час). В действительности же этот параметр определяет максимальное время содания подключения к URL и максимальное время для выполнения HTTP запроса. Следовательно, Zabbix не будет тратить более 2 x Время ожидания секунд на один шаг. Поддерживаются суффиксы времени, например, 30s, 1m, 1h. Пользовательские макросы поддерживаются. |
Требуемая строка | Требуемый шаблон регулярных выражений. Если полученное содержимое (HTML) не совпадает с требуемым шаблоном, то шаг будет считаться ошибочным. Если поле не заполнено, то проверка не производится. Например: Homepage of Zabbix Welcome.*admin Обратите внимание: Ссылки на регулярные выражения, созданные в веб-интерфейсе Zabbix, в этом поле не поддерживаются. Поддерживаются пользовательские макросы и {HOST.*} макросы. |
Требуемые коды состояния | Список ожидаемых кодов состояния HTTP. Если Zabbix получает код не из списка, то шаг будет считаться ошибочным. Если поле не заполнено, то проверка не производится. Например: 200,201,210-299. Поддердживаются пользовательские макросы. |
Любые изменения в шагах веб-сценариев будут сохранены только, если сам сценарий был также сохранен.
Смотрите также пример из реальной жизни, о том как можно настроить шаги веб-мониторинга.
Вкладка Теги позволяет задать теги уровня сценария.
Теги позволяют фильтровать веб-сценарии и элементы данных веб-мониторинга.
Вкладка Аутентификация позволяет вам настроить опции аутентификации сценария. Зеленая точка в имени вкладки означает, что включен какой-то тип HTTP аутентификации.
Параметры аутентификации:
Параметр | Описание |
---|---|
Аутентификация | Опции аутентификации. Пусто - без использования аутентификации. Простая аутентификация - с использованием простой аутентификации. 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. Если файл сертификата также содержит и приватный ключ, оставьте поле Файл SSL ключа пустым. Если ключ зашифрован, укажите пароль в поле Пароль к SSL ключу. Папка, содержащая этот файл указывается в параметре конфигурации SSLCertLocation Zabbix сервера и прокси. В этом поле можно использовать макросы HOST.* и пользовательские макросы.Этот параметр использует cURL опцию CURLOPT_SSLCERT. |
Файл SSL ключа | Имя файла приватного SSL ключа, который используется для аутентификации клиента. Файл приватного ключа должен быть в формате PEM1. Папка, содержащая этот файл указывается в параметре конфигурации SSLKeyLocation Zabbix сервера и прокси. В этом поле можно использовать макросы HOST.* и пользовательские макросы.Этот параметр использует cURL опцию CURLOPT_SSLKEY. |
Пароль к SSL ключу | Пароль к файлу приватного ключа. В этом поле можно использовать пользовательские макросы. Этот параметр использует cURL опцию CURLOPT_KEYPASSWD. |
[1] Zabbix поддерживает файлы сертификатов и приватных ключей только в PEM формате. В случае, если у вас имеются данные сертификата и приватного ключа в формате файла PKCS #12 (обычно используется с расширением *.p12 или *.pfx), вы можете сгенерировать из них PEM файл, используя следующие команды:
Zabbix сервер подхватывает изменения в сертификатах без перезапуска.
Если сертификат клиента и приватный ключ находятся в одном файле, просто укажите его в поле "Файл SSL сертификата" и оставьте поле "Файл SSL ключа" пустым. Сертификат и ключ все еще должны быть в формате PEM. Очень просто объединить сертификат и ключ:
Для просмотра веб-сценариев добавленных на узел сети перейдите в Мониторинг → Узлы сети, найдите нужный узел сети в списке и нажмите на ссылку Веб в последней колонке. Нажмите на имя сценария для просмотра подробной статистики.
Обзор сценариев веб-мониторинга можно также отобразить на Мониторинг → ПАНЕЛЬ в виджете Веб-мониторинга.
Последние результаты выполнения веб-сценария доступны в разделе Мониторинг → Последние данные.
Иногда необходимо записать в журнал полученное содержимое HTML страницы. Это крайне полезно, если некоторые шаги веб-сценария завершаются с ошибкой. Для этой цели служит уровень отладки 5 (трассировка). Этот уровень можно указать в файлах конфигурации сервера и прокси или использовать опции выполнения административных функций (-R log_level_increase="http poller,N"
, где N является номером процесса). При условии, что уровень отладки 4 уже задан, расширенный мониторинг можно запустить так, как демонстрируется в следующих примерах:
Увеличение уровня журналирования по всем http поллерам:
shell> zabbix_server -R log_level_increase="http poller"
Увеличение уровня журналирования по второму http поллеру:
shell> zabbix_server -R log_level_increase="http poller,2"
Если расширенный мониторинг не требуется, его можно остановить, используя -R log_level_decrease
опцию.