Как стать автором
Поиск
Написать публикацию
Обновить
125.12
Amvera
Amvera — облако для хостинга IT-приложений

Золотые сигналы SRE для самых маленьких. Или как сделать качественный мониторинг, если вы не Enterprise

Время на прочтение3 мин
Количество просмотров6.4K

Проекты ломаются, иногда очень коварно. Крупные компании используют различные подходы, чтобы обеспечить наблюдаемость, покупают дорогие сервисы, нанимают SRE-инженеров. Но если проект небольшой, условный телеграм-бот, многие решения по мониторингу могут быть избыточными. А в нашем облаке Amvera, пользователи, преимущественно, хостят такие маленькие проекты. И перед нами стала задача обеспечить для них Observability так, чтобы это было максимально просто, дешево(желательно бесплатно) и обеспечивало лучшие SRE-практики для наших пользователей. Так, чтобы пользователи получили опыт наблюдаемости работы сервисов, близкий опыту крупной компании с SRE-отделом, только без сложности настройки и условно бесплатно.

Три кита, на которых стоит наблюдаемость, и четыре золотых сигнала SRE

Для обеспечения наблюдаемости обычно используют логи, метрики и трассировки (и на них можно еще повесить алерты). И существуют “золотые сигналы” SRE. 

1. Задержка(Latency)  —  показывает скорость отработки запросов и ее изменение.

Так, для себя мы сделали специальное приложение, которое пингует наши сервисы и производит некоторые стандартные операции (сборка проекта и т.д.) и присылает алерты в случае аномалий и ежедневную статистику задержек.

2. Трафик (Traffic)  —  как влияет количество пользователей/операций на поведение системы. Как пример, мы знаем, что в нашем сервисе в час пик сборки проходят на 20 — 30% дольше тех, которые пользователи запустили ранним утром. 

3. Ошибки (Errors)  —  тут все просто, это ошибки)

4. Насыщенность (Saturations)  —  насколько близок сервис к своим возможностям по потреблению ресурса. Как пример  —  при использовании CPU на значение стремящееся к 100% (я бы сказал 90%) вы можете наблюдать фактическую деградацию производительности приложения. За потреблением ресурса полезно следить и не загонять его в “Красную” зону.

Я постараюсь рассказать, как мы реализовали базовую встроенную наблюдаемость для наших пользователей и какие сервисы используем сами.

Мы реализовали самый простой функционал, который закроет основные потребности в наблюдаемости приложений.

Логи и ошибки по ним

Раньше мы просто стримили логи в интерфейс пользователей. Это помогало для развертывания проектов, но об ошибках вы бы узнали только постфактум.

Мы добавили алерты в телеграм бот, если в логе встречается определенная фраза. Теперь пользователи могут задать любое слово или фразу, и если оно встретится в логе, получить уведомление на почту.

Анализ ошибок в логах
Анализ ошибок в логах

Разумеется, просто error вам мало что даст, лучше задавать конкретные предложения, характеризующие те ошибки, которые вы хотите отслеживать.

Превышение лимита по ОЗУ и CPU

В приложениях бывают утечки памяти, да и просто может повышаться нагрузка. Для отслеживания этих моментов мы сделали алерты на превышение ОЗУ и CPU.

Мониторинг потребления ресурса
Мониторинг потребления ресурса

Ошибки сборки и запуска

Будет полезно, чтобы понять, развернулась ли новая версия. Для этого можно настроить тригеры на ошибки сборки или запуска.

Ошибки сборки и запуска
Ошибки сборки и запуска

Поддержка liveness и readines проб

Полезно отслеживать, в каком состоянии находится ваше приложение, готово ли оно взаимодействовать с сетью и т.д. Для этого мы реализовали поддержку liveness и readines проб.

Пробы liveness и readines
Пробы liveness и readines

Пробы k8s не предполагают функционала для уведомления по какому-либо критерию, но наша система принимает решение на основе ивентов Kubernetes. Уведомление отправляется в результате получения ивента с информацией о негативной пробе. Например, если readiness probe оказалась негативной, Kubernetes дает ивент с сообщением, которое начинается «Readiness probe failed…».

Падение проекта

Если ваш проект проработал минимум 30 минут, упал в ошибку и не может перезапуститься в течение 7 минут, вы получите сообщение об ошибке.

Метрики

Для отслеживания динамики потребления ресурсов есть встроенные метрики.

Метрики потребления ОЗУ и CPU
Метрики потребления ОЗУ и CPU

Логи

И логи для анализа работы приложения.

Пример работы логов
Пример работы логов

Если вы решили организовать наблюдаемость самостоятельно

Вам потребуются инструменты для сбора логов, метрик, трейсов(возможно) и отслеживания uptime работы сервисов. 

Для логов хорошо подойдет ELK/OpenSearch (но это сложные и часто избыточные решения) или Grafana Loki.

Для метрик мы сами используем Grafana+Prometheus, но планируем перейти на VictoriaMetrics из-за большей стабильности и необходимости хранить длинную историю.

Пинг сервисов можно выбрать любой, на рынке много как бесплатных, так и платных решений. 

Остальные решения относятся скорее к профессиональным решениям для сложных систем.


Пока реализованная нами функциональность покрывает только часть пунктов, которые принято отслеживать в SRE, но зато она бесплатна и встроена из коробки. Cо временем мы добавим и другие алерты, чтобы отслеживать работоспособность приложений, запущенных в Amvera, можно было еще лучше. Если у вас есть идеи, что еще было бы полезно реализовать для обеспечения наблюдаемости, или знаете хорошие решения, буду рад обсудить в комментариях.

Теги:
Хабы:
Всего голосов 10: ↑6 и ↓4+3
Комментарии1

Публикации

Информация

Сайт
amvera.ru
Дата регистрации
Численность
11–30 человек
Местоположение
Россия
Представитель
Кирилл Косолапов