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


Обновление с 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.6.2.jar

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

Примечание.

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

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

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

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

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

TelemetryInitializers

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

TelemetryProcessors

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" }
        ]
      }
    ]
  }
}

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

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