Ранее я уже рассказывал о мониторинге web сайта в zabbix, принципиально с тех пор ничего не изменилось. Сегодня хочу подробнее остановиться на мониторинге конкретно времени отклика сайта. Последнее время этот параметр стал важным фактором ранжирования поисковых систем, поэтому ему уделяют повышенное внимание.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Содержание:
Введение
Как я уже сказал, статья с мониторингом web сайта актуальна и по сей день, хотя писалась для старой версии заббикса. Ни в одном из вышедших обновлений с тех пор модуль, отвечающий за мониторинг сайта, не менялся. Все осталось точно таким же, как и было. Сегодня я хочу дополнить статью некоторой информацией, плюс поделиться своими триггерами и советами по мониторингу времени отклика сайта.
Я обратил внимание на этот параметр не случайно. Последнее время поисковые системы стали внимательно относиться к времени отклика сервера с сайтом. Первым об этом заявил гугл еще несколько лет назад. В его инструменте PageSpeed Insights давно присутствует тест на время отклика сервера. Если он отвечает медленнее, чем 200 мс, то вы получаете предупреждение и рекомендации по устранению данного недостатка сервера. Некоторое время назад яндекс в вебмастере стал тоже указывать на высокое время отклика сайта, если таковое замечает.
Так что тема времени ответа сервера на сегодняшний день очень актуальна. Отдельно нужно рассматривать настройку веб сервера для уменьшения отклика. Возможно, я соберусь и напишу свои рекомендации на этот счет. А пока настроим мониторинг времени отклика сайта.
Методика мониторинга времени ответа сервера
Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:
То же самое на Debian 10, если предпочитаете его:
Принципиальной разницы где у вас работает сервер мониторинга zabbix нет. Я не буду останавливаться на этом моменте. Далее я считаю, что вы уже настроили мониторинг сайта по приведенной ранее статье. Дам некоторые рекомендации по ее поводу на основе последнего опыта:
- Лучше всего создавать шаблон web мониторинга, а не настраивать его на конкретном агенте. Совет этот универсальный для любых метрик, но именно для web мониторинга он более актуальный. Так вы сможете оперативно запускать проверки сайта с разных серверов, где установлены агенты забикса. Плюс, через экспорт шаблона вы легко сможете перенести мониторинг на другой сервер. Это очень важно, так как если у вас многоходовый мониторинга сайта, вручную его переносить на другой сервер очень хлопотно.
- У заббикса есть свои внутренние таймауты. Иногда я вижу в полученных данных значения, которые сильно выбиваются из общей картины. Например, у вас среднее время отклика сайта 200-300 мс. Иногда вы будете видеть на графике всплески до 1500 мс, 2500 мс, 3500 мс. Значения будут кратны одной секунде. Я не нашел подробной информации, как именно заббикс делает мониторинг сайта. Я думаю, что свыше какой-то задержки, он ждет секунду, пробует снова и так далее. Эти данные не стоит брать в расчет.
- Не стоит обращать внимание на абсолютные цифры. Все системы измеряют время отклика по-разному. В вебмастере яндекса вы увидите одно значение времени отклика сервера, в его же яндекс.метрике другое, гугл покажет третье, а заббикс четвертное. Отличаться эти значения могут существенно, в 2-3-4 раза. Я использую мониторинг времени отклика сайта в заббиксе для отслеживания динамики. К примеру, вы решили переехать на новый web сервер. Нужно как-то оценить его быстродействие. Вы сравниваете значения в мониторинге на старом сайта, потом на новом и делаете выводы.
По последнему пункту приведу простой пример из недавнего опыта. Я подготовил новый веб сервер. Нужно было оценить, насколько он быстрее работает на том же сайте, чем предыдущий. Я развернул сайт на новом сервере, поправил в файле hosts на сервере с заббикс агентом ip адрес сайта, направив запросы на новый web сервер. Получилась такая картинка.
Сначала идет мониторинг реального сайта на текущем сервере, потом я переключаю запросы zabbix на новый сервер. Убедившись, что сайт на новом веб сервере отвечает быстрее, переключаю мониторинг обратно на старый сервер.
Понятно, что тест очень условный. Новый сервер стоит без нагрузки, отвечает стабильно, без пилы на графике. И тем не менее, я понимаю, что на нем будет лучше. Зачастую время отклика сайта зависит от факторов, которые вы не можете оценить заранее:
- Сетевую систему хостера
- Отклик жестких дисков
- Загруженность ноды виртуальных машин, если переезжаете на VDS.
Вы можете заказать сервер с хорошими параметрами по железу, но не получить быстрого отклика сайта по независящим от вас причинам. С этим столкнулся не так давно, когда пробовал использовать веб сервер у облачного провайдера. На словах все красиво - гибкая настройка параметров, отказоустойчивость, удобный бэкап и т.д. В общем, все то, чем хвалят облака. А на деле время отклика сайта было 300-400 мс при типовых настройках веб сервера. Использовался самый дорогой и быстрый тип диска. На выделенном бюджетном сервере при тех же настройках отклик был 100 мс.
Несмотря на всю условность подобного теста, он отвечает на поставленный вопрос - будет ли сайт после переезда на новый сервер отвечать быстрее. Я несколько раз проверял данную методику, в том числе и на своем сайта, не так давно переехав на новое место, так как старый виртуальный сервер стал работать заметно медленнее.
Настройка мониторинга времени ответа сайта
Выше я описал одно применение мониторинга времени отклика сервера, когда надо оценить эффективность переезда на другой сервер. Дальше я расскажу, как настроить мониторинг времени отклика сайта, с оповещением в случае снижения быстродействия, для контроля за работой сайта.
В принципе, ничего особенного делать не надо. Я просто поделюсь своим триггером, который я использую для адекватной реакции на замедление ответа сайта.
Итак, сначала мы настраиваем мониторинг сайта стандартным способом. Ждем некоторое время, чтобы накопились значения в итеме Response time. Возьму для примера свой сайт. Вот мой график ответа главной страницы сайта за последние 3 часа.
На графике хорошо видно всплеск, о которых я писал выше, с очень большим временем отклика. Не обращаем на него внимания. Я вижу, что мой сайт почти всегда отвечает быстрее 200 мс. Настроим триггер, который будет оповещать меня о том, что мой сайт стал работать медленнее. Я предлагаю такую настройку триггера.
Выражение проблемы:
{Web monitoring:web.test.time[serveradmin.ru,serveradmin главная,resp].count(#7,0.2,"ge")}>4
Выражение восстановления:
{Web monitoring:web.test.time[serveradmin.ru,serveradmin главная,resp].count(#3,0.2,"lt")}>1
Для определения проблемы медленного отклика сайта я беру 7 последних значений из итема Response time for step, сравниваю их со значением 0.2 с. Если среди этих 7-ми значений более 4-х (5 и более) окажутся выше, чем 0.2, я считаю, что с быстродействием сайта проблемы и шлю оповещение.
После того, как в трех последних значениях, более одного будут ниже 0.2, проблемы нет. То есть, если в трех последних значениях, 2 будут ниже 200 мс, то все в порядке.
Цифры в триггере получены экспериментальным путем. Возможно, у вас имеет смысл использовать другие. Я их менял по мере калибровки системы. С другими цифрами было либо много ложных срабатываний, либо не замечал вовремя проблемы.
Не стоит забывать и то, что время отклика, которые вычисляет мониторинг заббикс, зависит напрямую от работы самого заббикса. Если у вас сервер с агентом тормозит или имеет сетевые проблемы, вы будете получать оповещения о медленной работе сайта, хотя с ним все в порядке. Если такие явления будут часты, то стоит переделать триггер, включив его срабатывание только если 2 и более агента получают высокие значения отклика сайта. Это не сложно, но я не привожу пример, так как сам его не использовал и не отлаживал.
Заключение
Настройка качественного мониторинга непростая задача. В том, что я описываю, есть много подводных камней, неточностей и неудобства. Я это прекрасно вижу и понимаю. Но так как у меня нет специализации только на мониторинге, не имею возможности все делать качественно и основательно. Для меня заббикс это вспомогательный инструмент, помогающий в работе.
Мониторинг, сделанный на основе стандартных шаблонов или с помощью небольших локальных изменений, помогает в основном, в самых простых случаях среагировать на нештатную ситуацию, либо потом с помощью сырых данных постфактум проанализировать ситуацию.
Для того, чтобы мониторинг работал четко, без ложных срабатываний, своевременно оповещал о проблемах, с ним нужно плотно и много работать. Насколько это оправданно, каждый решает для себя в конкретной ситуации.
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
>> "Так вы сможете оперативно запускать проверки сайта с разных серверов, где установлены агенты забикса"
Чойта? когда все проверки из веб-сценариев осуществляются с сервера, а не с агента.
Да, это так. Я ошибся в формулировке, но тем не менее, совет актуален всё делать в шаблонах. Кстати, в сети есть шаблоны веб проверок, реализуемых через агентов. Я находил, проверял и использовал. Так что если для Вас это актуально, то вопрос решаемый.
Хорошо бы подобную статью, только по ответам сервера, 200/301/404/500 и подобных ошибок сервера
Zabbix не подходит для анализа логов. Их обычно много, а он не рассчитан на хранение большого количества подобных данных. Для этого стоит смотреть в сторону ELK - https://serveradmin.ru/category/elk-stack/
Ну ELK то понятное дело и для логов да, тут цель другая, просто типа curl-ом дергать сайт и записывать в базу timestamp и код ответа и рисовать красивые графички, да еще в придачу и сигналить если ошибок много будет. Плюсом что можно любой сайт повесить на мониторинг, не только к которому у тебя есть доступ :) Ну и Zabbix уже есть.
Так это же штатный функционал веб мониторинга - https://serveradmin.ru/monitoring-web-sayta-v-zabbix/
а нет статьи о мониторинге веб сайтов с конкретных хостов?
Не понял, что имеется ввиду. Использовать для проверок разные хосты, подключенные к мониторингу, а не сам zabbix server?
И что бы мы делали без вашей великолепной идеи
Очень интересная мысль
Сегодня получил уведомление от заббикса о том, что сайт тормозит. Зашел, посмотрел на график - действительно были проблемы. Когда закончились, получил уведомление, что все в порядке.
Так что с подобным мониторингом вы всегда будете в курсе, как отвечает ваш сайт.