[comment]: # translation:outdated

[comment]: # ({new-734ebac5})
# 9. Веб-мониторинг

[comment]: # ({/new-734ebac5})

[comment]: # ({new-f37bc18c})
#### Обзор

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

::: noteimportant
Для выполнения веб-мониторинга Zabbix сервер
должен быть изначально
[сконфигурирован](/ru/manual/installation/install#установка_из_исходных_кодов)
с поддержкой cURL (libcurl).
:::

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

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

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

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

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

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

Для получения более детальных сведений смотрите [элементы данных веб
мониторинга](/ru/manual/web_monitoring/items).

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

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

Веб-мониторинг в Zabbix поддерживает и HTTP, и HTTPS. При выполнении
веб-сценария, Zabbix сервер будет следовать перенаправлениям (смотрите
опцию *Следовать перенаправлениям* ниже). Максимальное количество
перенаправлений жестко задано в исходном коде и равняется 10
(используется cURL опция
[CURLOPT\_MAXREDIRS](http://curl.haxx.se/libcurl/c/CURLOPT_MAXREDIRS.html)).
Все cookies запоминаются на протяжении выполнения одного сценария.

Смотрите также [известные
проблемы](ru/manual/installation/known_issues#https_проверки) по
веб-мониторингу при использовании HTTPS протокола.

[comment]: # ({/new-f37bc18c})

[comment]: # ({new-f007debe})
#### Настройка сценария

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

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

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

![](../../assets/en/manual/config/scenario.png){width="600"}

Все обязательные поля ввода отмечены красной звёздочкой.

Параметры сценария:

|Параметр|Описание|
|----------------|----------------|
|*Узел сети*|Имя узла сети/шаблона к которому принадлежит сценарий.|
|*Имя*|Уникальное имя сценария.<br>Начиная с Zabbix 2.2 поддерживаются пользовательские макросы и {HOST.\*} [макросы](/ru/manual/appendix/macros/supported_by_location).|
|*Группа элементов данных*|Выберите группу элементов данных к которой будет принадлежать сценарий.<br>Элементы данных веб-сценария будут сгруппированы под выбранной группой элементов данных в *Мониторинг→Последние данные*.|
|*Новая группа элементов данных*|Введите название новой группы элементов данных для сценария.|
|*Интервал обновления*|Как часто сценарий будет выполняться.<br>Начиная с Zabbix 3.4.0, поддерживаются [суффиксы времени](/ru/manual/appendix/suffixes), например, 30s, 1m, 2h, 1d.<br>[Пользовательские макросы](/ru/manual/config/macros/usermacros) поддерживаются, начиная с 3.4.0.<br>*Обратите внимание* что, если используется пользовательский макрос и его значение изменилось (к примеру, 5m → 30s), следующая проверка будет выполнена в соответствии с предыдущим значением (в далеком будущем с примерами значений).|
|*Попыток*|Количество попыток выполнения шагов веб-сценария. В случае сетевых проблем (превышено время ожидания, отсутствие подключения и прочего) Zabbix может повторить выполнение шагов несколько раз. Указанное количество будет одинаково действовать для каждого шаг сценария. Можно указать до 10 попыток, значение по умолчанию равно 1.<br>*Примечание*: Zabbix не повторит шаг из-за ошибочного кода ответа или несовпадении необходимой строки.<br>Данный параметр поддерживается начиная c Zabbix 2.2.|
|*Агент*|Выбор агента клиента.<br>Zabbix будет представляться выбранным браузером. Полезно для мониторинга Веб-сайтов, которые генерируют различное содержимое для разных браузеров.<br>*Начиная с Zabbix 2.2*, в этом поле можно использовать пользовательские макросы.|
|*HTTP прокси*|Вы можете указать необходимый HTTP прокси, следуя следующему формату: *http://\[имя пользователя\[:пароль\]@\]прокси.mycompany.com\[:порт\]*<br>По умолчанию будет использоваться порт 1080.<br>Если указан, прокси заменит переменные окружения связанные с прокси такие как http\_proxy, HTTPS\_PROXY. Если не указан, переменные окружения не будут заменены.<br>Введённое значение передается "как есть", проверка правильности не производится. Вы также можете указать адрес SOCKS прокси. Если вы укажите ошибочный протокол, подключение провалится и элемент данных станет неподдерживаемым. Если протокол не указан, прокси будет считаться HTTP прокси.<br>*Примечание*: Для HTTP прокси поддерживается только простая аутентификация.<br>В этом поле можно использовать пользовательские макросы.<br>Данный параметр поддерживается начиная с *Zabbix 2.2*.|
|*Переменные*|Переменные, которые можно использовать в шагах сценария (URL, переменные post).<br>Переменные имеют следующий формат:<br>**{макрос1}**=значение1<br>**{макрос2}**=значение2<br>{макрос3}=regex:<регулярное выражение><br>Например:<br>{username}=Alexei<br>{password}=kj3h5kJ34bd<br>{hostid}=regex: hostid is (\[0-9\]+)<br>На эти макросы затем можно ссылаться в шагах сценария, используя {username}, {password} и {hostid}. Zabbix автоматически заменит их на актуальные значения. Обратите внимание, что переменным с `regex:` требуется по крайней мере один шаг, чтобы получить значение с регулярного выражения, поэтому извлечённое значение можно применять только в последующих шагах.<br>Если часть значения начинается с `regex:`, тогда последующая часть обрабатывается как регулярное выражение, которое будет искать указанную часть веб-страницы, и если найдет, запомнит найденное значение в переменную. Должна присутствовать как минимум одна подгруппа так, чтобы найденные значения можно было извлечь.<br>Переменные, которые ищут совпадение части веб-страницы по регулярному выражению, поддерживаются *начиная с Zabbix 2.2*.<br>Пользовательские макросы и {HOST.\*} [макросы](/ru/manual/appendix/macros/supported_by_location) поддерживаются *начиная с Zabbix 2.2*.<br>Переменные автоматически URL кодируются, когда используются в полях запросов или в данных формы для переменных post, но их необходимо вручную URL кодировать, когда они используются в сыром post или напрямую в URL.|
|*Заголовки*|Пользовательские HTTP заголовки, которые будут отправлены при выполнении запроса.<br>Заголовки следует передавать списком используя тот же синтаксис как они могут появиться в HTTP протоколе, опционально можно использовать некоторые дополнительные возможности поддерживаемые [CURLOPT\_HTTPHEADER](http://curl.haxx.se/libcurl/c/CURLOPT_HTTPHEADER.html) опциями cURL.<br>Например: Accept-Charset: utf-8<br>Accept-Language: en-US<br>Content-Type: application/xml; charset=utf-8<br>Пользовательские макросы и {HOST.\*} [макросы](/ru/manual/appendix/macros/supported_by_location) поддерживаются *начиная с Zabbix 2.2*.<br>Возможность указать пользовательские заголовки поддерживается *начиная с Zabbix 2.4*.|
|*Активирован*|Сценарий активирован, если параметр отмечен, в противном случае - деактивирован.|

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

|   |   |
|---|---|
|![](../../assets/en/manual/web_monitoring/scenario_edit_clone.png)|Создание другого сценария на основе свойств существующего.|
|![](../../assets/en/manual/web_monitoring/scenario_edit_clear.png)|Удаление у сценария данных истории и динамики изменений. Эта опция заставит сервер выполнить сценарий сразу после удаления данных.|

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

Для HTTP проверок - укажите переменную окружения **http\_proxy** для
пользователя Zabbix сервера. Например,
//http\_proxy=[http:%%//%%proxy\_ip:proxy\_port//](http:%%//%%proxy_ip:proxy_port//).

Для HTTPS проверок - укажите переменную окружения **HTTPS\_PROXY**.
Например,
//HTTPS\_PROXY=[http:%%//%%proxy\_ip:proxy\_port//](http:%%//%%proxy_ip:proxy_port//).
Более подробную информацию можно получить, выполнив в shell команду *\#
man curl*.
:::

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

![](../../assets/en/manual/config/scenario2.png)

[comment]: # ({/new-f007debe})

[comment]: # ({new-74c8baab})
#### Настройка шагов

![](../../assets/en/manual/config/scenario_step.png){width="600"}

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

|Параметр|Описание|
|----------------|----------------|
|*Имя*|Уникальное имя шага.<br>Начиная с Zabbix 2.2, имя может содержать поддерживаемые [макросы](/ru/manual/appendix/macros/supported_by_location).|
|*URL*|URL для подключения и получения данных. Например:<br>https://www.google.com<br>http://www.zabbix.com/download<br>Имена доментов можно указывать Юникод символами начиная с Zabbix 3.4. Они автоматически конвертируются методом punycode в ASCII при выполнении шага веб-сценария.<br>Кнопку *Анализ* можно использовать чтобы отделить из URL опциональные поля запроса (например, ?name=Admin&password=mypassword), переместив атрибуты и значения в *Поля запроса*, чтобы URL кодировка выполнялась автоматически.<br>Переменные можно использовать в URL, воспользовавшись синтаксисом {макрос}. Переменные можно URL кодировать вручную, используя {{macro}.urlencode()} синтаксис.<br>Пользовательские макросы и {HOST.\*} [макросы](/ru/manual/appendix/macros/supported_by_location) поддерживаются начиная с Zabbix 2.2.<br>Ограничено 2048 символами *начиная с Zabbix 2.4*.|
|*Поля запроса*|Переменные HTTP GET для URL.<br>Задаются в виде пар атрибутов и значений.<br>Значения URL кодируются автоматически. Значения с переменных сценария, пользовательских макросов или {HOST.\*} макросов раскрываются и затем URL кодируются автоматически. При использовании {{макрос}.urlencode()} синтаксиса произойдёт двойная URL кодировка этих переменных.<br>Пользовательские макросы и {HOST.\*} [макросы](/ru/manual/appendix/macros/supported_by_location) поддерживаются начиная с Zabbix 2.2.|
|*Post*|Переменные HTTP POST.<br>В **Данные формы** режиме задаются в виде пар атрибутов и значений.<br>Значения URL кодируются автоматически. Значения с переменных сценария, пользовательских макросов или {HOST.\*} макросов раскрываются и затем URL кодируются автоматически.<br>В **Сырые данные** режиме, атрибуты/значения отображаются в одной строке и объединяются **&** символом.<br>Сырые значения можно URL кодировать/декодировать вручную, используя синтаксис {{макрос}.urlencode()} или {{макрос}.urldecode()}.<br>Например: id=2345&userid={user}<br>Если {user} задан переменной на уровне веб-сценария, он будет заменён своим значением при выполнении шага. Если вы желаете URL кодировать значение, замените {user} на {{user}.urlencode()}.<br>Пользовательские макросы и {HOST.\*} [макросы](/ru/manual/appendix/macros/supported_by_location) поддерживаются начиная с Zabbix 2.2.|
|*Переменные*|Список переменных на уровне шага, которые можно использовать в GET и POST функциях.<br>Задаются в виде пар атрибутов и значений.<br>Переменные на уровне шага переопределяют переменные уровня сценария и из предыдущих шагов. Однако, значение переменной с уровня шага влияет только на следующие шаги (а не на текущий шаг).<br>Такие переменные имеют следующий формат:<br>**{макрос}**=значение<br>**{макрос}**=regex:<регулярное выражение><br>Более подробную информацию вы найдете в описании переменных уровня [сценария](web_monitoring#настройка_веб_сценария).<br>Возможность использования переменных на уровне шага поддерживается *начиная с Zabbix 2.2*.<br>Переменные автоматически URL кодируются, когда используются в полях запросов или в данных формы для переменных post, но их необходимо вручную URL кодировать, когда они используются в сыром post или напрямую в URL.|
|*Заголовки*|HTTP заголовки, которые будут отправлены при выполнении запроса.<br>Задаются в виде пар атрибутов и значений.<br>Заголовки на уровне шага перезаписывают заголовки уровня сценария. Например, 'User-Agent:' без наличия данных, удалит User-Agent указанный на уровне сценария.<br>Поддерживаются пользовательские макросы и {HOST.\*} макросы.<br>Это поле задаёт [CURLOPT\_HTTPHEADER](http://curl.haxx.se/libcurl/c/CURLOPT_HTTPHEADER.html) cURL опцию.<br>Возможность указать пользовательские заголовки поддерживается *начиная с Zabbix 2.4*.|
|*Следовать перенаправлениям*|Отметьте для следования по HTTP перенаправлениям.<br>Этот параметр использует cURL опцию [CURLOPT\_FOLLOWLOCATION](http://curl.haxx.se/libcurl/c/CURLOPT_FOLLOWLOCATION.html).<br>Эта опция поддерживается *начиная с Zabbix 2.4*.|
|*Получать только заголовки*|Отметьте для получения только заголовков из HTTP ответа.<br>Этот параметр использует cURL опцию [CURLOPT\_NOBODY](http://curl.haxx.se/libcurl/c/CURLOPT_NOBODY.html).<br>Эта опция поддерживается *начиная с Zabbix 2.4*.|
|*Время ожидания*|Zabbix не будет тратить более указанного времени при обработке URL (максимум 1 час). В действительности же этот параметр определяет максимальное время содания подключения к URL и максимальное время для выполнения HTTP запроса. Следовательно, Zabbix не будет тратить более **2 x Время ожидания** секунд на один шаг.<br>Поддерживаются [суффиксы времени](/ru/manual/appendix/suffixes), например, 30s, 1m, 1h.<br>[Пользовательские макросы](/ru/manual/config/macros/usermacros) поддерживаются.|
|*Требуемая строка*|Требуемый шаблон регулярных выражений.<br>Если полученное содержимое (HTML) не совпадает с требуемым шаблоном, то шаг будет считаться ошибочным. Если поле не заполнено, то проверка не производится.<br>Например:<br>Homepage of Zabbix<br>Welcome.\*admin<br>*Обратите внимание*: Ссылки на [регулярные выражения](regular_expressions), созданные в веб-интерфейсе Zabbix, в этом поле не поддерживаются.<br>Пользовательские макросы и {HOST.\*} [макросы](/ru/manual/appendix/macros/supported_by_location) поддерживаются начиная с Zabbix 2.2.|
|*Требуемые коды состояния*|Список ожидаемых кодов состояния HTTP. Если Zabbix получает код не из списка, то шаг будет считаться ошибочным.<br>Если поле не заполнено, то проверка не производится.<br>Например: 200,201,210-299.<br>Начиная с Zabbix 2.2 можно использовать пользовательские макросы.|

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

Смотрите также [пример из реальной
жизни](/ru/manual/web_monitoring/example), о том как можно настроить
шаги веб-мониторинга.

[comment]: # ({/new-74c8baab})

[comment]: # ({new-6f40ea68})
#### Настройка аутентификации

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

![](../../assets/en/manual/config/scenario3.png)

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

|Параметр|Описание|
|----------------|----------------|
|*Аутентификация*|Опции аутентификации.<br>**Пусто** - без использования аутентификации.<br>**Простая аутентификация** - с использованием простой аутентификации.<br>**NTLM аутентификация** - с использованием NTLM ([Windows NT LAN Manager)](http://en.wikipedia.org/wiki/NTLM) аутентификации.<br>Выбрав какой-либо метод аутентификации, будут доступны доступны два дополнительных поля для ввода имени пользователя и пароля.<br>*Начиная с Zabbix 2.2*, в полях имя пользователя и пароль можно использовать пользовательские макросы.|
|*Проверка SSL узла*|Отметьте для верификации SSL сертификата веб-сервера.<br>Сертификат сервера будет автоматически взят из места центра сертификации (CA) всей системы. Вы можете перезаписать расположение CA файлов, используя параметр конфигурации [SSLCALocation](/ru/manual/appendix/config/zabbix_server) в Zabbix сервере и прокси.<br>Этот параметр использует cURL опцию [CURLOPT\_SSL\_VERIFYPEER](http://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYPEER.html).<br>Эта опция поддерживается *начиная с Zabbix 2.4*.|
|*Проверка SSL хоста*|Отметьте для верификации, что поле *Common Name* или поле *Subject Alternate Name* сертификата веб-сервера совпадают.<br>Этот параметр использует cURL опцию [CURLOPT\_SSL\_VERIFYHOST](http://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYHOST.html).<br>Эта опция поддерживается *начиная с Zabbix 2.4*.|
|*Файл SSL сертификата*|Имя файла SSL сертификата для аутентификации клиента. Файл сертификата должен быть в формате PEM^1^. Если файл сертификата также содержит и приватный ключ, оставьте поле *Файл SSL ключа* пустым. Если ключ зашифрован, укажите пароль в поле *Пароль к SSL ключу*. Папка, содержащая этот файл указывается в параметре конфигурации [SSLCertLocation](/ru/manual/appendix/config/zabbix_server) Zabbix сервера и прокси.<br>В этом поле можно использовать макросы `HOST.*` и пользовательские макросы.<br>Этот параметр использует cURL опцию [CURLOPT\_SSLCERT](http://curl.haxx.se/libcurl/c/CURLOPT_SSLCERT.html).<br>Эта опция поддерживается *начиная с Zabbix 2.4*.|
|*Файл SSL ключа*|Имя файла приватного SSL ключа, который используется для аутентификации клиента. Файл приватного ключа должен быть в формате PEM^1^. Папка, содержащая этот файл указывается в параметре конфигурации [SSLKeyLocation](/manual/appendix/config/zabbix_server) Zabbix сервера и прокси.<br>В этом поле можно использовать макросы `HOST.*` и пользовательские макросы.<br>Этот параметр использует cURL опцию [CURLOPT\_SSLKEY](http://curl.haxx.se/libcurl/c/CURLOPT_SSLKEY.html).<br>Эта опция поддерживается *начиная с Zabbix 2.4*.|
|*Пароль к SSL ключу*|Пароль к файлу приватного ключа.<br>В этом поле можно использовать пользовательские макросы.<br>Этот параметр использует cURL опцию [CURLOPT\_KEYPASSWD](http://curl.haxx.se/libcurl/c/CURLOPT_KEYPASSWD.html).<br>Эта опция поддерживается *начиная с Zabbix 2.4*.|

::: noteimportant
 \[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


:::

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

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

    cat client.crt client.key > client.pem


:::

[comment]: # ({/new-6f40ea68})

[comment]: # ({new-4cce2d90})
#### Просмотр

Для просмотра детальных данных добавленных веб-сценариев, перейдите в
*Мониторинг → Веб* или в *Последние данные*. Нажмите на имя сценария для
просмотра подробной статистики.

![](../../assets/en/manual/web_monitoring/scenario_details1.png){width="600"}

Обзор сценариев веб-мониторинга можно найти в *Мониторинг → ПАНЕЛЬ*.

[comment]: # ({/new-4cce2d90})

[comment]: # ({new-ae869848})
#### Расширенный мониторинг

Иногда необходимо записать в журнал полученное содержимое HTML страницы.
Это крайне полезно, если некоторые шаги веб-сценария завершаются с
ошибкой. Для этой цели служит уровень отладки 5 (трассировка). Этот
уровень можно указать в файлах конфигурации
[сервера](ru/manual/appendix/config/zabbix_server) и
[прокси](ru/manual/appendix/config/zabbix_proxy) или использовать опции
выполнения административных функций
(`-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` опцию.

[comment]: # ({/new-ae869848})

[comment]: # ({new-42ab5787})
#### Extended monitoring

Sometimes it is necessary to log received HTML page content. This is
especially useful if some web scenario step fails. Debug level 5 (trace)
serves that purpose. This level can be set in
[server](/manual/appendix/config/zabbix_server) and
[proxy](/manual/appendix/config/zabbix_proxy) configuration files or
using a runtime control option (`-R log_level_increase="http poller,N"`,
where N is the process number). The following examples demonstrate how
extended monitoring can be started provided debug level 4 is already
set:

    Increase log level of all http pollers:
    shell> zabbix_server -R log_level_increase="http poller"

    Increase log level of second http poller:
    shell> zabbix_server -R log_level_increase="http poller,2"

If extended web monitoring is not required it can be stopped using the
`-R log_level_decrease` option.

[comment]: # ({/new-42ab5787})
