Сайт стал открываться медленнее, или хостинг прислал письмо, что сервер перегружен. Причин несколько: боты перебирают адреса, запустили рекламу, поисковый робот обходит каталог, одна страница отвечает дольше остальных. Гадать не нужно: каждый запрос веб-сервер записывает в журнал. На сервере из примеров ниже за сутки набиралось около 200 тысяч строк, и глазами их не прочитать.
Для этого у нас свой инструмент, supervision. Мы написали его в мае 2025 года. Он отбирает строки журнала по условиям и считает их сразу за несколько отрезков времени: последние полчаса, час, три часа, полсуток, сутки. Расскажем, какие вопросы мы задаём журналу и как читать ответ.
Что записано в журнале веб-сервера
Одна строка - один запрос: время, адрес посетителя, какую страницу или файл он запросил, что ответил сервер, с какой страницы пришёл и какой программой открыл сайт. Если это включено в настройках, в строку попадает и время ответа. Фильтр защиты дописывает номер правила, по которому остановил запрос.
Счётчик посещаемости видит меньше. Он срабатывает, когда страница загрузилась в браузере. Большинство ботов страницы не отрисовывают и счётчик не запускают. Если сервер отказал в доступе или упал с ошибкой, страница сайта не загрузилась, и счётчику негде сработать. В журнале такой запрос есть.
Что спрашиваем у журнала
- →Сколько запросов пришло. Сравниваем с тем же отрезком в обычный день. Рекламу не запускали, а запросов вдвое больше - первыми проверяем ботов.
- →Какую долю остановила защита. Фильтр на веб-сервере пишет номер правила у каждого остановленного запроса, фильтр внутри сайта ведёт свой журнал. Сводка считает обе ступени.
- →Какие правила срабатывают чаще. По ним видно, что ищут боты: служебные файлы, чужие панели управления, известные дыры 1С-Битрикс.
- →Сколько запросов ждут ответа дольше двух секунд. Запросы программ, которые называют себя ботами, в подсчёт не берём.
- →Сколько ошибок получают посетители. Отдельно считаем ошибки у переходов по рекламным ссылкам: их видно по меткам в адресе.
Пять отрезков времени в одной таблице
На каждый вопрос сводка отвечает сразу за несколько отрезков, отсчитанных от текущего момента. Отрезки вложены друг в друга: в последние сутки входят последние 12 часов, в них последние 6 и так далее. Для каждого отрезка видно, сколько запросов пришло, сколько совпало с условием и какая это доля. Доля выше порога - отрезок получает отметку.
Вот сводка с одного сервера за май 2025 года: доля запросов, которые остановил фильтр на веб-сервере. Порог в этом отчёте - 0,5%.
| Отрезок до отчёта | Пришло запросов | Остановил фильтр | Доля | Порог 0,5% |
|---|---|---|---|---|
| 5 минут | 656 | 2 | 0,30% | |
| 15 минут | 2 512 | 2 | 0,08% | |
| 30 минут | 4 729 | 3 | 0,06% | |
| 1 час | 10 075 | 4 | 0,04% | |
| 3 часа | 30 899 | 73 | 0,24% | |
| 6 часов | 65 053 | 95 | 0,15% | |
| 12 часов | 119 349 | 618 | 0,52% | превышен |
| 24 часа | 175 730 | 795 | 0,45% | |
| 3 дня | 266 756 | 1 074 | 0,40% |
Сутки выглядят спокойно: 0,45%, ниже порога. Отметку получил отрезок 12 часов. Разница между соседними отрезками показывает, когда был всплеск: между 6 и 12 часами до отчёта фильтр остановил 523 запроса из 54 тысяч, почти 1%. В остальное время доля была от 0,15 до 0,3%. В отчёте за одни сутки этот всплеск растворился бы.
Короткие отрезки читают осторожно. За 5 минут пришло 656 запросов, и двух остановленных хватило на 0,30%. Отметку на коротком отрезке проверяют по длинным.
Порог и страница со сводкой
На рабочей странице сводка идёт за пять отрезков: полчаса, час, 3 часа, 12 часов и сутки. Порог тревоги - 3%. Для сравнения: на чистых сайтах, где мы считали, фильтр останавливал меньше процента запросов, на заражённом - 15%. Цифры того случая - в статье про межсетевой экран.
Страница закрыта паролем и открывается в браузере, заходить на сервер не нужно. Сводку считают на том же сервере, где лежит журнал. В журнале адреса посетителей, и выгружать его на сторонние сервисы ради статистики не приходится. Каждый отчёт дописывается в журнал отчётов за день, поэтому сегодняшние цифры есть с чем сравнить.
Какие правила срабатывают чаще
Вторая таблица сводки - десять правил фильтра, которые срабатывали чаще остальных, по тем же отрезкам. У каждого правила видно число срабатываний и долю от всех запросов. Правило, которое одно набирает долю выше порога, получает отметку. По верхним строкам понятно, что происходит.
- →Наверху правила про служебные файлы и копии. Сайт перебирает сканер, как и тысячи других сайтов. Фильтр такие запросы останавливает, это фон.
- →Наверху правило под известную дыру 1С-Битрикс. Сайт ищут именно по ней. Проверяем, стоит ли обновление платформы, которое её закрывает.
- →Правило выросло после обновления сайта или запуска рекламы. Проверяем, не задевает ли оно живых посетителей. Такие случаи разобраны в статье про фильтр на веб-сервере: от метки автотаргетинга Директа до смайликов в чате Битрикс24.
Медленные ответы считают без роботов
Чтобы понять, тормозит ли сайт у людей, считаем запросы, на которые сервер отвечал дольше двух секунд. Запросы программ, которые называют себя ботами, в подсчёт не берём: поисковый робот за ночь обходит весь каталог, и его медленные ответы смешались бы с ответами людям.
Пример с того же сервера, 15 мая 2025 года: за сутки пришло 219 703 запроса, и 187 из них, где программа не называла себя ботом, сервер обрабатывал дольше двух секунд. Это меньше десятой доли процента. Боты-взломщики чаще представляются обычным браузером, поэтому часть из 187 могли дать и они. Если добавить условие на адрес, медленные ответы считаются отдельно у каталога, поиска или оформления заказа, и видно, какая страница тормозит.
Тем же способом считают ошибки. Переход с рекламы, который закончился ошибкой сервера, счётчик посещаемости не увидит, а в журнале он есть вместе с метками рекламной ссылки. Каждая такая строка - оплаченный клик, после которого человек не увидел сайт.
Чего сводка не делает
- →Не останавливает запросы. Это работа фильтров защиты, сводка показывает, что они остановили.
- →Не проверяет, открывается ли сайт снаружи. Если веб-сервер не отвечает, журнал молчит. Как искать причину, когда сайт лежит, а сервер не нагружен, - в статье про ошибку 504.
- →Не называет виновника по адресу. Сводка считает запросы по условиям. С каких адресов шёл наплыв, находят дальше, разбирая журнал за отрезок, который получил отметку.
- →Не присылает сообщений. Отметка о превышении порога стоит в таблице на странице.
Пять вопросов подрядчику
- 01Сколько запросов получает сайт за обычные сутки и сколько из них приходится на поисковых роботов?
- 02Какую долю запросов останавливает защита и при какой доле вы начинаете проверять сайт на заражение?
- 03Как вы отличаете медленную страницу от наплыва ботов?
- 04Получают ли ошибки посетители с рекламы и как вы это проверяли?
- 05Сколько дней хранится журнал веб-сервера и пишется ли в него время ответа?
Ответ на пятый вопрос нужен до любого сбоя. Если журнал хранится несколько дней, сегодняшний наплыв не с чем сравнить, а без времени ответа медленную страницу по журналу не найти.



