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

Дружим Django с Azure Insights. Logging, monitoring, tracing

Дружим Django с Azure Insights. Logging, monitoring, tracing

Александр Катаев (Ingram Micro Cloud) @ Moscow Python Meetup 68

"Мониторинг, tracing, логирование — важные вещи в любом продукте. В нашем продукте для этих вещей используем Azure Insights. Расскажу о некоторых возможностях, которые он предоставляет, как мы его дружили с Django, с какими сложностями столкнулись".

Видео: http://www.moscowpython.ru/meetup/68/django-and-azure-insights/

Moscow Python Meetup
PRO

September 26, 2019
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. Дружим Django
    с Azure Insights
    1
    Logging, Tracing, Monitoring

    View Slide

  2. Plan
    • Логирование
    • Метрики:
    •Запросы к сервису
    •Зависимости:
    •Обращения к БД
    •Подзапросы к другим сервисам
    • Распределенная трассировка
    • Единый интерфейс для анализа данных службой
    поддержки и разработчиками
    2

    View Slide

  3. https://peter.bourgon.org/blog/2017/02/21/metrics-tracing-and-logging.html
    Observability
    3

    View Slide

  4. https://peter.bourgon.org/blog/2017/02/21/metrics-tracing-and-logging.html
    Observability
    4

    View Slide

  5. https://peter.bourgon.org/blog/2017/02/21/metrics-tracing-and-logging.html
    Observability
    5

    View Slide

  6. https://peter.bourgon.org/blog/2017/02/21/metrics-tracing-and-logging.html
    Observability
    6

    View Slide

  7. https://peter.bourgon.org/blog/2017/02/21/metrics-tracing-and-logging.html
    Observability
    7

    View Slide

  8. Trace
    Связывает распределенные во времени
    интервалы
    Включает в себя один или несколько
    интервалов (span), которые связаны
    единым trace_id.
    Trace_id генерируется в начале запроса
    и сохраняется на всех этапах до его
    завершения
    8

    View Slide

  9. Span
    Обозначение одной фиксированной по
    времени транзакции.
    • Http-запрос
    • Sql-запрос
    Может содержать в себе различные
    данные в формате ключ-значение,
    текстовые или структурированные логи
    или идентификаторы других
    интервалов.
    • Могут формировать иерархию
    зависимостей
    • Обычно создается для каждой
    транзакции
    9

    View Slide

  10. Span Context
    Позволяет связывать в один trace
    распределенные транзакции.
    Trace_id и span_id передается в http-
    заголовках при запросе к стороннему
    сервису или в сериализованных данных
    при обращении к другому процессу
    Требования к http-заголовкам
    описываются стандартом W3C Trace
    Context.
    Введение стандарта позволяет
    связывать между собой сервисы и
    системы анализа, которые находятся в
    различном доступе
    https://www.w3.org/TR/trace-context/
    10

    View Slide

  11. https://opentracing.io
    SpanContext позволяет передавать по сути только ограниченное число данных в заголовках,
    уменьшая этим размер пакета
    11

    View Slide

  12. Collectors
    Для сбора, анализа и отображения данных
    трассировки существуют специальные
    системы.
    • Zipkin
    • Jaeger
    • Azure Insights
    12

    View Slide

  13. The Azure
    13

    View Slide

  14. Azure Insights
    Часть масштабного приложения Azure Monitor.
    Интегрирует в себе инструменты для :
    • Мониторинга
    • Оповещения
    • Визуализации и анализа данных о работе
    систем
    • Трассировки
    • Логирования
    • Анализа
    • Аналитики поведения пользователей
    14

    View Slide

  15. Good
    • Сбор данных с frontend и backend
    • Множество мощных инструментов в
    одном
    • API для интеграции
    15

    View Slide

  16. Bad
    • Преимущественно направлена на интеграцию
    c приложениями, которые используют ресурсы
    Azure для хостинга и хранения данных и
    средами разработки
    • Все не бесплатно
    • Бесплатное хранение логов <=90 дней
    • Лаг на обработку данных в системе (2 - 5 мин)
    • Ограничение на размер входящих через API
    пакетов
    • Оплата за траффик (5 gb free / 2.99$/gb)
    • Требует знаний экосистемы
    16

    View Slide

  17. Failures
    17

    View Slide

  18. Failures
    18

    View Slide

  19. Failures
    19

    View Slide

  20. Failures
    20

    View Slide

  21. Failures
    21

    View Slide

  22. Failures
    22

    View Slide

  23. Performance
    23

    View Slide

  24. Performance
    24

    View Slide

  25. Performance
    25

    View Slide

  26. Performance
    26

    View Slide

  27. Performance
    27

    View Slide

  28. Search
    28

    View Slide

  29. Logs
    29

    View Slide

  30. Logs
    30

    View Slide

  31. Logs
    31

    View Slide

  32. Custom log data
    32

    View Slide

  33. Log query
    • Поддерживает широкий набор функций
    • Поддерживает парсинг текстовых логов и json
    https://docs.microsoft.com/ru-ru/azure/kusto/query/
    33

    View Slide

  34. But…
    34

    View Slide

  35. The OpenCensus
    Набор инструментов, для сбора данных о работе одного или
    нескольких приложений. Разработали в Google,
    поддерживается сообществом.
    Хорошо
    • Не привязан к конкретной системе анализа данных
    • API позволяет расширять список собираемых данных
    • Поддерживает сбор метрик (в отличие от OpenTracing)
    • Низкая нагрузка на систему
    Не очень хорошо
    • Нужно интегрировать код в приложение
    • Скудная документация
    35

    View Slide

  36. Examples
    36

    View Slide

  37. Examples
    37

    View Slide

  38. Examples
    38

    View Slide

  39. And… the Django
    Интеграция с django возможна с помощью
    поддерживаемого сообществом расширения
    39

    View Slide

  40. Logging to Azure
    40

    View Slide

  41. HTTP to Azure
    41

    View Slide

  42. SQL to Azure
    42

    View Slide

  43. But…
    43

    View Slide

  44. 44
    Support
    Расширения поддерживаются (?) сообществом

    View Slide

  45. 45
    OpenCensus -> OpenTelemetry

    View Slide

  46. Thanks!
    URLS:
    • OpenCensus
    https://opencensus.io
    • OpenTelemetry
    https://opentelemetry.io/
    • Azure Insights
    https://docs.microsoft.com/en-us/azure/
    • OpenCensus Python
    https://github.com/census-instrumentation/opencensus-python/
    46
    https://www.linkedin.com/in/arkataev
    Александр Катаев

    View Slide