Что такое наблюдаемость?

Завершено

Прежде чем ознакомиться с кодом, давайте рассмотрим шаг назад и поговорим о наблюдаемости. Вам нужно иметь средства, которые помогают понять внутреннее состояние системы на основе видимых внешних данных.

Зачем реализовать наблюдаемость?

Существует несколько причин, почему наблюдаемость является важным аспектом разработки и улучшения облачных приложений:

  • Общие сведения о системном поведении: наблюдение предоставляет аналитические сведения о том, как выполняется приложение, и где возникают узкие места или ошибки.
  • Отладка и устранение неполадок. При возникновении проблем средства наблюдения могут предоставлять подробные сведения о том, что происходит в системе в момент возникновения проблемы.
  • Непрерывное улучшение: наблюдаемость не только для выявления и устранения проблем, но и для непрерывного улучшения. Отслеживая производительность системы с течением времени, вы можете определить возможности оптимизации кода, повышения производительности системы и количественного улучшения взаимодействия с пользователями.
  • Упреждающее обнаружение проблем: с помощью правильных средств наблюдения часто можно обнаруживать проблемы, прежде чем пользователи даже видят их.

Реализация наблюдаемости в облачных приложениях — это не только рекомендация, это необходимость в обслуживании, оптимизации и непрерывном улучшении приложений. Она позволяет разработчикам предоставлять надежные, высокопроизводительные приложения и предоставлять аналитические сведения, необходимые для принятия обоснованных решений.

Три основных принципа наблюдаемости

Существует три основных принципа наблюдаемости:

  • Журналы: журналы предоставляют подробные записи о событиях, происходящих в приложении или системе. В приложении можно использовать Microsoft.Extensions.Logging инфраструктуру для регистрации событий.
  • Метрики. Метрики относятся к числовым измерениям и счетчикам, которые предоставляют представление о производительности и работоспособности системы. Примеры включают частоту запросов, время отклика, использование ЦП или памяти и частоту ошибок. В приложении могут быть определенные измерения, которые необходимо отслеживать.
  • Распределенная трассировка: этот процесс включает в себя трассировку запроса по мере распространения по всем микрослужбам в облачном приложении. Каждая служба регистрирует данные трассировки, такие как идентификаторы запросов, которые позволяют сопоставлять события между службами. Распределенная трассировка также полезна для отладки проблем с производительностью и ошибок в сложных системах.

Вместе эти три основных принципа обеспечивают комплексную наблюдаемость в системе.

Источники данных для телеметрии

В облачном приложении вашей компании есть несколько источников телеметрии, которые можно собрать:

  • Журналы приложений: приложения создают журналы, предоставляющие подробные сведения об его работе и ошибках при их возникновении. Ведение журнала — это богатый источник данных телеметрии.
  • Базы данных: базы данных могут предоставлять данные телеметрии о запросах, которые они обрабатывают, время выполнения и любые возникающие ошибки.
  • HTTP-запросы и ответы: HTTP-запросы и ответы между микрослужбами предоставляют богатые и ценные данные телеметрии. Эти данные включают заголовки запросов и ответов, содержимое тела, коды состояния и сведения о времени.
  • Данные о производительности на стороне клиента: в облачных приложениях с внешним интерфейсом можно собирать данные о производительности на стороне клиента. Эти данные могут включать попадания страниц, время загрузки и время взаимодействия пользовательского интерфейса.
  • Метрики инфраструктуры: если приложение размещено в облачной среде, можно собирать такие метрики инфраструктуры, как использование ЦП, использование памяти, сетевой трафик и операции ввода-вывода дисков.

Собирая и анализируя эти данные телеметрии, вы можете получить ценные сведения о производительности и работоспособности приложения.

Реализация наблюдаемости

Чтобы добавить наблюдаемость в облачное приложение, выполните следующие действия:

  • Добавьте ведение журнала.
  • Включите метрики и определите пользовательские метрики для записи.
  • Включите распределенную трассировку с помощью OpenTelemetry и Zipkin.
  • Инструментируйте приложение снова с помощью OpenTelemetry и добавьте данные телеметрии в код.
  • Анализ данных телеметрии с помощью Prometheus, Grafana или Application Аналитика.

Введение в OpenTelemetry

Как OpenTelemetry помогает добавить наблюдаемость в приложение и почему в .NET существует такая глубокая поддержка? OpenTelemetry — это платформа наблюдения с открытым кодом. Он предоставляет стандартный, не зависящий от поставщика способ создания данных телеметрии.

OpenTelemetry стандартизирует способ сбора и передачи данных телеметрии на внутренние платформы. Это позволяет преодолеть пробелы видимости, предоставляя общий формат инструментирования для всех микрослужб. Вам не нужно повторно вводить код или устанавливать разные собственные агенты при каждом изменении серверной платформы.

Так как это открытый стандарт, он поддерживает множество других средств за пределами .NET. OpenTelemetry настроено на использование расширений, позволяющих экспортерам создавать данные телеметрии для всех различных средств. Это означает, что вы можете использовать те же средства для мониторинга микрослужб независимо от языка, на который они написаны.

OpenTelemetry помогает собирать и отслеживать все три основных аспекта наблюдаемости: журналы, метрики и трассировки. Вы увидите, как выполнять эти задачи в следующих уроках.