Что такое мониторинг?
У нас есть приложение и нужно как-то проверить, а оно вообще там живое нет? Желательно словить момент, когда оно не живое до того как это сделают пользователи. Народная мудрость: быстро поднятое не считается упавшим – тут работает прекрасно.
Если у нас один инстанс на бэке то никакой мониторинг не нужен, можно и по логам быстро понять, что что-то не так. Однако если у тебя сотни тысяч клиентов, а на бэке у тебя 10-ки разных сервисов по 5-6 инстансов каждый без грамотного мониторинга ты быстро дашь ебу.
Есть два основных типа мониторинга: pull и push.
Мобилки да и вообще весь фронтенд работает по типу push. Это когда мы агрегируем метрики локально и затем переодически отправляем их на бэк. Если же сети нет, ждем пока появится и отправляем позже.
Бэк почти всегда работает по типу pull. Это когда наше приложение также собирает метрики в памяти, затем какая-то сторонняя система сама дергает наш бэк и мы отдаем ей то, что насобирали.
Как это выглядит в коде. В мобилке и фронте чаще всего используют проприетарные SDK: типа Firebase Crashlytics, Apple MetricKit, Setry, Яндекс Метрика либо вообще пишут что-то свое. SDK в свою очередь отправляет метрику в какую-то TSDB (time series database).
На бэке почти всегда используется стандарт OpenTelemetry. Для любого языка есть SDK в котором ты объявляешь переменные (их три типа) и далее просто используешь их в коде. Затем ты делаешь какой-то endpoint типа "/metrics" в котором ты, используя тот же SDK, генеришь ответ в специальном формате. После уже какой-нибудь Prometheus дергает этот endpoint и уже сохраняет метрики в TSDB.
Далее мы уже идем в интерфейс который работает с TSDB и создаем какие-то алерты, строим графики, перегоняем данные в другие БД короче развлекаемся как хотим.
Post #581
2.35K
- 🤡 29
- 🔥 14
- ❤ 8