Журналы 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 собирает данные журнала, производительности и ошибок. Конфигурация выборки используется для уменьшения объема телеметрии. Функция выборки включена по умолчанию с параметрами, показанными в следующем примере 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 включает категорию для каждого журнала. Категория указывает, какая часть кода среды выполнения или код функции создал журнал. Например:

  • И Host.ResultsFunction.<YOUR_FUNCTION_NAME> — это некоторые из доступных категорий.
  • Каждому журналу назначается уровень журнала. Значение указывает относительную важность, например 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 значений.

Дополнительные примеры подавления журналов см. в разделе functions-log-suppress.

Приложение-функция, интегрированное с виртуальной сетью, не создает журналы

Если приложение-функция интегрировано с виртуальной сетью, необходимо открыть порт 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.