====== 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