====== Zabbix - мониторинг Web приложений ====== ===== Реклама ===== * Доступен сайт или нет? Инженер проверит за секунду командой ping! А если ping говорит что "все в порядке", а пользователи жалуются? Значит случилось что-то более сложное, и инженеру придется запустить браузер, ввести в адресной строке имя сайта и посмотреть на результат "глазами". Возможно проблема еще дальше, и нужно "залогиниться" и проверить работу сайта изнутри. А можно ли узнать о проблеме раньше, чем начнут жаловаться пользователи? Конечно, ведь есть системы мониторинга, и Zabbix - одна из лучших, может быть настроена на мониторинг любых составляющих сайта - сети, дисков, памяти, процессов приложения, баз данных и всего прочего! Но, в такой длинной цепочке можно что-то упустить... А можно ли сделать так, что бы Zabbix проверял работу сайт прямо так, как это делают пользователи - "глазами", и сообщал инженерам о проблемах? ДА, и об этом наш вебинар! ===== Техническое задание ===== * Настроить мониторинг работоспособности сайтов компании на примерах Web приложений Roundcube Webmail и GitLab ===== Запись вебинара ===== * [[https://youtu.be/yy1T2bDMy54|Zabbix - мониторинг Web приложений]] ===== Методическая подготовка ===== * Установлен [[Сервис Zabbix]] * Установлен [[Web интерфейс к почте#Roundcube|Web интерфейс к почте Roundcube]] * Установлен [[Инструмент GitLab|GitLab]] ===== Шаг 0. Удаление предыдущих экспериментов ===== * Удаление сценариев и триггеров из http://zabbix.corp13.un/zabbix/ * Удаление примера Web придожения # rm -r /var/www/html/asterisk/ ===== Шаг 1. Пример Web приложения, методы GET и POST ===== * [[https://www.specialist.ru/course/asterisk3|Asterisk. Уровень 3. Интеграция с внешними системами]] * [[Сервис HTTP#Форма]] и [[Язык программирования PHP#Обработка полей формы и вызов внешних программ|Обработка полей формы]] * Коды ответов 2XX * http://asterisk.corp13.un/asterisk/ ... ... method=POST ... ... $clientphone=$_POST['phone']; ... ===== Шаг 2. Инструменты разработчика в браузере ===== * [[https://ru.hexlet.io/blog/posts/devtools|DevTools: как открыть инструменты разработчика в браузере и почему они делают работу эффективнее]] * [[https://stackoverflow.com/questions/15603561/how-can-i-debug-a-http-post-in-chrome|How can I debug a HTTP POST in Chrome?]] ===== Шаг 3. Мониторинг RoundCube ===== * Исследование работы приложения * http://mail.corp13.un/mail/ * типы запросов, поля форм, токены, редиректы, ... * http://zabbix.corp13.un/zabbix/ * [[Сервис Zabbix#Web сценарии]] * [[Сервис Zabbix#Пример в веб сценарии|Триггеры для Web сценария]] ===== Шаг 4. Мониторинг GitLab ===== * http://server.corp13.un/ gitlab corp13 {login} student {password} Pa$$w0rd First page http://server.corp13.un/users/sign_in {token1} regex:name="csrf-token" content="(.{86})" Required string: Sign in Log in http://server.corp13.un/users/sign_in authenticity_token {token1} user[login] {login} user[password] {password} user[remember_me] 0 {token2} regex:name="csrf-token" content="(.{86})" Follow redirects Required string: Sign out Log out http://server.corp13.un/users/sign_out _method post authenticity_token {token2} Required string: Sign in # Не заработало, возвращает пустую страницу Required status codes: 200 # и код 204 ===== Шаг 5. Отладка Web сценариев в Zabbix ===== * [[https://stackoverflow.com/questions/58641673/zabbix-web-scenario-debug|Zabbix web scenario debug]] Name: debug URL: http://127.0.0.1/token2/{token2} Required string: not existing string Required status codes: 404