Поделиться через


Журналы Application Insights отсутствуют или неверны для приложений Функции Azure

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

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

Проверка конфигурации приложения-функции

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

  2. Выберите Диагностика и решение проблем, чтобы открыть систему диагностики Функций Azure.

  3. В строке поиска введите проверки конфигурации функций и откройте его.

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

    • Существует только один из следующих параметров подключения:

      • APPINSIGHTS_INSTRUMENTATIONKEY Ключ инструментирования Application Insights

      • APPLICATIONINSIGHTS_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 Insightsworker > 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.