Журналы Application Insights отсутствуют или неверны для приложений Функции Azure
Вы можете внимательно отслеживать приложение-функцию с помощью интеграции между Функции Azure и Application Insights. И вы можете использовать Application Insights без какой-либо пользовательской конфигурации.
Если журналы Application Insights отсутствуют или данные, как представляется, являются частичными или неточными, выполните следующие действия, чтобы устранить проблему.
Проверка конфигурации приложения-функции
Перейдите к своему приложению-функции на портале Azure.
Выберите Диагностика и решение проблем, чтобы открыть систему диагностики Функций Azure.
В строке поиска введите проверки конфигурации функций и откройте его.
Вы увидите диагностический отчет обо всех проверках конфигурации приложения-функции. В частности для Application Insights выполняются следующие проверки:
Существует только один из следующих параметров подключения:
APPINSIGHTS_INSTRUMENTATIONKEY
Ключ инструментирования Application InsightsAPPLICATIONINSIGHTS_CONNECTION_STRING
связьРекомендуется использовать APPLICATIONINSIGHTS_CONNECTION_STRING для более стабильного поведения. Возможность использования
APPINSIGHTS_INSTRUMENTATIONKEY
будет устарела к 2025 году.
Встроенное ведение журнала
AzureWebJobsDashboard
отключено согласно рекомендации.Выборка включена для телеметрии Функции Azure (включена по умолчанию).
Рекомендация. Приложение-функция должно быть в версии 4, а версия среды выполнения должна быть не менее 4.15.2xx. Это связано с тем, что из этой версии можно отслеживать потоки журналов из Функции Azure в службу Application Insights. Отслеживая потоки журналов, можно проверить отсутствие журналов.
Пользовательские журналы приложений
По умолчанию пользовательские журналы приложений отправляются в узел Функций, который затем отправляет их в Application Insights в категорию рабочей роли. Однако некоторые стеки языков позволяют отправлять журналы непосредственно в Application Insights, что обеспечивает полный контроль над тем, как создаются журналы. В этом случае конвейер ведения журнала изменяется на worker > Functions host > Application Insights
worker > Application Insights
.
В следующей таблице перечислены параметры конфигурации, доступные для каждого стека:
Языковой стек | Где настроить пользовательские журналы |
---|---|
.NET (модель в процессе) | host.json |
.NET (изолированная модель) | По умолчанию (отправка пользовательских журналов в узел функций): host.json Сведения о отправке журналов непосредственно в Application Insights см. в разделе "Настройка Application Insights" в HostBuilder. |
Node.JS | host.json |
Python | host.json |
Java | По умолчанию (отправка пользовательских журналов в узел функций): host.json Сведения о отправке журналов непосредственно в Application Insights см. в разделе "Настройка агента Java Application Insights". |
PowerShell | host.json |
Когда вы настраиваете отправку журналов пользовательских приложений напрямую, узел больше не выдает их и host.json
больше не управляет их поведением. Аналогичным образом параметры, предоставляемые каждым стеком, применяются только к пользовательским журналам, и они не изменяют поведение других журналов среды выполнения, описанных в этой статье. В этом случае для управления поведением всех журналов может потребоваться внести изменения в обе конфигурации.
Журналы отсутствуют или частично
Служба Application Insights собирает данные журналов, сведения о производительности и информацию об ошибках. Конфигурация выборки используется для уменьшения объема данных телеметрии. Функция выборки включена по умолчанию с параметрами, показанными в следующем host.json примере. Исключенные типы не примеры.
{
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"maxTelemetryItemsPerSecond" : 20,
"excludedTypes": "Request;Exception"
}
}
}
}
Если вы заметили, что отсутствующие журналы частично отсутствуют, это может произойти из-за выборки. Чтобы определить фактическую частоту выборки, используйте запрос аналитики, использующий требуемый интервал времени, показанный в следующем фрагменте кода. Если вы видите, что TelemetrySavedPercentage
для любого типа выборки меньше 100, то этот тип телеметрии выполняется.
union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > todatetime("mm/dd/yyyy hh:mm:ss") and timestamp < todatetime("mm/dd/yyyy hh:mm:ss")
| summarize TelemetrySavedPercentage = 100/avg(itemCount), TelemetryDroppedPercentage = 100-100/avg(itemCount) by bin(timestamp, 1d), itemType
| sort by timestamp asc
Дополнительные сведения см. в статье Сбор и хранение данных в Application Insights.
Управление объемом и детализацией журналов
Вы можете увеличить или отключить записанные журналы. Для этого можно использовать сочетание уровней журнала и категорий, настроенных в host.json.
В средстве ведения журнала Функций Azure предусмотрена категория для каждого журнала. Категория указывает, какая часть кода среды выполнения или код функции создал журнал. Например:
-
Function.<YOUR_FUNCTION_NAME>
ИHost.Results
являются некоторыми из доступных категорий. - Каждому журналу присваивается уровень журнала. Значение указывает относительную важность, например
Warning
илиInformation
.
См. дополнительные о других доступных категориях и уровнях журналов.
Вы можете настроить, как приложение должно записывать журналы, следуя примеру фрагмента кода:
{
"version": "2.0",
"logging": {
"logLevel": {
"default": "Information", // catch all default, with modifications below for individual categories.
"Function": "Warning", // Warning level from all Functions (except the ones configured below).
"Host.Aggregator": "Trace", // Log all traces in the 'customMetrics' table of (and shown on Metrics/Alerts blade in AI) - use either this or Host.Results
"Host.Results": "Error", // Error and Critical requests are only logged in the 'requests' table of the AI (and shown on Monitor Functions blade in Functions App) - use either this or Host.Aggregator
"Function.Function1": "Information", //Information level logs from Function 1, logged in 'traces', 'dependencies' and 'customMetrics' tables of AI
"Function.Function2.User": "Information" //user code logs from Function2, logged in 'traces' table of AI
},
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"maxTelemetryItemsPerSecond": 1,
"excludedTypes": "Exception"
}
}
}
}
Чтобы настроить эти значения на уровне параметров приложения (чтобы избежать повторного развертывания при изменении host.json), переопределите определенные значения host.json путем создания эквивалентного значения в качестве параметра приложения. Дополнительные сведения см. в разделе Переопределение значений из host.json.
Дополнительные примеры подавления журналов см. в разделе "Функции-журнал-подавление".
Интегрированное приложение-функция виртуальной сети не создает журналы
Если приложение-функция интегрировано с виртуальной сетью, необходимо открыть порт 443 для исходящего трафика в брандмауэре сервера, чтобы разрешить пакету SDK Application Insights или Агенту Application Insights отправлять данные на портал для следующих URL-адресов:
- dc.applicationinsights.azure.com
- dc.applicationinsights.microsoft.com
- dc.services.visualstudio.com
- * .in.applicationinsights.azure.com
Дополнительные сведения см. в разделе IP-адресов, используемых Azure Monitor.
Свяжитесь с нами для получения помощи
Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.