Мониторинг
Введение
User space ПО не имеет прямого доступа к инфе о current состоянии системы и процессов, поэтому в linux есть “каталог” /proc, где и хранится вся инфа в виде файлов (linux же) о состоянии железа, процессов и т.д. Но это не настоящий каталог - он нигде не хранится (ни на SSD/HDD, ни на RAM) (и файлы там имеют нулевой размер), он просто генерируется на лету, когда запрашиваешь данные (по команде ls, например). Получается, ПО типа ps, htop, uname, uptime и т.п. берут инфу из этого каталога.
cat /proc/version
# и
uname -a
# покажут примерно одно и то жеМониторинг - это сбор, обработка, агрегирование и отображение количественных показателей системы в реальном времени. Сервисы можно разделить на три слоя, которые нужно мониторить:
-
Инфраструктурный слой Данные о работе ПО и оборудования (железо) опорной инфраструктуры
-
Прикладной слой Данные о работе ПО, реализующих бизнес-логику сервера
-
Бизнес-слой Данные об активности пользователя или конечной точки подключения
Хороший мониторинг
Хорошая система мониторинга оповещает о проблемах, а идеальная делает это до того, как с ними столкнулись юзеры и произошли бизнес-потери.
Система должна соответствовать двум принципам:
- Отслеживать метрики, помогающие принимать решения и НЕ мониторить лишнее.
- Уведомлять, когда еще что-то можно сделать без последствий для работоспособности сервиса и НЕ спамить ложной тревогой.
Три популярных подхода к сбору метрики:
-
LTES / 4 golden signals (Google SRE)
- Latency Время на обработку одного запроса (с разделением на успешные/ошибочные)
- Traffic Кол-во запросов к компоненту (для веб-сервера это могут http-запросы, для БД - транзакции и т.п.)
- Errors Кол-во ошибок
- Saturation Количественная метрика, отражающая, насколько компонент использует свои ресурсы и сколько у него «работы в очереди»
-
RED (Brendan Gregg)
- Rate Кол-во запросов в единицу времени (RPS, например)
- Errors Кол-во ошибок
- Duration (Latency) Время обработки одного запроса
-
USE (Tom Wilkie)
- Utilization Время/процент использования ресурса, занятого «полезной работой»
- Saturation (насыщенность) Кол-во отложенной/поставленной в очередь «работы»
- Errors Кол-во ошибок
Для веб- или application-сервера лучше подходят RED и LTES, для шины данных или обработчиков очередей задач - USE.
Prometheus Алертинг Мониторинг, который я разворачивал в рамках практической работы: Module 22 Мониторинг HTTP status codes