Всем привет! Мы делаем проекты по Zabbix, накопили большую экспертизу и решили сделать переводы нескольких статей, которые нам показались интересными и полезными. Наверняка, будут полезны и вам. Также своим опытом делимся в телеграм-канале zabbix_ru, где вы можете найти полезные материалы и записи наших вебинаров, опубликованных на нашем ютуб-канале (прим. переводчика). Ниже ссылки на предыдущие статьи из цикла.
Миграция с MySQL на PostgreSQL
SELinux: интеграция с Zabbix и другими инструментами
Защита от ложных срабатываний триггеров в Zabbix с использованием функций min/max/avg
Zabbix – автоматизация управления пользователями (JIT)
Двухфакторная аутентификация (2FA) в Zabbix 7.0
Как настроить прием SNMP-трапов в Zabbix
В этой статье мы покажем, как установить и настроить Zabbix, чтобы он мог использовать потенциал нового элемента «Браузер».
Элемент данных «Браузер» в Zabbix позволяет получать данные с веб-страниц с помощью браузера. Это новый тип элемента данных, который использует веб-браузер для взаимодействия с веб-страницами, позволяя отслеживать и собирать данные, доступные только через веб-интерфейсы. Этот тип элемента данных полезен для мониторинга состояний, которые невозможно отслеживать напрямую через стандартные протоколы или API. Также существует возможность напрямую получить снимок экрана с отслеживаемой страницы.
Элементы типа браузер собирают данные, выполняя пользовательский код JavaScript и извлекая данные по протоколу HTTP/HTTPS. Этот элемент может имитировать действия в браузере, такие как нажатия клавиш, ввод текста, навигация по веб-сайтам и другие взаимодействия пользователя с веб-сайтами или веб-приложениями.
В дополнение к скрипту можно указать необязательный список параметров (пары «имя-значение») и ограничение по времени. Более подробную информацию можно найти на страницах документации Zabbix:
Подготовка окружения
Мы установим Podman, в котором впоследствии запустим Docker-контейнер с Selenium.
Это гораздо более чистый способ, чем установка полноценной графической среды, включая Google Chrome, а затем Selenium WebDriver, на самом сервере Zabbix.
Хотим отметить, что контейнеру может потребоваться довольно большой объем оперативной памяти (>2 ГБ), и это необходимо учитывать заранее.
Для начала, на всякий случай, обновите ОС, в данном случае это Rocky Linux 9:
dnf -y updateУстановите Podman и необходимые зависимости:
dnf -y install podman podman-composeЗатем загрузите официальный скрипт Selenium для docker-compose и сохраните его под именем, которое podman-compose распознает по умолчанию.
Этот «полный» рецепт компоновки содержит все три наиболее используемых браузера, что, конечно, не требуется для базового тестирования.
В нашем примере мы пока оставим всё как есть.
wget https://raw.githubusercontent.com/SeleniumHQ/docker-selenium/trunk/docker-compose-v3-full-grid.yml -O docker-compose.ymlС помощью этого файла compose запустите контейнер, используя podman-compose:
podman-compose up -dУбедитесь, что контейнер запущен:
podman psТеперь сервер Selenium должен быть доступен по адресу http://localhost:4444, поскольку мы определили этот порт при запуске контейнера.
Подсказка: вы также можете проверить Selenium напрямую, используя URL-адрес сервера Selenium; в нашем примере это http://localhost:4444. После загрузки откроется страница Selenium Grid, где вы увидите статус, доступные браузеры и настройки параллельного доступа. Здесь также можно настроить мониторинг браузера пользователя через VNC. Но сначала вам нужно будет установить для него пароль. По умолчанию пароль — «secret», поэтому мы настоятельно рекомендуем его изменить.

Настройки Zabbix сервера
Для функциональности всего этого решения вам необходимо включить Selenium WebDriver на уровне Zabbix сервера.
Итак, откройте файл конфигурации сервера Zabbix:
nano /etc/zabbix/zabbix_server.confЗдесь отредактируйте параметр WebDriverURL конфигурации в соответствии с выбранным вами адресом и портом запущенного контейнера. В нашем случае это http://localhost:4444.
### Option: WebDriverURL
# WebDriver interface HTTP[S] URL. For example http://localhost:4444 used with Selenium WebDriver standalone server.
#
# Mandatory: no
# Default:
# WebDriverURL=
WebDriverURL=http://localhost:4444Далее включите Browser Pollers, т. е. процессы, которые собирают значения для элемента Browser.
Для этого следует задать параметр StartBrowserPollers, для нашего примера достаточно оставить значение 5.
### Option: StartBrowserPollers
# Number of pre-forked instances of browser item pollers.
#
# Mandatory: no
# Range: 0-1000
# Default:
# StartBrowserPollers=1
StartBrowserPollers=5Сохраните измененный файл конфигурации и перезапустите Zabbix Server, чтобы изменения вступили в силу:
systemctl restart zabbix-serverНастройки интерфейса Zabbix
Для быстрого тестирования функциональности Zabbix предоставляет пример шаблона, который можно найти здесь. Загрузите ��аблон и импортируйте его в свой Zabbix.
Затем создайте тестовый хост и назначьте ему этот шаблон:

Для корректной работы не забудьте изменить настройки макроса внутри самого шаблона. Самым важным, конечно же, будет целевой URL, который мы хотим отслеживать, то есть {$WEBSITE.DOMAIN} макрос (выделен на изображении ниже). В макросах шаблона также можно найти множество других полезных параметров, таких как выбор браузера, интервалы проверки или разрешение экрана.

Сохранив эту настройку, вы сможете перейти к предварительному просмотру данных. Скорость загрузки текущих данных зависит от заданного интервала, который в первую очередь контролируется макросом шаблона. К счастью, для немедленного запуска можно использовать кнопку Execute now, расположенную на элементе Website by Browser: Website {$WEBSITE.DOMAIN} Get data.
Лучший обзор собранных данных можно получить непосредственно через панель управления, предоставляемую Zabbix вместе с шаблоном.
Эту панель управления можно найти в разделе Monitoring -> Hosts, отфильтровать наш недавно созданный хост, а затем можно легко перейти на эту панель управления:

После открытия отображается готовый дашборд. Он содержит скриншот первого запуска и множество других полезных показателей производительности.
Обратите внимание, что на скриншоте также присутствует уведомление об использовании cookie-файлов, требуемое законом. Инструкции по удалению этого предупреждения см. в следующей главе данного руководства. Там мы покажем, как адаптировать этот шаблон к вашим конкретным требованиям.

Модификация шаблона и пользовательские тесты
При редактировании мы будем использовать оригинальный шаблон Zabbix, которого достаточно для нужд нашего примера. Однако в боевом окружении всегда лучше иметь отдельный шаблон для каждой проверки. Таким образом, всё необходимое можно определить в отдельном шаблоне, а не изменять только один.
Например, во время предыдущего тестирования нам не понравилось предупреждение об использовании cookie-файлов на собранных скриншотах.
Проще всего избавиться от этой панели — нажать на кнопку I accept all на странице, которая подтвердит выбор cookie-файлов.
Теперь мы покажем вам, как добавить этот простой щелчок в тест.
Давайте откроем наш пример шаблона «Веб-сайт по браузеру», в котором вы найдете элемент с тегом component: raw.
Этот элемент называется Website by Browser: Website {$WEBSITE.DOMAIN} Get data, и на одном из предыдущих шагов мы использовали его для принудительной проверки вручную.

Настройка этого элемента также включает скрипт, написанный на JavaScript. Откройте его, нажав кнопку «Изменить», выделенную красным на скриншоте ниже.

Добавьте в скрипт следующий раздел:
// Accept Cookies to hide this element
el = browser.findElement("xpath", "//a[contains(text(),'I accept all')]");
if (el === null) {
throw Error("cannot find Cookie button");
}
el.click();Этот фрагмент кода ищет содержимое загруженной страницы с помощью xpath, находит элемент, содержащий текст «I accept all» и щелкает по нему.
XPath — это стандартный метод Selenium для навигации по HTML-структуре страницы, описание этого процесса можно легко найти в Интернете.
Здесь вы можете увидеть, как выглядит получившийся скрипт:

Сохраните скрипт кнопкой Apply, сохраните элемент кнопкой Updateи вернитесь на наш тестовый хост, где вы можете наблюдать результат. Опять же, не забывайте, что новые данные будут приходить с задержкой, зависящей от заданного интервала — чтобы ускорить эту операцию, вы можете снова нажать на кнопку Execute now, как и в предыдущем случае.

На снимке экрана выше вы можете видеть результат: панель предупреждения об использовании cookie-файлов исчезла.
На этом настройка нашего примера элемента данных «Браузер» завершена, и пример использования окончен. Не забывайте, что все возможности и параметры настройки этого элемента данных можно найти в документации Zabbix, как упоминалось в начале статьи.
На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал zabbix_ru, где будет еще больше полезной информации.