Параметры конфигурации: Аналитика приложения Azure Monitor для Java

В этой статье показано, как настроить Аналитика приложения Azure Monitor для Java.

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

строка Подключение ion и имя роли являются наиболее распространенными параметрами, которые необходимо приступить к работе:

{
  "connectionString": "...",
  "role": {
    "name": "my cloud role name"
  }
}

Требуется строка подключения. Имя роли важно в любой момент, когда вы отправляете данные из разных приложений в один ресурс приложения Аналитика.

Дополнительные сведения и параметры конфигурации приведены в следующих разделах.

Путь к файлу конфигурации

По умолчанию в Application Insights Java 3.x предполагается, что файл конфигурации будет называться applicationinsights.json и находиться в том же каталоге, что и applicationinsights-agent-3.5.1.jar.

Вы можете указать собственный путь к файлу конфигурации, используя один из следующих двух вариантов:

  • Переменная среды APPLICATIONINSIGHTS_CONFIGURATION_FILE.
  • applicationinsights.configuration.file Java system property (свойство системы Java)

Если указать относительный путь, он разрешается относительно каталога, где applicationinsights-agent-3.5.1.jar находится.

Кроме того, вместо использования файла конфигурации можно указать все содержимое конфигурации JSON с помощью переменной APPLICATIONINSIGHTS_CONFIGURATION_CONTENTсреды.

Connection string

Требуется строка подключения. Вы можете найти строка подключения в ресурсе приложения Аналитика.

Снимок экрана, на котором показана строка подключения Application Insights.

{
  "connectionString": "..."
}

Вы также можете задать строка подключения с помощью переменной APPLICATIONINSIGHTS_CONNECTION_STRINGсреды. Затем он имеет приоритет над строка подключения, указанной в конфигурации JSON.

Или можно задать строка подключения с помощью системного свойства applicationinsights.connection.stringJava. Он также имеет приоритет над строка подключения, указанной в конфигурации JSON.

Чтобы задать строку подключения, можно также указать файл, из которого ее нужно загрузить.

Если указать относительный путь, он разрешается относительно каталога, где applicationinsights-agent-3.5.1.jar находится.

{
  "connectionString": "${file:connection-string-file.txt}"
}

Файл должен содержать только строка подключения и ничего другого.

Не устанавливая строка подключения отключает агент Java.

Если у вас несколько приложений, развернутых на одной виртуальной машине Java (JVM) и хотите, чтобы они отправляли данные телеметрии в разные строка подключения, см. Подключение переопределения строк (предварительная версия).

Имя облачной роли

Имя облачной роли используется для метки компонента на карте приложения.

Если вы хотите задать имя облачной роли:

{
  "role": {   
    "name": "my cloud role name"
  }
}

Если имя облачной роли не задано, имя ресурса приложения Аналитика используется для метки компонента на карте приложения.

Также можно задать имя облачной роли с помощью переменной среды APPLICATIONINSIGHTS_ROLE_NAME. Затем он имеет приоритет над именем облачной роли, указанным в конфигурации JSON.

Вы также можете задать имя облачной роли с помощью системного свойства applicationinsights.role.nameJava. Он также имеет приоритет над именем облачной роли, указанным в конфигурации JSON.

Если в одной виртуальной машине JVM развернуто несколько приложений и вы хотите, чтобы они отправляли данные телеметрии в разные имена облачных ролей, см. раздел Переопределения имен облачных ролей (предварительная версия).

Экземпляр облачной роли

Экземпляр облачной роли по умолчанию использует имя компьютера.

Если вы хотите задать для экземпляра облачной роли другое имя, а не имя компьютера:

{
  "role": {
    "name": "my cloud role name",
    "instance": "my cloud role instance"
  }
}

Можно также задать экземпляр облачной роли с помощью переменной APPLICATIONINSIGHTS_ROLE_INSTANCEсреды. Затем он имеет приоритет над экземпляром облачной роли, указанным в конфигурации JSON.

Или можно задать экземпляр облачной роли с помощью системного свойства applicationinsights.role.instanceJava. Он также имеет приоритет над экземпляром облачной роли, указанным в конфигурации JSON.

Образец

Примечание.

Выборка может быть отличным способом снижения затрат на Application Insights. Убедитесь, что конфигурация выборки настроена согласно вашего варианта использования.

Выборка основана на запросе, что означает, что если запрос фиксируется (выборка), поэтому это его зависимости, журналы и исключения.

Выборка также основана на идентификаторе трассировки, чтобы обеспечить согласованность решений выборки в разных службах.

Выборка применяется только к журналам внутри запроса. Журналы, не находящиеся внутри запроса (например, журналы запуска), всегда собираются по умолчанию. Если вы хотите использовать примеры этих журналов, можно использовать переопределения выборки.

Выборка с ограничением скорости

Начиная с версии 3.4.0 доступна ограниченная скорость выборки и теперь используется по умолчанию.

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

Эта конфигурация заменяет предыдущий параметр по умолчанию, который был для записи всех запросов. Если вы по-прежнему хотите записать все запросы, используйте выборку с фиксированным процентом и задайте процент выборки 100.

Примечание.

Выборка с ограниченной скоростью приблизилась, так как внутренне она должна адаптировать "фиксированный" процент выборки с течением времени, чтобы получить точные числа элементов для каждой записи телеметрии. Внутри системы выборка с ограниченной скоростью настраивается для быстрой адаптации (0,1 секунд) к новым нагрузкам приложений. По этой причине вы не должны видеть, что он превышает настроенную скорость на много или очень долго.

В этом примере показано, как задать выборку для записи по крайней мере (приблизительно) по одному запросу в секунду:

{
  "sampling": {
    "requestsPerSecond": 1.0
  }
}

Это requestsPerSecond может быть десятичное значение, поэтому его можно настроить для записи меньше одного запроса в секунду, если вы хотите. Например, значение 0.5 средства фиксирует не более одного запроса каждые 2 секунды.

Вы также можете задать процент выборки с помощью переменной APPLICATIONINSIGHTS_SAMPLING_REQUESTS_PER_SECONDсреды. Затем он имеет приоритет над ограничением скорости, указанным в конфигурации JSON.

Выборка с фиксированным процентом

В этом примере показано, как настроить выборку примерно на треть всех запросов:

{
  "sampling": {
    "percentage": 33.333
  }
}

Вы также можете задать процент выборки с помощью переменной APPLICATIONINSIGHTS_SAMPLING_PERCENTAGEсреды. Затем он имеет приоритет над процентом выборки, указанным в конфигурации JSON.

Примечание.

Для процента выборки выберите процент, близкий к 100/N, где N является целым числом. В настоящее время выборка не поддерживает другие значения.

Переопределения выборки

Переопределения выборки позволяют переопределить процент выборки по умолчанию. Например, доступны следующие возможности:

  • Задайте процент выборки 0 или небольшое значение для шумных проверка работоспособности.
  • Задайте процент выборки 0 или небольшое значение для шумных вызовов зависимостей.
  • Задайте процент выборки 100 для важного типа запроса. Например, можно использовать /login , даже если выборка по умолчанию настроена на что-то меньшее.

Дополнительные сведения см. в документации по переопределениям выборки .

Метрики расширений управления Java

Если вы хотите собрать другие метрики для управления Java (JMX):

{
  "jmxMetrics": [
    {
      "name": "JVM uptime (millis)",
      "objectName": "java.lang:type=Runtime",
      "attribute": "Uptime"
    },
    {
      "name": "MetaSpace Used",
      "objectName": "java.lang:type=MemoryPool,name=Metaspace",
      "attribute": "Usage.used"
    }
  ]
}

В предыдущем примере конфигурации:

  • name — это имя метрики, назначенное этой метрикой JMX (может быть любым).
  • objectName— это имяJMX MBean объекта, который требуется собрать. Wild карта символ звездочки (*) поддерживается.
  • attribute — это имя атрибута внутри нужного JMX MBean объекта.

Поддерживаются числовые и логические значения метрик JMX. Логические метрики JMX сопоставляются со 0 значением false и 1 для true.

Дополнительные сведения см. в документации по метрикам JMX.

Настраиваемые аналитики

Если вы хотите добавить пользовательские измерения во все данные телеметрии:

{
  "customDimensions": {
    "mytag": "my value",
    "anothertag": "${ANOTHER_VALUE}"
  }
}

Вы можете считывать ${...} значение из указанной переменной среды при запуске.

Примечание.

Начиная с версии 3.0.2, если вы добавляете пользовательское измерение с именемservice.version, значение хранится в application_Version столбце таблицы Application Аналитика Logs вместо пользовательского измерения.

Наследуемый атрибут (предварительная версия)

Начиная с версии 3.2.0, можно программно задать настраиваемое измерение в телеметрии запроса. Он обеспечивает наследование по зависимостям и телеметрии журналов. Все они фиксируются в контексте этого запроса.

{
  "preview": {
    "inheritedAttributes": [
      {
        "key": "mycustomer",
        "type": "string"
      }
    ]
  }
}

А затем в начале каждого запроса вызов:

Span.current().setAttribute("mycustomer", "xyz");

См. также: добавление настраиваемого свойства в диапазон.

Переопределения строк подключения (предварительная версия)

Эта функция предоставляется в предварительной версии, начиная с 3.4.0.

Подключение переопределения строк позволяют переопределить строка подключения по умолчанию. Например, доступны следующие возможности:

  • Задайте один строка подключения для одного префикса /myapp1пути HTTP.
  • Задайте другой строка подключения для другого префикса /myapp2/пути HTTP.
{
  "preview": {
    "connectionStringOverrides": [
      {
        "httpPathPrefix": "/myapp1",
        "connectionString": "..."
      },
      {
        "httpPathPrefix": "/myapp2",
        "connectionString": "..."
      }
    ]
  }
}

Переопределения имен облачных ролей (предварительная версия)

Эта функция предоставляется в предварительной версии начиная с 3.3.0.

Переопределения имен ролей облака позволяют переопределить имя облачной роли по умолчанию. Например, доступны следующие возможности:

  • Задайте одно имя облачной роли для одного префикса /myapp1пути HTTP.
  • Задайте другое имя облачной роли для другого префикса /myapp2/пути HTTP.
{
  "preview": {
    "roleNameOverrides": [
      {
        "httpPathPrefix": "/myapp1",
        "roleName": "Role A"
      },
      {
        "httpPathPrefix": "/myapp2",
        "roleName": "Role B"
      }
    ]
  }
}

строка Подключение ion, настроенная во время выполнения

Начиная с версии 3.4.8, если вам нужна возможность настроить строка подключения во время выполнения, добавьте это свойство в конфигурацию json:

{
  "connectionStringConfiguredAtRuntime": true
}

Добавьте applicationinsights-core в свое приложение:

<dependency>
  <groupId>com.microsoft.azure</groupId>
  <artifactId>applicationinsights-core</artifactId>
  <version>3.5.1</version>
</dependency>

Используйте статический configure(String) метод в классе com.microsoft.applicationinsights.connectionstring.ConnectionString.

Примечание.

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

Автоматическая сборка внутрипроцессных зависимостей (предварительная версия)

Начиная с версии 3.2.0, если вы хотите записать зависимости контроллера InProc, используйте следующую конфигурацию:

{
  "preview": {
    "captureControllerSpans": true
  }
}

Загрузчик пакета SDK для браузера (предварительная версия)

Эта функция автоматически внедряет загрузчик пакета SDK браузера на HTML-страницы приложения, включая настройку соответствующей строки Подключение ion String.

Например, когда приложение Java возвращает ответ, например:

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Title</title>
  </head>
  <body>
  </body>
</html>

Он автоматически изменяет возвращаемое значение:

<!DOCTYPE html>
<html lang="en">
  <head>
    <script type="text/javascript">
    !function(v,y,T){var S=v.location,k="script"
    <!-- Removed for brevity -->
    connectionString: "YOUR_CONNECTION_STRING"
    <!-- Removed for brevity --> }});
    </script>
    <title>Title</title>
  </head>
  <body>
  </body>
</html>

Сценарий стремится помочь клиентам отслеживать данные веб-пользователей и отправлять сбор данных телеметрии на стороне сервера портал Azure пользователей. Сведения можно найти в Application Аналитика-JS.

Если вы хотите включить эту функцию, добавьте следующий параметр конфигурации:

{
  "preview": {
    "browserSdkLoader": {
      "enabled": true
    }
  }
}

Обработчики данных телеметрии (предварительная версия)

Обработчики телеметрии можно использовать для настройки правил, применяемых к запросам, зависимостям и телеметрии трассировки. Например, доступны следующие возможности:

  • Маскирование конфиденциальных данных.
  • Условное добавление пользовательских измерений.
  • Обновление имени диапазона, который используется для агрегирования сходных данных телеметрии на портале Azure.
  • Выведение определенных атрибутов диапазона, чтобы контролировать расходы по приему и обработке данных.

Дополнительные сведения см. в документации по обработчику телеметрии.

Примечание.

Если вы хотите удалить определенные (целые) диапазоны для управления затратами приема, см . переопределения выборки.

Автоматически собранные журналы

Log4j, Logback, JBoss Log и java.util.log автоматически используются. Ведение журнала с помощью этих платформ ведения журнала выполняется автоматически.

Ведение журнала фиксируется только в том случае, если он:

  • Соответствует заданному уровню для платформы ведения журнала.
  • Также соответствует настроенного уровня для приложения Аналитика.

Например, если платформа ведения журнала настроена для записи WARN (и вы настроили ее, как описано ранее) из пакета, а приложение Аналитика настроено для записи (и настроено как описано), приложение Аналитика только записи WARNINFO (и более серьезные) из пакетаcom.examplecom.example.

Уровень по умолчанию, настроенный для Application Insights, — INFO. Если вы хотите изменить этот уровень:

{
  "instrumentation": {
    "logging": {
      "level": "WARN"
    }
  }
}

Вы также можете задать уровень с помощью переменной APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVELсреды. Затем он имеет приоритет над уровнем, указанным в конфигурации JSON.

Эти допустимые level значения можно использовать для указания в applicationinsights.json файле. В таблице показано, как они соответствуют уровням ведения журнала в разных платформах ведения журнала.

Уровень Log4j Logback JBoss ИЮЛ
ВЫКЛ. ВЫКЛ. ВЫКЛ. ВЫКЛ. ВЫКЛ.
FATAL FATAL ОШИБКА FATAL SEVERE
ERROR (или SEVERE) ОШИБКА ОШИБКА ОШИБКА SEVERE
WARN (или WARNING) WARN WARN WARN ПРЕДУПРЕЖДЕНИЕ
INFO INFO INFO INFO INFO
CONFIG ОТЛАДКА ОТЛАДКА ОТЛАДКА CONFIG
DEBUG (или FINE) ОТЛАДКА ОТЛАДКА ОТЛАДКА FINE
FINER ОТЛАДКА ОТЛАДКА ОТЛАДКА FINER
TRACE (или FINEST) ТРАССИРОВКА ТРАССИРОВКА ТРАССИРОВКА FINEST
ВСЕ ВСЕ ВСЕ ВСЕ ВСЕ

Примечание.

Если объект исключения передается средству ведения журнала, сообщение журнала (и сведения об объекте исключения) будет отображаться в портал Azure под exceptions таблицей, а не в traces таблице. Если вы хотите просмотреть сообщения журнала в разных traces таблицах и exceptions таблицах, вы можете написать запрос журналов (Kusto) для объединения между ними. Например:

union traces, (exceptions | extend message = outerMessage)
| project timestamp, message, itemType

Маркеры журналов (предварительная версия)

Начиная с 3.4.2, вы можете записать маркеры журнала для Logback и Log4j 2:

{
  "preview": {
    "captureLogbackMarker":  true,
    "captureLog4jMarker":  true
  }
}

Другие атрибуты журнала для Logback (предварительная версия)

Начиная с 3.4.3, вы можете записать FileName, ClassNameMethodNameи LineNumberдля logback:

{
  "preview": {
    "captureLogbackCodeAttributes": true
  }
}

Предупреждение

Запись атрибутов кода может привести к повышению производительности.

Уровень ведения журнала в качестве настраиваемого измерения

Начиная с версии 3.3.0, LoggingLevel по умолчанию не фиксируется в пользовательском измерении Traces, так как эти данные уже записываются в SeverityLevel поле.

При необходимости можно временно повторно включить предыдущее поведение:

{
  "preview": {
    "captureLoggingLevelAsCustomDimension": true
  }
}

Метрики микрометра автозабора (включая метрики Spring Boot Actuator)

Если приложение использует Micrometer, метрики, отправленные в глобальный реестр Micrometer, автоматически собираются.

Кроме того, если приложение использует Spring Boot Actuator, метрики, настроенные Spring Boot Actuator, также автоматически собираются.

Для отправки пользовательских метрик с помощью микрометра:

  1. Добавьте Micrometer в приложение, как показано в следующем примере.

    <dependency>
      <groupId>io.micrometer</groupId>
      <artifactId>micrometer-core</artifactId>
      <version>1.6.1</version>
    </dependency>
    
  2. Используйте глобальный реестр Micrometer для создания счетчика, как показано в следующем примере.

    static final Counter counter = Metrics.counter("test.counter");
    
  3. Используйте счетчик для записи метрик с помощью следующей команды.

    counter.increment();
    
  4. Метрики обрабатываются в таблице customMetrics с тегами , захваченными в столбце customDimensions . Вы также можете просмотреть метрики в обозревателе метрик в Log-based metrics пространстве имен метрик.

    Примечание.

    Приложение Аналитика Java заменяет все символы, отличные от буквенно-цифровых символов (за исключением дефисов) в имени метрики Micrometer символами подчеркивания. В результате предыдущая test.counter метрика будет отображаться как test_counter.

Чтобы отключить автозабор метрик микрометров и метрики Spring Boot Actuator, выполните приведенные ниже действия.

Примечание.

Пользовательские метрики выставляются отдельно и могут создавать дополнительные затраты. Обязательно проверка сведения о ценах. Чтобы отключить метрики Micrometer и Spring Boot Actuator, добавьте следующую конфигурацию в файл конфигурации.

{
  "instrumentation": {
    "micrometer": {
      "enabled": false
    }
  }
}

Маскирование запросов к базе данных Java Подключение

Литеральные значения в запросах базы данных Java Подключение ivity (JDBC) по умолчанию маскируются, чтобы избежать случайного захвата конфиденциальных данных.

Начиная с 3.4.0, это поведение можно отключить. Например:

{
  "instrumentation": {
    "jdbc": {
      "masking": {
        "enabled": false
      }
    }
  }
}

Маскирование запросов Mongo

Литеральные значения в запросах Mongo маскируются по умолчанию, чтобы избежать случайного захвата конфиденциальных данных.

Начиная с 3.4.0, это поведение можно отключить. Например:

{
  "instrumentation": {
    "mongo": {
      "masking": {
        "enabled": false
      }
    }
  }
}

Заголовки HTTP

Начиная с версии 3.3.0, вы можете записывать заголовки запросов и ответов из телеметрии сервера (запросов):

{
  "preview": {
    "captureHttpServerHeaders": {
      "requestHeaders": [
        "My-Header-A"
      ],
      "responseHeaders": [
        "My-Header-B"
      ]
    }
  }
}

Имена заголовков не учитывает регистр.

Предыдущие примеры записываются под именами http.request.header.my_header_a свойств и http.response.header.my_header_b.

Аналогичным образом вы можете захватывать заголовки запросов и ответов из телеметрии клиента (зависимостей):

{
  "preview": {
    "captureHttpClientHeaders": {
      "requestHeaders": [
        "My-Header-C"
      ],
      "responseHeaders": [
        "My-Header-D"
      ]
    }
  }
}

Опять же, имена заголовков не учитывает регистр. Предыдущие примеры записываются под именами http.request.header.my_header_c свойств и http.response.header.my_header_d.

Коды ответов HTTP server 4xxx

По умолчанию HTTP-серверы запрашивают коды ответа 4xx в виде ошибок.

Начиная с версии 3.3.0, вы можете изменить это поведение, чтобы записать их в качестве успешного:

{
  "preview": {
    "captureHttpServer4xxAsError": false
  }
}

Подавление определенной телеметрии с автоматическим сбором данных

Начиная с версии 3.0.3 определенные данные телеметрии автозабора можно отключить с помощью следующих параметров конфигурации:

{
  "instrumentation": {
    "azureSdk": {
      "enabled": false
    },
    "cassandra": {
      "enabled": false
    },
    "jdbc": {
      "enabled": false
    },
    "jms": {
      "enabled": false
    },
    "kafka": {
      "enabled": false
    },
    "micrometer": {
      "enabled": false
    },
    "mongo": {
      "enabled": false
    },
    "quartz": {
      "enabled": false
    },
    "rabbitmq": {
      "enabled": false
    },
    "redis": {
      "enabled": false
    },
    "springScheduling": {
      "enabled": false
    }
  }
}

Кроме того, подобное инструментирование можно отключить, задав значение false для следующих переменных среды:

  • APPLICATIONINSIGHTS_INSTRUMENTATION_AZURE_SDK_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_CASSANDRA_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_JDBC_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_JMS_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_KAFKA_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_MICROMETER_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_MONGO_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_RABBITMQ_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_REDIS_ENABLED
  • APPLICATIONINSIGHTS_INSTRUMENTATION_SPRING_SCHEDULING_ENABLED

Затем эти переменные имеют приоритет над включенными переменными, указанными в конфигурации JSON.

Примечание.

Если вы ищете более точный элемент управления, например для подавления некоторых вызовов redis, но не всех вызовов redis, см . переопределения выборки.

Инструментирование предварительного просмотра

Начиная с версии 3.2.0, можно включить следующие предварительные инструментирования:

{
  "preview": {
    "instrumentation": {
      "akka": {
        "enabled": true
      },
      "apacheCamel": {
        "enabled": true
      },
      "grizzly": {
        "enabled": true
      },
      "ktor": {
        "enabled": true
      },
      "play": {
        "enabled": true
      },
      "r2dbc": {
        "enabled": true
      },
      "springIntegration": {
        "enabled": true
      },
      "vertx": {
        "enabled": true
      }
    }
  }
}

Примечание.

Инструментирование Akka доступно начиная с версии 3.2.2. Инструментирование библиотеки HTTP Vertx доступно начиная с версии 3.3.0.

Интервал в метриках

По умолчанию метрики фиксируются каждые 60 секунд.

Начиная с версии 3.0.3 данный интервал можно изменить:

{
  "metricIntervalSeconds": 300
}

Начиная с 3.4.9 GA, вы также можете задать его metricIntervalSeconds с помощью переменной APPLICATIONINSIGHTS_METRIC_INTERVAL_SECONDSсреды. Затем он имеет приоритет над metricIntervalSeconds указанным в конфигурации JSON.

Этот параметр применяется к следующим метрикам:

Пульс

По умолчанию Application Insights Java 3.x отправляет метрику пульса каждые 15 минут. Если для активации оповещений используется метрика пульса, можно увеличить частоту этого пульса:

{
  "heartbeat": {
    "intervalSeconds": 60
  }
}

Примечание.

Невозможно увеличить интервал дольше 15 минут, так как данные пульса также используются для отслеживания использования приложений Аналитика.

Проверка подлинности

Примечание.

Функция проверки подлинности — это общедоступная версия 3.4.17.

Проверку подлинности можно использовать для настройки агента для создания учетных данных маркера, необходимых для проверки подлинности Microsoft Entra. Дополнительные сведения см. в документации по проверке подлинности .

Прокси-сервер HTTP

Если приложение находится за брандмауэром и не может подключиться непосредственно к приложению Аналитика, обратитесь к IP-адресам, используемым приложением Аналитика.

Чтобы обойти эту проблему, можно настроить приложение Аналитика Java 3.x для использования прокси-сервера HTTP.

{
  "proxy": {
    "host": "myproxy",
    "port": 8080
  }
}

Вы также можете задать http-прокси с помощью переменной APPLICATIONINSIGHTS_PROXYсреды, которая принимает формат https://<host>:<port>. Затем он имеет приоритет над прокси-сервером, указанным в конфигурации JSON.

Приложение Аналитика Java 3.x также учитывает глобальные https.proxyHost и https.proxyPort системные свойства, если они заданы, и http.nonProxyHostsпри необходимости.

Восстановление после сбоев приема

При отправке телеметрии в службу приложений Аналитика завершается сбоем, приложение Аналитика Java 3.x сохраняет данные телеметрии на диск и продолжает повторную попытку с диска.

Ограничение по умолчанию для сохранения данных на диске составляет 50 МБ. Если у вас есть высокий объем данных телеметрии или требуется возможность восстановления после более длительного сбоя сети или приема служб, это ограничение можно увеличить начиная с версии 3.3.0:

{
  "preview": {
    "diskPersistenceMaxSizeMb": 50
  }
}

Самодиагностика

"Самодиагностика" имеет отношение к внутреннему процессу ведения журналов Application Insights Java 3.x. Эта функция предназначена для выявления и диагностики проблем с Application Insights.

По умолчанию Application Insights Java 3.x начинает вносить данные в журнал на уровне INFO как для файла applicationinsights.log, так и для консоли, в соответствии со следующей конфигурацией:

{
  "selfDiagnostics": {
    "destination": "file+console",
    "level": "INFO",
    "file": {
      "path": "applicationinsights.log",
      "maxSizeMb": 5,
      "maxHistory": 1
    }
  }
}

В предыдущем примере конфигурации:

  • level — может быть одно из: OFF, ERROR, WARN, INFO, DEBUG или TRACE.
  • path — может быть абсолютный или относительный путь. Относительные пути реализуются в каталоге, где находится applicationinsights-agent-3.5.1.jar.

Начиная с версии 3.0.2, вы также можете задать самостоятельно диагностика level с помощью переменной APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVELсреды. Затем он имеет приоритет над уровнем самообслуживания диагностика, указанным в конфигурации JSON.

Начиная с версии 3.0.3, можно также задать расположение файла самостоятельного диагностика с помощью переменной APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_FILE_PATHсреды. Затем он имеет приоритет над диагностика пути к файлу, указанному в конфигурации JSON.

Пример.

В этом примере показано, как выглядит файл конфигурации с несколькими компонентами. Настройте определенные параметры в зависимости от ваших потребностей.

{
  "connectionString": "...",
  "role": {
    "name": "my cloud role name"
  },
  "sampling": {
    "percentage": 100
  },
  "jmxMetrics": [
  ],
  "customDimensions": {
  },
  "instrumentation": {
    "logging": {
      "level": "INFO"
    },
    "micrometer": {
      "enabled": true
    }
  },
  "proxy": {
  },
  "preview": {
    "processors": [
    ]
  },
  "selfDiagnostics": {
    "destination": "file+console",
    "level": "INFO",
    "file": {
      "path": "applicationinsights.log",
      "maxSizeMb": 5,
      "maxHistory": 1
    }
  }
}