Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Импульс.Т1 - Три сигнала для мониторинга микрос...

Ruslan Gainanov
February 26, 2025
1

Импульс.Т1 - Три сигнала для мониторинга микросервисов

Мониторинг микросервисов крайне необходимая часть качественной работы современных веб-сервисов. Мониторинг помогает оценить состояние системы в целом и сигнализировать о проблемах, но при условии, что вы заранее подготовились и добавили расчет метрик и настроили алерты для определения возможных неполадок в системе. За счет логов можно более точно локализовать обнаруженные неполадки, но в случае множества микросервисов это может быть затруднительно. А если возникла ошибка в сервисах, разрабатываемых не вами, то это почти невозможно. Особенно трудной задачей является поиск узких мест в системе. Например, когда ваша система возвращает ответ пользователю дольше, чем рассчитывали, но при этом все сервисы работают в штатном режиме. Как решать такие задачи?

Здесь могут помочь распределенные трассировки микросервисов, за счет построения графа трассировок и расчета метрик АРМ можно быстро локализовать проблемные места и выполнить необходимые оптимизации. За последнее время технологии в этой области далеко шагнули вперед, появились стандартизированные решения и были разработаны библиотеки для автоинструментации, которые позволяют без сложных манипуляций с кодом воспользоваться всеми преимуществами распределенных трассировок.

Спикер расскажет, что необходимо для запуска систем трассировок на базе open-source решений, покажет на простых примерах как настроить сбор трейсов с микросервисов на Python (fastapi, SQLAlchemy, httpx), как потом работать с трейсами и какую полезную информацию можно извлечь.
Доклад расчитан на широкую аудиторию, это могут быть разработчики использующие разные языки программирования, архитекторы и девопс-инженеры. В целом, это все те у кого стоит задача минимизировать количество ошибок, увеличить скорость реакции на ошибки, оптимизировать скорости работы приложений и найти узкие мест среди множества связанных микросервисов.

Ruslan Gainanov

February 26, 2025
Tweet

More Decks by Ruslan Gainanov

Transcript

  1. 2 2 Обо мне главный инженер DevOps + Больше 10

    лет в IT + Спикер DevOops, Импульс, UDW + Тимлид команды DevOps на проекте Осмакс Руслан Гайнанов
  2. 6

  3. 11

  4. 12

  5. 13

  6. 14

  7. 15

  8. 16

  9. 17

  10. 18

  11. 24 Три сигнала телеметрии Метрики — количественные данные некоторых параметров

    системы Логи — структурированные данные о поведении и события в системе
  12. 25 Три сигнала телеметрии Метрики — количественные данные некоторых параметров

    системы Логи — структурированные данные о поведении и события в системе Трейсы — данные о выполняемых операциях внутри системы
  13. 26 Три сигнала телеметрии = Observability Метрики — количественные данные

    некоторых параметров системы Логи — структурированные данные о поведении и события в системе Трейсы — данные о выполняемых операциях внутри системы
  14. 31 Из чего состоит трассировка? Спан (span) — единица какой-либо

    работы/операции Трейс (trace) — объединение спанов по одному запросу
  15. 38 Классический подход Телеметрия собирается с помощью различных библиотек Данные

    обрабатываются и хранятся раздельно Нет корреляции между событиями
  16. 39 Современный подход Сбор телеметрии через инструментацию Единый обработчик с

    обогащением данными Связанные между собой события С помощью OpenTelementry
  17. 42 Простой веб-сервер на Python-Flask Файл app.py: from flask import

    Flask app = Flask(__name__) @app.route("/") def index(): return "hello-world" if __name__ == "__main__": app.run(host="0.0.0.0", port=8001)
  18. 46 Пример спана в консоли { "body": "hello-world", "severity_text": "INFO",

    "attributes": { "otelServiceName": "flask-app", "code.filepath": "./docker-tracing- demo/flask_app/app.py", "code.function": "index", "code.lineno": 11 }, "timestamp": "2024-08-24T18:52:11.966384Z", "trace_id": "0x7ea0f1afc744150ffc7bb451d1906cf0", "span_id": "0xf296a5fd627ea074", }
  19. 50 Trace Context — передача контекста в HTTP заголовках Как

    связать одним трейсом два сервиса?
  20. 51 Trace Context — передача контекста в HTTP заголовках Как

    связать одним трейсом два сервиса?
  21. 52 Итак, мы все настроили ▪ Сбор метрик, логов и

    трейсов ▪ Передачу контекста между сервисами ▪ Дашборды на основе метрики о запросах: ▪ Availability: Error Rate ▪ Latency: P99 response time
  22. 63 Посмотреть и попробовать ▪ Useful Links ▪ Logs-to-Trace &

    Trace-to-Logs ▪ Tempo for Traces ▪ Prometheus for Metrics ▪ Loki for Logs ▪ OpenTelemetry Collector for Processing ▪ Grafana & Jaeger for UI ▪ Flask & FastAPI applications ▪ Auto- & Manual-Instrumentation ▪ Pyrra for calculating SLOs, Error Budget ▪ AlertManager & Karma for alerts @GRomR1/monitoring-microservices-demo
  23. Спасибо Руслан Гайнанов главный инженер DevOps, T1 Иннотех @gainanovrus Создаем

    инновационные решения для автоматизированного управления устройствами в гетерогенной среде
  24. 70

  25. 71 OpenTelemetry (Metrics, Traces and Logs) OpenCensus (Metrics, Traces) История

    OpenTelemetry OpenCensus ▪ Старт в 2018 ▪ Проект Google ▪ API и SDK ▪ Метрики и трейсы ▪ Google, Splunk, Microsoft OpenTracing ▪ Старт в 2016 ▪ Проект CNCF ▪ Только API ▪ Трейсы ▪ Uber, Datadog, RedHat, Jaeger OpenTelemetry ▪ Старт в 2019 ▪ Проект CNCF ▪ Spec, API и SDK ▪ Трейсы и метрики ▪ Объединил всех OpenTracing (Traces) + =
  26. 72 OpenTelemetry в 2024 ▪ Под контролем группы CNCF (no

    vendor-lock) ▪ 5k on GitHub ▪ Stable SDK по многим ЯП ▪ Интеграции с: Grafana, Kibana, Jaeger и др. Traces Metrics Logs C++ Stable Stable Stable C#/.NET Stable Stable Stable Java Stable Stable Stable PHP Stable Stable Stable Go Stable Stable Beta JavaScript Stable Stable Development Python Stable Stable Development Ruby Stable Development Development Swift Stable Development Development https://opentelemetry.io/docs/languages/#status-and-releases