Дружим 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/

53b0434aded1fb944ec3037c382158c1?s=128

Moscow Python Meetup

September 26, 2019
Tweet

Transcript

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

  2. Plan • Логирование • Метрики: •Запросы к сервису •Зависимости: •Обращения

    к БД •Подзапросы к другим сервисам • Распределенная трассировка • Единый интерфейс для анализа данных службой поддержки и разработчиками 2
  3. https://peter.bourgon.org/blog/2017/02/21/metrics-tracing-and-logging.html Observability 3

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

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

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

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

  8. Trace Связывает распределенные во времени интервалы Включает в себя один

    или несколько интервалов (span), которые связаны единым trace_id. Trace_id генерируется в начале запроса и сохраняется на всех этапах до его завершения 8
  9. Span Обозначение одной фиксированной по времени транзакции. • Http-запрос •

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

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

    в заголовках, уменьшая этим размер пакета 11
  12. Collectors Для сбора, анализа и отображения данных трассировки существуют специальные

    системы. • Zipkin • Jaeger • Azure Insights 12
  13. The Azure 13

  14. Azure Insights Часть масштабного приложения Azure Monitor. Интегрирует в себе

    инструменты для : • Мониторинга • Оповещения • Визуализации и анализа данных о работе систем • Трассировки • Логирования • Анализа • Аналитики поведения пользователей 14
  15. Good • Сбор данных с frontend и backend • Множество

    мощных инструментов в одном • API для интеграции 15
  16. Bad • Преимущественно направлена на интеграцию c приложениями, которые используют

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

  18. Failures 18

  19. Failures 19

  20. Failures 20

  21. Failures 21

  22. Failures 22

  23. Performance 23

  24. Performance 24

  25. Performance 25

  26. Performance 26

  27. Performance 27

  28. Search 28

  29. Logs 29

  30. Logs 30

  31. Logs 31

  32. Custom log data 32

  33. Log query • Поддерживает широкий набор функций • Поддерживает парсинг

    текстовых логов и json https://docs.microsoft.com/ru-ru/azure/kusto/query/ 33
  34. But… 34

  35. The OpenCensus Набор инструментов, для сбора данных о работе одного

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

  37. Examples 37

  38. Examples 38

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

    сообществом расширения 39
  40. Logging to Azure 40

  41. HTTP to Azure 41

  42. SQL to Azure 42

  43. But… 43

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

  45. 45 OpenCensus -> OpenTelemetry

  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 Александр Катаев