Мониторинг выполнения в Функциях Azure

Функции Azure предлагают встроенную интеграцию с Azure Application Insights для мониторинга выполнения функций. В этой статье дается обзор возможностей мониторинга Функций Azure.

Служба Application Insights собирает данные журналов, сведения о производительности и информацию об ошибках. Автоматическое обнаружение аномалий производительности и мощные средства аналитики позволяют легко диагностировать проблемы и получать более четкое представление о том, как используются функции. Эти средства призваны помочь вам в постоянном повышении производительности и удобства использования функций. Вы даже можете применить Application Insights на этапе локальной работы над проектом приложения-функции. Дополнительные сведения см. в статье Что такое Application Insights?.

Так как инструментирование Application Insights встроено в Функции Azure, для подключения приложения-функции к ресурсу Application Insights достаточно воспользоваться действительным ключом инструментирования. Этот ключ инструментирования добавляется в параметры приложения при создании ресурса приложения-функции в Azure. Если у приложения-функции еще нет такого ключа, его можно настроить вручную.

Также с помощью Azure Monitor можно отслеживать само приложение-функцию. Дополнительные сведения см. в статье Мониторинг Функций Azure с помощью Azure Monitor.

Стоимость и ограничения Application Insights

Интеграцию Application Insights с Функциями Azure можно опробовать бесплатно с ограничением объема данных, обрабатываемых ежедневно на бесплатной основе.

Если вы включите Application Insights на этапе разработки, то можете столкнуться с этим ограничением во время тестирования. Azure отправляет уведомления на портале и по электронной почте при приближении к ежедневному ограничению. Если вы пропустите эти оповещения и превысите предельное значение, новые журналы не будут отображаться в Application Insights. Учитывайте ограничения, чтобы не тратить время на ненужное устранение неполадок. Дополнительные сведения см. в статье Выставление счетов Application Insights.

Важно!

В Application Insights есть функция выборки, которая позволяет избежать создания слишком большого объема данных телеметрии для завершенных выполнений в периоды пиковой нагрузки. Выборка включена по умолчанию. Если кажется, что некоторые данные отсутствуют, можно просто настроить параметры выборки в соответствии с конкретным сценарием мониторинга. Дополнительные сведения см. в разделе о настройке выборки.

Полный список функций Application Insights, доступных для приложения-функции, подробно описан в статье Application Insights для функций, поддерживаемых в решении "Функции Azure".

Интеграция с Application Insights

Как правило, экземпляр Application Insights создается при создании приложения-функции. В этом случае ключ инструментирования, необходимый для интеграции, уже задан как параметр приложения с именем APPINSIGHTS_INSTRUMENTATIONKEY. Если по какой-то причине в вашем приложении-функции не задан ключ инструментирования, необходимо включить интеграцию с Application Insights.

Важно!

В национальных облаках, таких как Azure для государственных организаций, необходимо использовать строку подключения Application Insights (APPLICATIONINSIGHTS_CONNECTION_STRING), а не ключ инструментирования. Подробнее: APPLICATIONINSIGHTS_CONNECTION_STRING reference.

В следующей таблице описаны поддерживаемые функции Application Insights, доступные для мониторинга приложений-функций.

Версия среды выполнения Функции Azure 1.x 2.x+
Автоматический сбор
• Запросы
• Исключения
• Счетчики производительности
• Зависимости
   — HTTP
   — Служебная шина
   — Центры событий
   — SQL*
Поддерживаемые функции
• QuickPulse/LiveMetrics Да Да
   — Безопасный канал управления Да
• Выборка Да Да
• Пульсы Да
Correlation (корреляция).
• Служебная шина Да
• Центры событий Да
Настраиваемый
Полностью настраиваемый Да

* Сведения о том, как включить сбор текста строки запроса SQL, см. в разделе Включение сбора запросов SQL.

Сбор данных телеметрии

При включенной интеграции с Application Insights данные телеметрии отправляются в подключенный экземпляр Application Insights. Эти данные включают журналы, созданные узлом Функций Azure, трассировки, записанные из кода функций, и данные о производительности.

Примечание

Помимо данных из функций и узла Функций Azure, можно также собирать данные из контроллера масштабирования Функций Azure.

Уровни и категории ведения журнала

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

Каждому журналу присваивается уровень журнала. Значение представляет собой целое число, указывающее на относительную важность:

LogLevel Код Описание
Трассировка 0 Журналы, содержащие наиболее подробные сообщения. Эти сообщения могут содержать конфиденциальные данные приложения. Эти сообщения по умолчанию отключены, и их никогда не следует включать в рабочей среде.
Отладка 1 Журналы, используемые для интерактивного исследования во время разработки. Эти журналы в основном содержат сведения, полезные при отладки и не представляющие ценности в долгосрочной перспективе.
Сведения 2 Журналы, отслеживающие общий поток работы приложения. Эти журналы должны быть полезны в долгосрочной перспективе.
Предупреждение 3 Журналы, которые выделяют ненормальное или неожиданное событие в потоке приложения, но не вызывают остановки выполнения приложения.
Error 4 Журналы, которые выделяют, когда текущий поток выполнения остановлен из-за сбоя. Эти ошибки должны указывать на сбой в текущем действии, а не на сбой всего приложения.
Critical 5 Журналы, описывающие неустранимый сбой приложения или системы либо неустранимый сбой, который требует немедленного внимания.
None 6 Отключает ведение журнала для указанной категории.

Конфигурация host.json файла определяет, сколько журналов приложение функций отправляет в Application Insights.

Дополнительные сведения об уровнях ведения журнала см. в разделе "Настройка уровней ведения журнала" статьи "Настройка мониторинга Функций Azure".

Относя регистрируемые в журнале элементы к той или иной категории, вы получаете больший контроль над данными телеметрии, созданными из конкретных источников в вашем приложении-функции. Категории упрощают аналитику собранных данных. Трассировки, записанные из кода функции, распределяются по отдельным категориям на основании имени функции. Дополнительные сведения о категориях см. в разделе Настройка категорий статьи "Настройка мониторинга Функций Azure".

Настраиваемые данные телеметрии

В C#, JavaScript и Python можно вести запись настраиваемых данных телеметрии с помощью пакета SDK для Application Insights.

Зависимости

Начиная с версии 2.x Функций Azure Application Insights автоматически собирает данные о зависимостях для привязок, использующих определенные клиентские пакеты SDK. Распределенная трассировка Application Insights и отслеживание зависимостей в настоящее время не поддерживаются для приложений C#, работающих в изолированном рабочем процессе. Application Insights собирает данные о следующих зависимостях:

  • Azure Cosmos DB;
  • Центры событий Azure
  • Azure Service Bus
  • Службы хранилища Azure (Хранилище BLOB-объектов, Хранилище очередей, Хранилище таблиц)

Регистрируются также HTTP-запросы и вызовы к базам данных с помощью SqlClient. Полный список зависимостей, поддерживаемых Application Insights, см. в разделе "Автоматически отслеживаемые зависимости" статьи "Отслеживание зависимостей в Azure Application Insights".

Application Insights создает схему приложения из собранных данных о зависимостях. Ниже приведен пример схемы приложения функции для триггеров HTTP с выходной привязкой Хранилища очередей.

Схема приложения с зависимостями

Зависимости записываются на уровне Information. При фильтрации на уровне Warning и выше эти данные отображаться не будут. Кроме того, автоматический сбор зависимостей происходит за пределами пользовательской области. Для регистрации данных о зависимостях задайте уровень фильтрации не ниже Information за пределами пользовательской области (Function.<YOUR_FUNCTION_NAME>.User).

Кроме автоматического сбора данных о зависимостях, для записи в журналы настраиваемых сведений о зависимостях можно также использовать один из пакетов SDK Application Insights для конкретного языка программирования. Пример кодирования настраиваемых зависимостей см. в одном из следующих примеров для конкретного языка:

Счетчики производительности

Автоматический сбор счетчиков производительности не поддерживается при работе в Linux.

Запись в журналы

Способ записи в журналы и используемые для этого API зависят от языка проекта приложения-функции.
Дополнительные сведения о записи журналов из функций см. в руководстве разработчика для вашего языка.

Анализ данных

По умолчанию данные, собранные из приложения-функции, хранятся в Application Insights. На портале Azure доступен широкий набор визуализаций данных телеметрии из Application Insights. Вы можете детально исследовать журналы ошибок, а также запрашивать события и метрики. Дополнительные сведения, в том числе простейшие примеры просмотра и запроса собранных данных, см. в статье "Анализ данных телеметрии Функций Azure в Application Insights".

Журналы потоковой передачи

При разработке приложения часто требуется знать, что записывается в журналы при работе в Azure, почти в реальном времени.

Существует два способа просмотра потока файлов журнала, создаваемых при выполнении функций.

  • Встроенная потоковая передача журналов. Платформа Службы приложений позволяет просматривать поток файлов журналов приложений. Этот поток эквивалентен выходным данным, которые отображаются при отладке функций во время локальной разработки и при использовании вкладки Тест на портале. При этом отображаются все данные в журнале. Дополнительные сведения см. в разделе Потоковая передача журналов. Этот потоковый метод поддерживает только один экземпляр и не может использоваться с приложением, которое выполняется в Linux в плане потребления.

  • Live Metrics Stream. Если приложение-функция подключено к Application Insights, данные журнала и другие метрики можно просматривать почти в реальном времени на портале Azure с помощью Live Metrics Stream. Используйте этот метод при мониторинге функций, выполняемых в нескольких экземплярах или в Linux в плане потребления. Этот метод использует данные выборки.

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

Журналы диагностики

Application Insights позволяет экспортировать данные телеметрии для долгосрочного хранения или в другие службы аналитики.

Поскольку Функции Azure среди прочего интегрированы с Azure Monitor, можно также использовать параметры диагностики для отправки данных телеметрии в различные места назначения, включая журналы Azure Monitor. Дополнительные сведения см. в статье Мониторинг Функций Azure с помощью журналов Azure Monitor.

Журналы контроллера масштабирования

Контроллер масштабирования функций Azure наблюдает за экземплярами узла Функций Azure, на котором выполняется приложение. Этот контроллер принимает решения о том, когда следует добавлять или удалять экземпляры, исходя из текущей производительности. Вы можете настроить контроллер масштабирования для передачи журналов в Application Insights, чтобы лучше понять, какие решения он принимает в отношении вашего приложения-функции. Вы также можете сохранять созданные журналы в хранилище BLOB-объектов для анализа с помощью другой службы.

Чтобы включить эту функцию, добавьте параметр приложения с именем SCALE_CONTROLLER_LOGGING_ENABLED в параметры приложения-функции. Дополнительные сведения об этом см. в разделе "Настройка журналов контроллера масштабирования" статьи "Настройка мониторинга Функций Azure".

Метрики Azure Monitor

Наряду с данными телеметрии на основе журнала, собираемыми в Application Insights, вы можете получать данные о выполнении приложения-функции через метрики Azure Monitor. Дополнительные сведения см. в статье Мониторинг с помощью Azure Monitor.

Сообщение о проблемах

Чтобы сообщить о проблеме с интеграцией Функций Azure с Application Insights, внести предложение или отправить запрос, создайте обращение в GitHub.

Дальнейшие действия

Для получения дополнительных сведений см. следующие ресурсы: