Наблюдаемость Observability
Зачем
- Метрики Мониторинг, статистика
- Агрегация логов Logging
- Распределенная трассировка Distributed Trace
- Обработка исключений
- Аудит
- Health Check API
Реализуется в концепции OpenTelemetry (OTel), которая объединила OpenTracing + OpenCensus.
Характеристики:
- Последовательность
- Парсинг
- Транзакционность событий (логов)
- ИД событий
- Время событий
Плюсы-минусы
Плюсы:
- Ускорение разрешения инцидентов
- Повышение быстродействия системы
- Эффективное планирование ресурсопотребления
- Повышение эффективности разработки
- Более эффективное сотрудничество
- Повышение надёжности системы
Минусы:
- Сложная архитектура ИС реализующих принципы наблюдаемости
Patterns
- Простота расширения
- Корреляция данных
- Универсальные агенты Data Collector по протоколу OpenTelemetry
- Трансформация команд на принципах Site Reliability Engineering (SRE) four golden signals
- TODO
Reference Arch:
Технологии
Варианты решений
- Appdynamics
- Dynatrace
- Splunk
- ElastickSearch Kibana
- GrayLog, ELK
- Jaeger+ELK, Jaeger+ClickHouse, Zipkin
- Sentry
- Promtail + Loki + Grafana
- fluentbit + Yandex Data Streams + Yandex Query (и бекап логов через Yandex Transfer в S3)
Compare:
Data Collector
Основная проблема: потеря логов при больших объемах и интенсивности.
- Vector v.0.26 beta
- Fluentbit
- FluentD плохой опыт СберМегаМаркет с ElasticSearch v.7
- многие плагины FluentD просто не умеют работать с воркерами, используя по дефолту только один
- Filebeat
- LogStash
- GrayLog GELF
TODO:
- FluentD лучше LogStash?
- Fluentbit лучше FluentD?
- Vector лучше Fluentbit?
- Да, опыт СберМегаМаркет справляется с текущими объемами данных порядка 7 терабайт в сутки и количеством сообщений около 240 000 в секунду
- Да, опыт СберМегаМаркет справляется с текущими объемами данных порядка 7 терабайт в сутки и количеством сообщений около 240 000 в секунду
- Filebeat?
Time Series Database
- InfluxDB
- Prometeus
- Victoria metrics
TODO
Мы допустили все ошибки какие могли:
- Сразу не настроили отправку метрики с Promtail и Loki в prometheus, чтобы сразу увидеть, где проблема
- Не настроили сразу кеширование, лимиты и чанки
- Выбрали обычные ssd вместо не реплицируемых (нужна была макс скорость)
- Перегнули с количеством лейблов
- Не использовали драйвер Loki для контейнеров
- Сразу не угадали с количество реплик всех частей