8. Веб-мониторинг

Обзор

Благодаря Zabbix вы можете проверять несколько аспектов доступности веб-сайтов.

Для выполнения веб-мониторинга Zabbix сервер должен быть изначально сконфигурирован с поддержкой cURL (libcurl).

Для активации веб-мониторинга вам необходимо определить веб-сценарии. Веб-сценарий состоит из одного или нескольких запросов HTTP или "шагов". Шаги периодически выполняются Zabbix сервером в предопределенном порядке. Если узел сети наблюдается через прокси, тогда шаги выполняются на этом прокси.

Начиная с Zabbix 2.2 веб-сценарии привязываются к узлам сети/шаблонам тем же образом как элементы данных, триггеры и т.д. Это означает, что веб-сценарии можно создавать не уровне шаблона и далее применять к нескольким узлам сети одним движением.

Каждым веб-сценарием собирается следующая информация:

  • средняя скорость загрузки в секунду для всех шагов для всего сценария
  • номер шага, который завершился с ошибкой
  • последнее сообщение об ошибке

На каждом шаге веб-сценария собирается следующая информация:

  • скорость загрузки в секунду
  • время ответа
  • код ответа

Для получения более детальных сведений смотрите элементы данных веб мониторинга.

Собранные данные с выполненных веб-сценариев хранятся в базе данных. Эти данные автоматически используются для графиков, триггеров и оповещений.

Zabbix может также проверять содержит ли полученная HTML страница заданную строку. Он может выполнить эмуляцию входа и следовать пути, эмулируя нажатия мышкой на странице.

Веб-мониторинг в Zabbix поддерживает и HTTP, и HTTPS. При выполнении веб-сценария, Zabbix сервер будет следовать перенаправлениям (смотрите опцию Следовать перенаправлениям ниже). Максимальное количество перенаправлений жестко задано в исходном коде и равняется 10 (используется cURL опция CURLOPT_MAXREDIRS). Все cookies запоминаются на протяжении выполнения одного сценария.

Смотрите также известные проблемы по веб-мониторингу при использовании HTTPS протокола.

Настройка сценария

Для настройки веб-сценария:

  • Перейдите: Настройка → Узлы сети (или Шаблоны)
  • Нажмите на Веб в строке с узлом сети/шаблоном
  • Нажмите на Создать сценарий в верхнем правом углу (или на имени сценария для редактирования существующего сценария)
  • Введите в диалоге параметры сценария

Вкладка Сценарий позволяет вам настроить общие параметры веб-сценария.

Общие параметры:

Параметр Описание
Узел сети Имя узла сети/шаблона к которому принадлежит сценарий.
Имя Уникальное имя сценария.
Начиная с Zabbix 2.2, имя может содержать поддерживаемые макросы.
Группа элементов данных Выберите группу элементов данных к которой будет принадлежать сценарий.
Элементы данных веб-сценария будут сгруппированы под выбранной группой элементов данных в Мониторинг→Последние данные.
Новая группа элементов данных Введите название новой группы элементов данных для сценария.
Интервал обновления (в сек) Как часто сценарий будет выполняться, в секундах.
Попыток Количество попыток выполнения шагов веб-сценария. В случае сетевых проблем (превышено время ожидания, отсутствие подключения и прочего) Zabbix может повторить выполнение шагов несколько раз. Указанное количество будет одинаково действовать для каждого шаг сценария. Можно указать до 10 попыток, значение по умолчанию равно 1.
Примечание: Zabbix не повторит шаг из-за ошибочного кода ответа или несовпадении необходимой строки.
Данный параметр поддерживается начиная c Zabbix 2.2.
Агент Выбор агента клиента.
Zabbix будет представляться выбранным браузером. Полезно для мониторинга Веб-сайтов, которые генерируют различное содержимое для разных браузеров.
Начиная с Zabbix 2.2, в этом поле можно использовать пользовательские макросы.
HTTP прокси Вы можете указать необходимый HTTP прокси, следуя следующему формату: http://[имя пользователя[:пароль]@]прокси.mycompany.com[:порт]
По умолчанию будет использоваться порт 1080.
Если указан, прокси заменит переменные окружения связанные с прокси такие как http_proxy, HTTPS_PROXY. Если не указан, переменные окружения не будут заменены.
Введённое значение передается "как есть", проверка правильности не производится. Вы также можете указать адрес SOCKS прокси. Если вы укажите ошибочный протокол, подключение провалится и элемент данных станет неподдерживаемым. Если протокол не указан, прокси будет считаться HTTP прокси.
Примечание: Для HTTP прокси поддерживается только простая аутентификация.
В этом поле можно использовать пользовательские макросы.
Данный параметр поддерживается начиная с Zabbix 2.2.
Переменные Список переменных (макросов) уровня сценария, которые затем можно использовать в шагах сценария (URL, переменные Post).
Переменные имеют следующий формат:
{макрос1}=значение1
{макрос2}=значение2
{макрос3}=regex:<регулярное выражение>
Например:
{username}=Alexei
{password}=kj3h5kJ34bd
{hostid}=regex: hostid is ([0-9]+)
Если часть значения начинается с regex:, тогда последующая часть обрабатывается как регулярное выражение, которое будет искать указанную часть веб-страницы, и если найдет, запомнит найденное значение в переменную. Заметьте, что как минимум одна подгруппа должна присутствовать так, чтобы найденные значения можно было извлечь.
Далее на макросы можно ссылаться в шагах, используя {username}, {password} и {hostid}. Zabbix автоматически заменит их на реальные значения.
Переменные, которые ищут совпадение части веб-страницы по регулярному выражению, поддерживаются начиная с Zabbix 2.2.
В этом поле, начиная с Zabbix 2.2, можно использовать пользовательские и HOST.* макросы.
Примечание: Перемененные не являются URL-кодированными.
Заголовки HTTP заголовки, которые будут отправлены при выполнении запроса.
Заголовки следует передавать списком используя тот же синтаксис как они могут появиться в HTTP протоколе, опционально можно использовать некоторые дополнительные возможности поддерживаемые CURLOPT_HTTPHEADER опциями cURL.
Например: Accept-Charset: utf-8
Accept-Language: en-US
Content-Type: application/xml; charset=utf-8
В этом поле можно использовать макросы HOST.* и пользовательские макросы.
Возможность указать пользовательские заголовки поддерживается начиная с Zabbix 2.4.
Активирован Сценарий активирован, если параметр отмечен, в противном случае - деактивирован.

Обратите внимание, что при редактировании существующего сценария, в диалоге будут доступны две дополнительные кнопки:

Создание другого сценария на основе свойств существующего.
Удаление у сценария данных истории и динамики изменений. Эта опция заставит сервер выполнить сценарий сразу после удаления данных.

Если поле HTTP прокси оставить пустым, можно воспользоваться другим способом указать HTTP прокси, для этого необходимо задать переменные окружения.

Для HTTP проверок - укажите переменную окружения http_proxy для пользователя Zabbix сервера. Например, //http_proxy=http:%%//%%proxy_ip:proxy_port//.

Для HTTPS проверок - укажите переменную окружения HTTPS_PROXY. Например, //HTTPS_PROXY=http:%%//%%proxy_ip:proxy_port//. Более подробную информацию можно получить, выполнив в shell команду # man curl.

Вкладка Шаги позволит вам настроить шаги веб-сценария. Чтобы добавить шаг веб-сценария, нажмите на Добавить.

Настройка шагов

Параметры шага:

Параметр Описание
Имя Уникальное имя шага.
Начиная с Zabbix 2.2., имя может содержать поддерживаемые макросы.
URL URL для подключения и получения данных. Например:
http://www.zabbix.com
https://www.google.com
Можно указывать GET переменные в URL параметре.
Начиная с Zabbix 2.2., имя может содержать поддерживаемые макросы.
Ограничено 2048 символами начиная с Zabbix 2.4.
Post Переменные HTTP POST, если они имеются.
Например:
id=2345&userid={user}
Если {user} задан макросом веб-сценария, он будет заменен своим значением при выполнении шага.
Информация будет отправлена как есть, переменные не являются URL-кодированными.
Начиная с Zabbix 2.2., имя может содержать поддерживаемые макросы.
Переменные Список переменных (макросов) на уровне шага, которые можно использовать в GET и POST функциях.
Переменные на уровне шага переопределяют переменные уровня сценария и из предыдущих шагов. Однако, значение переменной с уровня шага влияет только на следующие шаги (и не на текущий шаг).
Такие переменные имеют следующий формат:
{макрос}=значение
{макрос}=regex:<регулярное выражение>
Более подробную информацию вы найдете в описании переменных уровня сценария.
Возможность использования переменных на уровне шага поддерживается начиная с Zabbix 2.2.
Примечание: Перемененные не являются URL-кодированными.
Заголовки HTTP заголовки, которые будут отправлены при выполнении запроса.
Заголовки следует передавать списком используя тот же синтаксис как они могут появиться в HTTP протоколе
Заголовки на уровне шага перезаписывают заголовки уровня сценария.
Например, 'User-Agent:' без наличия данных, удалит User-Agent указанный на уровне сценария.
В этом поле можно использовать макросы HOST.* и пользовательские макросы.
Это устанавливается опциями cURL CURLOPT_HTTPHEADER.
Возможность указать пользовательские заголовки поддерживается начиная с Zabbix 2.4.
Следовать перенаправлениям Отметьте для следования по HTTP перенаправлениям.
Этот параметр использует cURL опцию CURLOPT_FOLLOWLOCATION.
Эта опция поддерживается начиная с Zabbix 2.4.
Получать только заголовки Отметьте для получения только заголовков из HTTP ответа.
Этот параметр использует cURL опцию CURLOPT_NOBODY.
Эта опция поддерживается начиная с Zabbix 2.4.
Время ожидания Zabbix не будет тратить более указанного количества секунд при обработке URL. В действительности же этот параметр определяет максимальное время содания подключения к URL и максимальное время для выполнения HTTP запроса. Следовательно, Zabbix не будет тратить более 2 x Время ожидания секунд на один шаг.
Например: 15
Требуемая строка Требуемый шаблон регулярного выражения.
Если полученное содержимое (HTML) не совпадает с требуемым шаблоном, то шаг будет считаться ошибочным. Если поле не заполнено, то проверка на наличие строки не производится.
Например:
Homepage of Zabbix
Welcome.*admin
Обратите внимание: Ссылки на регулярные выражения, созданные в веб-интерфейсе Zabbix, в этом поле не поддерживаются.
Начиная с Zabbix 2.2, поле может содержать поддерживаемые макросы
Требуемые коды состояния Список ожидаемых кодов состояния HTTP. Если Zabbix получает код не из списка, то шаг будет считаться ошибочным.
Если поле не заполнено, то проверка на требуемые коды состояния не производится.
Например: 200,201,210-299.
Начиная с Zabbix 2.2, в поле можно использовать пользовательские макросы.

Любые изменения в шагах веб-сценариев будут сохранены только, если сам сценарий был также сохранен.

Смотрите также пример из реальной жизни, о том как можно настроить шаги веб-мониторинга.

Настройка аутентификации

Вкладка Аутентификация позволяет вам настроить опции аутентификации сценария.

Параметры аутентификации:

Параметр Описание
Аутентификация Опции аутентификации.
Пусто - без использования аутентификации.
Простая аутентификация - с использованием простой аутентификации.
NTLM аутентификация - с использованием NTLM (Windows NT LAN Manager) аутентификации.
Выбрав какой-либо метод аутентификации, будут доступны доступны два дополнительных поля для ввода имени пользователя и пароля.
Начиная с Zabbix 2.2, в полях имя пользователя и пароль можно использовать пользовательские макросы.
Проверка SSL узла Отметьте для верификации SSL сертификата веб-сервера.
Сертификат сервера будет автоматически взят из места центра сертификации (CA) всей системы. Вы можете перезаписать расположение CA файлов, используя параметр конфигурации SSLCALocation в Zabbix сервере и прокси.
Этот параметр использует cURL опцию CURLOPT_SSL_VERIFYPEER.
Эта опция поддерживается начиная с Zabbix 2.4.
Проверка SSL хоста Отметьте для верификации, что поле Common Name или поле Subject Alternate Name сертификата веб-сервера совпадают.
Этот параметр использует cURL опцию CURLOPT_SSL_VERIFYHOST .
Эта опция поддерживается начиная с Zabbix 2.4.
Файл SSL сертификата Имя файла SSL сертификата для аутентификации клиента. Файл сертификата должен быть в формате PEM1. Если файл сертификата также содержит и приватный ключ, оставьте поле Файл SSL ключа пустым. Если ключ зашифрован, укажите пароль в поле Пароль к SSL ключу. Папка, содержащая этот файл указывается в параметре конфигурации SSLCertLocation Zabbix сервера и прокси.
В этом поле можно использовать макросы HOST.* и пользовательские макросы.
Этот параметр использует cURL опцию CURLOPT_SSLCERT.
Эта опция поддерживается начиная с Zabbix 2.4.
Файл SSL ключа Имя файла приватного SSL ключа, который используется для аутентификации клиента. Файл приватного ключа должен быть в формате PEM1. Папка, содержащая этот файл указывается в параметре конфигурации SSLKeyLocation Zabbix сервера и прокси.
В этом поле можно использовать макросы HOST.* и пользовательские макросы.
Этот параметр использует cURL опцию CURLOPT_SSLKEY.
Эта опция поддерживается начиная с Zabbix 2.4.
Пароль к SSL ключу Пароль к файлу приватного ключа.
В этом поле можно использовать пользовательские макросы.
Этот параметр использует cURL опцию CURLOPT_KEYPASSWD.
Эта опция поддерживается начиная с Zabbix 2.4.

[1] Zabbix поддерживает файлы сертификатов и приватных ключей только в PEM формате. В случае, если у вас имеются данные сертификата и приватного ключа в формате файла PKCS #12 (обычно используется с расширением *.p12 или *.pfx), вы можете сгенерировать из них PEM файл, используя следующие команды:

openssl pkcs12 -in ssl-cert.p12 -clcerts -nokeys -out ssl-cert.pem
       openssl pkcs12 -in ssl-cert.p12 -nocerts -nodes  -out ssl-cert.key

Zabbix сервер подхватывает изменения в сертификатах без перезапуска.

Если сертификат клиента и приватный ключ находятся в одном файле, просто укажите его в поле "Файл SSL сертификата" и оставьте поле "Файл SSL ключа" пустым. Сертификат и ключ все еще должны быть в формате PEM. Очень просто объединить сертификат и ключ:

cat client.crt client.key > client.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 опцию.