Логи и метрики за 500 ₽: как я перестал жечь бюджет на мониторинг

AndrewKozlov

New member
Полтора года назад я поймал себя на неприятной мысли: за мониторинг небольшого проекта я платил больше, чем за сами серверы. Метрики, логи, трейсы, красивые дашборды — всё это выглядело солидно, пока в конце месяца не приходил счёт. Сначала я уговаривал себя, что observability — это инвестиция, а не расход. Потом посмотрел на цифру ещё раз, выдохнул и сел разбираться, что из этого набора мне реально нужно, а что просто приятный бонус за деньги, которых у проекта нет.

Начал с честного аудита. Выяснилось, что 90 процентов логов я не открывал ни разу, а самые шумные метрики приходили с уровня, который мне вообще не интересен. Отдельная боль — кардинальность: одна невинная метка с идентификатором пользователя раздула хранилище так, что диск на сервере заканчивался быстрее, чем бюджет на облако. Так я сформулировал для себя три требования. Мне нужны логи, метрики и алерты. Мне нужно платить в районе пятисот рублей в месяц. И мне нужно, чтобы всё это не превращалось в отдельную работу на полставки.

Собрал я в итоге довольно скромную конструкцию. Небольшой VPS за триста с лишним рублей, на нём VictoriaMetrics в одиночном режиме — она на удивление нетребовательна к памяти и поднимается почти без настройки. Рядом Grafana в открытой версии для графиков, хотя честно скажу: дашбордами я пользуюсь куда реже, чем думал. Сборщик логов и метрик живёт на тех же машинах, что и приложение, и отправляет данные по сети. Алерты уходят через Alertmanager прямо в телеграм-чат, и это, пожалуй, самая полезная часть всей системы. Плюс холодные логи складываю в дешёвое объектное хранилище — там они лежат почти бесплатно и нужны мне раз в сто лет для разбора инцидентов.

Самое сложное было не поднять, а не жадничать. Первая версия собирала вообще всё, и через три недели я упёрся в лимиты по диску и по деньгам одновременно. Пришлось учиться резать: отключил отладочные уровни, оставил только ошибки и предупреждения, добавил сэмплирование для высокочастотных метрик, поставил жёсткое окно хранения — тридцать дней горячих данных и всё, что старше, в архив. Кардинальность теперь проверяю как гигиену: если вижу метку с чем-то уникальным, похожим на почту, токен или номер заказа, вырезаю немедленно, не дожидаясь, пока это станет проблемой.

Что касается альтернатив, я перепробовал почти всё бюджетное. Полноценный Loki на своём железе жрёт ресурсы так, что экономия на облаке съедается стоимостью VPS побольше. Бесплатные тарифы managed-сервисов приятны на старте, но лимиты заканчиваются ровно тогда, когда начинается самый интересный трафик. Для простых проверок доступности вообще хватает пары лёгких аптайм-чеков, которые умеют стучаться по адресу раз в минуту и молчать, пока всё хорошо. А ещё я понял простую вещь: три метрики с настроенным внятным алертом полезнее трёхсот метрик без единого уведомления.

Отдельный совет про алерты, набитый собственными шишками. Настраивайте их на симптомы, а не на причины. Не нужно будить себя ночью из-за роста потребления памяти на пять процентов — будите тогда, когда пользователи видят ошибки или когда падает доступность. У меня правило: если алерт сработал, и я ничего не собираюсь с ним делать прямо сейчас, значит, это не алерт, а мусор. После этой чистки количество уведомлений упало раз в двадцать, а польза выросла, потому что я перестал их игнорировать.

Если коротко про деньги, то у меня выходит так: сервер около трёхсот рублей, объектное хранилище сто пятьдесят, телеграм для уведомлений — ноль. Итого примерно те самые пятьсот рублей, о которых в заголовке. Это не enterprise-мониторинг, и я не собираюсь делать вид, что он заменяет серьёзные платформы. Но для пет-проекта, небольшого сервиса или команды из двух человек этого хватает с запасом. А вы как решаете эту задачу — собираете стек руками за копейки, платите за managed или держите что-то совсем простое вроде аптайм-чеков, и что из этого оказалось самым удачным решением?
 
Назад
Вверх