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


Обновление с Application Insights Java 2.x SDK

Обычно при обновлении до версии 3.x изменения кода не требуются. Зависимости пакета SDK 3.x — это версии API no-op зависимостей пакета SDK 2.x. Однако при использовании с агентом Java 3.x агент Java 3.x предоставляет для них реализацию. В результате настраиваемое инструментирование сопоставляется со всеми новыми автоматическими средствами, предоставляемыми агентом Java 3.x.

Шаг 1. Обновление зависимостей

Зависимость 2.x Действие Замечания
applicationinsights-core Обновление версии до 3.4.3 или более поздней
applicationinsights-web Обновите версию до 3.4.3 или более поздней и удалите веб-фильтр Application Insights файла web.xml.
applicationinsights-web-auto Замена на 3.4.3 или более позднюю версию applicationinsights-web
applicationinsights-logging-log4j1_2 Удалите зависимость и удалите приложение Application Insights из конфигурации Log4j. Больше не требуется, так как Log4j 1.2 автоматически используется в агенте Java 3.x.
applicationinsights-logging-log4j2 Удалите зависимость и удалите приложение Application Insights из конфигурации Log4j. Больше не требуется, так как Log4j 2 автоматически используется в агенте Java 3.x.
applicationinsights-logging-logback Удалите зависимость и удалите добавление Application Insights из конфигурации logback. Больше не требуется, так как функция logback автоматически используется в агенте Java 3.x.
applicationinsights-spring-boot-starter Замена на 3.4.3 или более позднюю версию applicationinsights-web Имя облачной роли больше не используется spring.application.nameпо умолчанию. Сведения о настройке имени облачной роли см. в документации по конфигурации 3.x.

Шаг 2. Добавление агента Java 3.x

Добавьте агент Java 3.x в командную строку Java Virtual Machine (JVM), например:

-javaagent:path/to/applicationinsights-agent-3.7.5.jar

Если вы используете агент Java Application Insights 2.x, просто замените существующий -javaagent:... на предыдущий пример.

Примечание.

Если вы использовали spring-boot-starter, существует альтернатива агента Java. См. 3.x Spring Boot.

Шаг 3. Настройка строки подключения Application Insights

См. сведения о настройке строки подключения.

Другие примечания

В остальной части этого документа описываются ограничения и изменения, которые могут возникнуть при обновлении с версии 2.x до 3.x, а также некоторые обходные пути, которые могут оказаться полезными.

ИнициаторыТелеметрии

2.x TelemetryInitializers не выполняются при использовании агента 3.x. Многие из вариантов использования, которые ранее требовались написанием TelemetryInitializer , можно решить в Application Insights Java 3.x, настроив пользовательские измерения. Или использование унаследованных атрибутов.

Обработчики телеметрии

2.x TelemetryProcessors не выполняются при использовании агента 3.x. Многие из вариантов использования, которые ранее требовались для записи TelemetryProcessor , можно решить в Application Insights Java 3.x, настроив переопределения выборки.

Несколько приложений в одной виртуальной машине Java

Этот вариант использования поддерживается в Application Insights Java 3.x с помощью переопределения имен ролей облака (предварительная версия) и (или)переопределения строк подключения (предварительная версия).

Имена операций

В пакете SDK Для Java 2.x Application Insights в некоторых случаях имена операций содержат полный путь, например:

Снимок экрана, показывающий имена операций с полным путем

Имена операций в Application Insights Java 3.x изменились, чтобы обеспечить лучшее агрегированное представление на портале Application Insights U/X, например:

Снимок экрана, показывающий параметризованные имена операций

Однако для некоторых приложений можно по-прежнему предпочесть агрегированное представление в U/X, предоставленное предыдущими именами операций. В этом случае можно использовать функцию обработчиков телеметрии (предварительная версия) в 3.x для репликации предыдущего поведения.

Следующий фрагмент кода настраивает три процессора телеметрии, которые объединяются для репликации предыдущего поведения. Обработчики данных телеметрии выполняют следующие действия (по порядку):

  1. Первый обработчик данных телеметрии является обработчиком атрибутов (имеет тип attribute). Это означает, что он применяется ко всем данным телеметрии, имеющим атрибуты (в настоящее время это requests и dependencies, но вскоре также и traces).

    Он соответствует любой телеметрии, которая имеет атрибуты с именем http.request.method и url.path.

    Затем он извлекает url.path атрибут в новый атрибут с именем tempName.

  2. Второй обработчик данных телеметрии является обработчиком диапазонов (имеет тип span ). Это означает, что он применяется к requests и dependencies.

    Он соответствует любому диапазону с именем tempPathатрибута.

    Затем он обновляет имя диапазона из атрибута tempPath.

  3. Последний обработчик данных телеметрии — это обработчик атрибутов, имеющий тот же тип, что и первый обработчик данных телеметрии.

    Он соответствует любой телеметрии с именем tempPathатрибута.

    Затем он удаляет именованный tempPathатрибут, а атрибут отображается как настраиваемое измерение.

{
  "preview": {
    "processors": [
      {
        "type": "attribute",
        "include": {
          "matchType": "strict",
          "attributes": [
            { "key": "http.request.method" },
            { "key": "url.path" }
          ]
        },
        "actions": [
          {
            "key": "url.path",
            "pattern": "https?://[^/]+(?<tempPath>/[^?]*)",
            "action": "extract"
          }
        ]
      },
      {
        "type": "span",
        "include": {
          "matchType": "strict",
          "attributes": [
            { "key": "tempPath" }
          ]
        },
        "name": {
          "fromAttributes": [ "http.request.method", "tempPath" ],
          "separator": " "
        }
      },
      {
        "type": "attribute",
        "include": {
          "matchType": "strict",
          "attributes": [
            { "key": "tempPath" }
          ]
        },
        "actions": [
          { "key": "tempPath", "action": "delete" }
        ]
      }
    ]
  }
}

Отбор проб и недостающие журналы

По умолчанию в агенте версии 3.4 включена дискретизация с ограничением скорости, что может привести к неожиданному отсутствию журналов.

Пример проекта

Этот проект пакета SDK java 2.x переносится в новый проект с помощью агента Java 3.x.