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

KD.Conf - Мониторинг распределенных микросервис...

KD.Conf - Мониторинг распределенных микросервисов (Гайнанов Руслан)

Доклад о том, как мониторинг распределенных микросервисов помогает сделать сервис более быстрым и исправить ошибки в коде, а также:
— как оценивать состояние системы с помощью мониторинга микросервисов;
— как рассчитывать метрики, настраивать уведомления о неполадках, искать и устранять узкие места;
— какие существуют open-source решения для трассировки микросервисов без сложных манипуляций с кодом;
— как собирать и анализировать трейсы от микросервисов на Python.

Запись выступления - https://youtu.be/__gkKpddQ6I

Ruslan Gainanov

January 08, 2025
Tweet

Other Decks in Programming

Transcript

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

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

  3. 10

  4. 11

  5. 12

  6. 13

  7. 14

  8. 15

  9. 16

  10. 17

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

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

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

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

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

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

    обогащением данными Связанные между собой события С помощью OpenTelementry
  17. 40 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
  18. 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)
  19. 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", }
  20. 50 Trace Context — передача контекста в HTTP заголовках Как

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

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

    трейсов ▪ Передачу контекста между сервисами
  23. 55 Итак, мы все настроили ▪ Сбор метрик, логов и

    трейсов ▪ Передачу контекста между сервисами ▪ Дашборды
  24. 56 Итак, мы все настроили ▪ Сбор метрик, логов и

    трейсов ▪ Передачу контекста между сервисами ▪ Дашборды ▪ Алерты?!
  25. 59 SLA/SLO/SLI SLO контракт с клиентами системы c описанием последствий

    несоответствия SLO SLA SLI значение, которого мы хотим достичь и не проваливаться ниже этой границы числовое значение какой-то конкретной характеристики, метрика обещаем стремимся измеряем
  26. 66

  27. 69 Посмотреть и попробовать ▪ 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 ▪ Pyroscope for Continious Profiling @GRomR1/monitoring-microservices-demo
  28. Спасибо Руслан Гайнанов главный инженер DevOps, T1 Иннотех @gainanovrus Создаем

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