Анализ телеметрии функций Azure в Application Insights

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

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

Дополнительные сведения о хранении данных и потенциальных затратах на хранение см. в разделе Сбор данных, хранение и хранение в Application Insights.

Просмотр телеметрии на вкладке "монитор"

При включенной интеграции с Application Insights данные телеметрии можно просматривать на вкладке Монитор.

  1. На странице приложения-функции выберите функцию, которая выполнялась по крайней мере один раз после настройки Application Insights. Затем в области слева выберите Монитор. Периодически выбирайте Обновить, пока не появится список вызовов функций.

    Список вызовов

    Примечание

    Для отображения списка может потребоваться до пяти минут. Это время необходимо клиенту, чтобы подготовить пакеты данных телеметрии для передачи на сервер. Такая задержка отсутствует в случае Live Metrics Stream. Эта служба подключается к узлу решения "Функции" при загрузке страницы, поэтому журналы передаются на нее напрямую.

  2. Чтобы просмотреть журналы для вызова определенной функции, выберите ссылку на столбец Дата (UTC) для этого вызова. Выходные данные ведения журнала для этого вызова отображаются на новой странице.

    Сведения о вызове

  3. Выберите Запустить в Application Insights, чтобы просмотреть источник запроса, который извлекает данные журнала Azure Monitor в журнале Azure. Если вы впервые используете функцию Azure Log Analytics в подписке, вам будет предложено ее включить.

  4. После включения Log Analytics отображается следующий запрос. Можно увидеть, что результаты запроса ограничены последними 30 днями ( where timestamp > ago(30d) ), а результаты содержат не более 20 строк ( take 20 ). В отличие от них, список сведений о вызовах для функции содержит информацию за последние 30 дней без ограничений.

    Список вызовов в аналитике Application Insights

Дополнительные сведения см. в разделе Запросы к данным телеметрии далее в этой статье.

Просмотр данных телеметрии в Application Insights

Чтобы открыть Application Insights из приложения-функции в портал Azure:

  1. Перейдите к приложению функции на портале.

  2. Выберите Application Insights в разделе Параметры на левой странице.

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

Открытие Application Insights на странице обзора приложения-функции

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

Вкладка обзора Application Insights

При оценке поведения, производительности и ошибок в функциях могут быть полезны следующие области Application Insights.

Изучение Описание
Сбои Создание диаграмм и оповещений на основе сбоев функции и исключений сервера. Имя операции обозначает имя функции. Сбои в зависимостях здесь не отображаются, если вы не настроили для них пользовательскую телеметрию.
Производительность Анализ проблем с производительностью путем просмотра использования ресурсов и пропускной способности для экземпляров облачных ролей. Эти данные производительности могут быть полезны при отладке сценариев, в которых функции тормозя базовыми ресурсами.
Метрики Создание диаграмм и оповещений на основе метрик. Используются такие метрики: число вызовов функций, время выполнения и частота успешных попыток.
Динамические метрики Просмотр данных метрик по мере их создания практически в реальном времени.

Запросы к данным телеметрии

Аналитика в Application Insights предоставляет доступ ко всем данным телеметрии в формате таблиц в базе данных. Функция аналитики поддерживает язык запросов для извлечения, обработки и визуализации данных.

Выберите Журналы для просмотра или запроса событий в журналах.

Пример данных аналитики

В этом примере показано распределение запросов по рабочим ролям за последние 30 минут.

requests
| where timestamp > ago(30m) 
| summarize count() by cloud_RoleInstance, bin(timestamp, 1m)
| render timechart

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

Таблица Описание
traces Журналы, созданные средой выполнения, контроллером масштабирования и трассировками кода функции.
requests По одному запросу для каждого вызова функции.
exceptions Любые исключения в среде выполнения.
customMetrics Число успешных и неудачных вызовов, доля успешных попыток, продолжительность.
customEvents События, отслеживаемые средой выполнения, например HTTP-запросы, которые активируют функции;
performanceCounters Сведения о производительности серверов, на которых выполняются функции.

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

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

traces 
| where customDimensions.LogLevel == "Error"

Среда выполнения предоставляет поля customDimensions.LogLevel и customDimensions.Category. Вы можете указать дополнительные поля в журналах, которые указываются в коде функции. Пример в C# см. в статье структурированное ведение журнала в разделе Руководство разработчика библиотеки классов .NET.

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

Эта функция доступна в виде предварительной версии.

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

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

traces 
| extend CustomDimensions = todynamic(tostring(customDimensions))
| where CustomDimensions.Category == "ScaleControllerLogs"

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

traces 
| extend CustomDimensions = todynamic(tostring(customDimensions))
| where CustomDimensions.Category == "ScaleControllerLogs"
| where message == "Instance count changed"
| extend Reason = CustomDimensions.Reason
| extend PreviousInstanceCount = CustomDimensions.PreviousInstanceCount
| extend NewInstanceCount = CustomDimensions.CurrentInstanceCount

Метрики, зависящие от плана потребления

При выполнении в плане потребления стоимость выполнения одной функции измеряется в ГБ/с. Затраты на выполнение рассчитываются путем объединения использования памяти с временем выполнения. Дополнительные сведения см. в разделе Оценка затрат на план потребления.

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

Определение использования памяти

В разделе мониторинг выберите журналы (Analytics), затем скопируйте следующий запрос телеметрии и вставьте его в окно запроса и выберите выполнить. Этот запрос возвращает общее использование памяти для каждого образца времени.

performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value

Результаты выглядят, как в следующем примере:

отметка времени [ UTC] name value
9/12/2019, 1:05:14 . 947 Байты исключительного пользования 209 932 288
9/12/2019, 1:06:14 . 994 Байты исключительного пользования 212 189 184
9/12/2019, 1:06:30 . 010 Байты исключительного пользования 231 714 816
9/12/2019, 1:07:15 . 040 Байты исключительного пользования 210 591 744
9/12/2019, 1:12:16 . 285 Байты исключительного пользования 216 285 184
9/12/2019, 1:12:31 . 376 Байты исключительного пользования 235 806 720

Определение длительности

Azure Monitor отслеживает метрики на уровне ресурсов, который для функций — это приложение-функция. Интеграция Application Insights выдает метрики для каждой функции. Ниже приведен пример запроса аналитики для получения средней длительности функции:

customMetrics
| where name contains "Duration"
| extend averageDuration = valueSum / valueCount
| summarize averageDurationMilliseconds=avg(averageDuration) by name
name аверажедуратионмиллисекондс
QueueTrigger Авгдуратионмс 16 . 087
QueueTrigger Максдуратионмс 90 . 249
QueueTrigger Миндуратионмс 8 . 522

Метрики Azure Monitor

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

Метрика Описание
FunctionExecutionCount Число выполнений функций показывает, сколько раз выполнялось приложение функции. Это соответствует числу времени выполнения функции в приложении. Сейчас эта метрика не поддерживается для планов уровня "Премиум" и "Специальный" (служба приложений), работающих в Linux.
FunctionExecutionUnits Единицы выполнения функции — это сочетание времени выполнения и использования памяти. Данные памяти не являются метрикой, доступной в настоящее время с помощью Azure Monitor. Однако если вы хотите оптимизировать использование памяти приложением, может использовать данные счетчиков производительности, собранные Application Insights. Сейчас эта метрика не поддерживается для планов уровня "Премиум" и "Специальный" (служба приложений), работающих в Linux.

Дополнительные сведения о вычислении затрат для плана потребления с помощью Application Insights данных см. в разделе Оценка затрат на план потребления. Дополнительные сведения об использовании обозревателя мониторинга для просмотра метрик см. в статье Приступая к работе с Azure обозреватель метрик.

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

Дополнительные сведения о мониторинге функций Azure: