Производительность
Раздел «Производительность» собирает на одной странице данные хоста, процесса Gately и всех сайтов и отправляет оповещение через Центр уведомлений, когда метрика долго держится выше порога, а затем — уведомление о восстановлении, когда условие снимается. Он находится на боковой панели: Система → Производительность.
Раздел рассчитан на случаи вроде ЦП, загруженного под завязку посреди ночи, всплеска соединений на сайте или замедлившегося бэкенда, который никто не заметил; данные хранятся только в памяти. Для истории дольше 24 часов, сводки по нескольким экземплярам и сложных запросов используйте Prometheus и Grafana.
Панель
В правом верхнем углу переключаются диапазоны 60 секунд, 1 час и 24 часа.
Хост и процесс Gately
| График | Содержимое |
|---|---|
| ЦП хоста | Средняя загрузка всех ядер машины |
| Память / диск хоста | Доля занятой памяти от физической (без освобождаемого кэша), занятая доля раздела с каталогом конфигурации |
| Нагрузка системы | Нагрузка за 1 минуту |
| ЦП процесса Gately | Доля всей машины, которую занимает процесс Gately; считается так же, как ЦП хоста |
| Память процесса Gately | Резидентная память (МБ) |
| Файловые дескрипторы / горутины | Открытые файловые дескрипторы и горутины Go процесса |
Замер делается каждые 5 секунд: в диапазоне 60 секунд показан каждый замер, в диапазоне 1 час — одна точка в минуту (среднее за минуту), в диапазоне 24 часа — одна точка за 5 минут. Пунктир на графиках ЦП — пик внутри каждой точки, поэтому короткие всплески не растворяются в среднем. Наведите курсор на график, чтобы увидеть значения в нужный момент.
Некоторые платформы отдают не все метрики (например, на macOS нет загрузки ЦП); такие графики показывают «Нет данных».
Сайты
При включённом модуле «Веб-службы» выводятся все работающие сайты (включая сайты по умолчанию):
| Столбец | Значение |
|---|---|
| В обработке | Запросы, которые сайт обрабатывает прямо сейчас, включая долгие соединения вроде WebSocket |
| Запросов/с | Среднее число запросов в секунду примерно за последние 60 секунд |
| Доля 5xx | Доля ответов 5xx среди завершённых ответов примерно за последние 60 секунд |
| Задержка P95 | Оценка 95-го процентиля времени до первого байта примерно за последние 60 секунд |
| Бэкенды | Исправные бэкенды / все бэкенды и число пересылаемых соединений |
Нажмите на сайт, чтобы открыть его статистику с динамикой запросов, ошибок и задержки за 24 часа.
Время до первого байта
Задержка — это «время до первого байта»: от прихода запроса до отправки заголовков ответа; оно показывает, насколько быстро отвечает бэкенд или сам сайт. Не учитываются:
- время передачи тела ответа (большие загрузки не увеличивают задержку);
- WebSocket и другие запросы со сменой протокола;
- запросы, оборванные контролем доступа или администратором.
Каждый запрос попадает в один из 50 узких интервалов (от 1 мс до 60 с, соседние различаются примерно на 10–25 %). В каждом интервале накапливаются число запросов и суммарное время; процентиль берётся как среднее время в соответствующем интервале, поэтому ошибка не превышает ширины интервала, а данные отдельных запросов не сохраняются. Гистограмма gately_site_request_duration_seconds, экспортируемая в Prometheus, использует 13 привычных границ из этого набора.
Правила оповещений
Нажмите «Добавить правило оповещения». При создании шаблон заполняет типичное правило (высокая загрузка ЦП хоста, мало места на диске, ошибки 5xx на сайте, медленные ответы сайта и др.), которое затем можно поправить.
| Поле | Описание |
|---|---|
| Название | Обязательно, до 64 символов, выводится в заголовке уведомления |
| Метрика | См. таблицу ниже |
| Порог | Оператор >, >=, < или <= и значение; единица зависит от метрики |
| Длительность | От 1 до 1440 минут. Оповещение отправляется, только если условие держится столько времени; одно возвращение ниже порога перезапускает отсчёт |
| Сайты | Для метрик сайтов и узлов бэкенда; пусто — все сайты |
| Минимум запросов | Для доли 5xx и задержки, по умолчанию 20. Проверка не выполняется, пока за последние ~60 секунд запросов меньше, чтобы одна-две ошибки или медленных запроса на тихом сайте не вызывали оповещение |
| Уровень оповещения | Предупреждение или ошибка; задаёт уровень события уведомления |
| Заметка, включение | Необязательно |
| Метрика | Единица | Проверяется для |
|---|---|---|
| Загрузка ЦП хоста | % | Этот хост |
| Использование памяти хоста | % | Этот хост |
| Заполненность диска хоста (раздел с каталогом конфигурации) | % | Этот хост |
| Загрузка ЦП процессом Gately | % | Процесс Gately |
| Резидентная память процесса Gately | МБ | Процесс Gately |
| Запросы сайта в обработке | шт. | Каждый сайт |
| Запросов в секунду на сайте | запр/с | Каждый сайт |
| Доля ответов 5xx на сайте | % | Каждый сайт |
| Время до первого байта P95 на сайте | мс | Каждый сайт |
| Соединения узла бэкенда | шт. | Каждый узел бэкенда |
Метрики сайтов и узлов бэкенда проверяются и оповещаются по каждому объекту отдельно: одно правило «доля 5xx > 5 %» может отдельно сработать для двух сайтов. «Запросов в секунду на сайте < 1» позволяет заметить внезапно пропавший трафик.
Проверка и уведомления
- Все включённые правила проверяются каждые 5 секунд.
- Когда условие начинает выполняться, объект переходит в «Ожидание»; если оно держится заданное время, объект переходит в «Сработало» и публикуется событие
perf.alert. - Когда условие сработавшего оповещения снимается, публикуется событие
perf.recovered. Долю 5xx и задержку сайта нельзя оценить, если за последние ~60 секунд слишком мало запросов; это тоже считается снятием, и уведомление об этом сообщает. - Если сайт удалён или выключен, его оповещения исчезают без уведомления о восстановлении.
Вверху страницы перечислены объекты в ожидании и сработавшие, с текущим значением и длительностью.
Изменение названия, уровня или заметки правила сохраняет текущий отсчёт; изменение метрики, порога, длительности, сайтов или минимума запросов, а также выключение правила сбрасывает его отсчёты и оповещения. Для уже сработавшего оповещения отправляется уведомление о восстановлении с пометкой, что правило удалено, отключено или изменено. Отсчёты и состояния оповещений хранятся только в памяти и начинаются заново после перезапуска.
Оповещения отправляются через Центр уведомлений: добавьте правило уведомлений, подписанное на «Производительность: оповещение сработало» и «Производительность: оповещение снято» (это делает шаблон «Оповещения о производительности»), иначе оповещения записываются только в журнал этой страницы, и страница показывает подсказку. Тишина Центра уведомлений действует и на оповещения о производительности; у каждого объекта свой источник события, поэтому они не глушат друг друга. Длительность уже защищает от дребезга, так что тишина обычно не нужна.
Ресурсы и ограничения
- История хранится только в памяти: для хоста и процесса — одна точка в минуту за 24 часа; для задержки сайтов — P50 и P95 за каждую минуту, около 23 КБ на сайт с трафиком.
- До 200 правил оповещений и до 200 сайтов в одном правиле.
- При включённом модуле «Веб-службы» каждый запрос стоит одно дополнительное чтение часов и несколько обновлений счётчиков.
Метрики мониторинга
Пока раздел «Производительность» включён, /api/metrics дополнительно экспортирует метрики хоста и процесса по последнему замеру и число сработавших оповещений по правилам; см. Мониторинг.
API
| Эндпоинт | Описание |
|---|---|
GET /api/perf/overview?range=60s|1h|24h | История хоста и процесса |
GET /api/perf/sites | Метрики каждого сайта примерно за последние 60 секунд |
GET /api/perf/alerts | Объекты в ожидании и сработавшие |
GET /api/perf/metrics | Метрики, доступные для оповещений |
/api/perf/rules | Создание, чтение, изменение и удаление правил оповещений, включение, порядок и группы |
Для чтения нужно право perf:read, для изменения правил — perf:write; см. API-токены.