Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как настроить Azure Monitor Application Insights для Java. Дополнительные сведения см. в статье "Начало работы с OpenTelemetry".
Настройка агента Java
Источник конфигурации JSON
По умолчанию Application Insights Java 3 ожидает, что файл конфигурации будет называться applicationinsights.json и расположен в том же каталоге, что и applicationinsights-agent-3.7.8.jar.
Пользовательские размеры
Примечание.
Начиная с версии 3.0.2 Java-агента, если вы добавляете пользовательское измерение с именем service.version, значение хранится в столбце application_Version в таблице журналов в Application Insights вместо пользовательского измерения.
Если вы хотите добавить пользовательские измерения ко всем вашим данным телеметрии:
{
"customDimensions": {
"mytag": "my value",
"anothertag": "${ANOTHER_VALUE}"
}
}
Вы можете использовать ${...} для считывания значения из указанной переменной среды при запуске.
Унаследованные атрибуты (предварительная версия)
Примечание.
Эта функция доступна начиная с Java агента версии 3.2.0.
Настраиваемое измерение можно задать программным способом в телеметрии запроса. Он гарантирует наследование через зависимости и ведение журналов телеметрии. Все они учитываются в контексте этого запроса.
{
"preview": {
"inheritedAttributes": [
{
"key": "mycustomer",
"type": "string"
}
]
}
}
А затем в начале каждого запроса вызов:
Span.current().setAttribute("mycustomer", "xyz");
См. также Добавление настраиваемого свойства в Span.
Настройте переопределения выборки
Примечание.
Эта функция становится общедоступной начиная с версии 3.5.0 агента Java.
Переопределения выборки позволяют переопределить процент выборки по умолчанию. Например, доступны следующие возможности:
- Установите процент выборки на 0 или небольшое значение для шумных проверок состояния.
- Для шумных вызовов зависимостей задайте процент выборки равным 0 или небольшому значению.
- Задайте процент выборки 100 для важного типа запроса. Например, можно использовать
/login, даже если выборка по умолчанию настроена на что-то меньшее.
Применение выборки отменяет терминологию
Прежде чем приступить к изучению переопределений выборки, вы должны понимать термин диапазон.
Спан — это тип телеметрии, который представляет одно из следующих:
- Входящий запрос.
- Исходящая зависимость (например, удаленный вызов другой службы).
- Внутрипроцессный набор зависимостей (например, работа, выполняемая подкомпонентами службы).
Для переопределения параметров выборки важны следующие компоненты:
- Атрибуты
Атрибуты диапазона представляют стандартные и пользовательские свойства выданного запроса или зависимости.
Начало работы с переопределениями параметров выборки
Для начала создайте файл конфигурации с именем applicationinsights.json. Сохраните его в том же каталоге, что и applicationinsights-agent-*.jar. Используйте следующий шаблон.
{
"connectionString": "...",
"sampling": {
"percentage": 10,
"overrides": [
{
"telemetryType": "request",
"attributes": [
...
],
"percentage": 0
},
{
"telemetryType": "request",
"attributes": [
...
],
"percentage": 100
}
]
}
}
Как работает переопределение выборки
telemetryType (telemetryKind в Application Insights 3.4.0) должен быть одним из request, dependency( trace log) или exception.
Когда запускается интервал, тип интервала и атрибуты, присутствующие в нём в это время, используются для проверки совпадения изменений выборки. Совпадения могут иметь тип strict или regexp. Соответствие регулярных выражений проверяется в отношении всего значения атрибута, поэтому, если вы хотите сопоставить значение, содержащее abc в любом месте, вам нужно использовать .*abc.*.
Переопределение выборки может определять несколько критериев атрибутов, и в этом случае все они должны совпадать, чтобы переопределение выборки совпадало. Если одно из переопределений выборки совпадает, то для решения, следует ли выбирать диапазон, используется соответствующий процент выборки.
Используется только первое совпавшее переопределение выборки. Если ни одно переопределение параметров выборки не будет соответствовать:
- Если это первый диапазон трассировки, используется конфигурация выборки верхнего уровня.
- Если это не первый диапазон трассировки, то используется родительское решение выборки.
Атрибуты диапазона, доступные для выборки
Атрибуты диапазона OpenTelemetry автоматически собираются и основаны на семантических соглашениях OpenTelemetry.
Вы также можете программно добавлять атрибуты диапазона и использовать их для выборки.
Примечание.
Чтобы просмотреть точный набор атрибутов, фиксируемых Application Insights Java для вашего приложения, установите уровень самодиагностики на отладку и найдите отладочные сообщения, начинающиеся с текста "экспорт span".
Для выборки доступны только атрибуты, заданные в начале временного промежутка, поэтому атрибуты, такие как
http.response.status_codeили длительность запроса, которые записываются позже, можно фильтровать по расширениям OpenTelemetry Java. Ниже приведено расширение sample, которое фильтрует диапазоны на основе длительности запроса.Атрибуты, добавленные с помощью обработчика телеметрии, недоступны для выборки.
Варианты использования переопределения выборки
Разверните любой из следующих вариантов использования, чтобы просмотреть пример конфигурации.
Отключение сбора телеметрии для тестов здоровья
Этот пример подавляет сбор данных телеметрии для всех запросов к /health-checks.
В этом примере также подавляется сбор всех нижестоящих диапазонов (зависимостей), которые обычно собираются под /health-checks.
{
"connectionString": "...",
"sampling": {
"overrides": [
{
"telemetryType": "request",
"attributes": [
{
"key": "url.path",
"value": "/health-check",
"matchType": "strict"
}
],
"percentage": 0
}
]
}
}
Отключение сбора данных телеметрии для зашумленного вызова зависимости
Этот пример отменяет сбор данных телеметрии для всех GET my-noisy-key вызовов redis.
{
"connectionString": "...",
"sampling": {
"overrides": [
{
"telemetryType": "dependency",
"attributes": [
{
"key": "db.system",
"value": "redis",
"matchType": "strict"
},
{
"key": "db.statement",
"value": "GET my-noisy-key",
"matchType": "strict"
}
],
"percentage": 0
}
]
}
}
Сбор 100% телеметрии для важного типа запроса
В этом примере собирается 100 % телеметрических данных для /login.
Поскольку подчиненные диапазоны (зависимости) следуют решению о выборке родителя (если нет переопределения выборки для этого подчиненного диапазона), они также собираются для всех запросов "/login".
{
"connectionString": "...",
"sampling": {
"percentage": 10
},
"sampling": {
"overrides": [
{
"telemetryType": "request",
"attributes": [
{
"key": "url.path",
"value": "/login",
"matchType": "strict"
}
],
"percentage": 100
}
]
}
}
Предоставление атрибутов диапазона для подавления вызовов зависимостей SQL
В этом примере показано, как определить доступные атрибуты для подавления шумных вызовов SQL. В следующем запросе показаны различные вызовы SQL и связанные записи за последние 30 дней:
dependencies
| where timestamp > ago(30d)
| where name == 'SQL: DB Query'
| summarize count() by name, operation_Name, data
| sort by count_ desc
SQL: DB Query POST /Order DECLARE @MyVar varbinary(20); SET @MyVar = CONVERT(VARBINARY(20), 'Hello World');SET CONTEXT_INFO @MyVar; 36712549
SQL: DB Query POST /Receipt DECLARE @MyVar varbinary(20); SET @MyVar = CONVERT(VARBINARY(20), 'Hello World');SET CONTEXT_INFO @MyVar; 2220248
SQL: DB Query POST /CheckOutForm DECLARE @MyVar varbinary(20); SET @MyVar = CONVERT(VARBINARY(20), 'Hello World');SET CONTEXT_INFO @MyVar; 554074
SQL: DB Query GET /ClientInfo DECLARE @MyVar varbinary(20); SET @MyVar = CONVERT(VARBINARY(20), 'Hello World');SET CONTEXT_INFO @MyVar; 37064
Из результатов можно увидеть, что все операции используют одно и то же значение в поле data: DECLARE @MyVar varbinary(20); SET @MyVar = CONVERT(VARBINARY(20), 'Hello World');SET CONTEXT_INFO @MyVar;. Общие черты всех этих записей делают их подходящими для переопределения выборки.
При настройке самостоятельной диагностики для отладки в выходных данных отображаются следующие записи журнала:
2023-10-26 15:48:25.407-04:00 DEBUG c.m.a.a.i.exporter.AgentSpanExporter - exporting span: SpanData{spanContext=ImmutableSpanContext...
Область внимания в этих журналах — это раздел "атрибуты":
{
"attributes": {
"data": {
"thread.name": "DefaultDatabaseBroadcastTransport: MessageReader thread",
"thread.id": 96,
"db.connection_string": "apache:",
"db.statement": "DECLARE @MyVar varbinary(20); SET @MyVar = CONVERT(VARBINARY(20), 'Hello World');SET CONTEXT_INFO @MyVar;",
"db.system": "other_sql",
"applicationinsights.internal.item_count": 1
}s
}
}
С помощью этого вывода можно настроить переопределение выборки, аналогичное следующему примеру, который фильтрует шумные вызовы SQL:
{
"connectionString": "...",
"preview": {
"sampling": {
"overrides": [
{
"telemetryType": "dependency",
"attributes": [
{
"key": "db.statement",
"value": "DECLARE @MyVar varbinary(20); SET @MyVar = CONVERT(VARBINARY(20), 'Hello World');SET CONTEXT_INFO @MyVar;",
"matchType": "strict"
}
],
"percentage": 0
}
]
}
}
}
После применения изменений следующий запрос позволяет определить время последнего приема этих зависимостей в Application Insights:
dependencies
| where timestamp > ago(30d)
| where data contains 'DECLARE @MyVar'
| summarize max(timestamp) by data
| sort by max_timestamp desc
DECLARE @MyVar varbinary(20); SET @MyVar = CONVERT(VARBINARY(20), 'Hello World');SET CONTEXT_INFO @MyVar; 11/13/2023 8:52:41 PM
Подавление сбора телеметрии для журнала
С помощью SLF4J можно добавить атрибуты журнала:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
public class MdcClass {
private static final Logger logger = LoggerFactory.getLogger(MdcClass.class);
void method() {
MDC.put("key", "value");
try {
logger.info(...); // Application log to remove
} finally {
MDC.remove("key"); // In a finally block in case an exception happens with logger.info
}
}
}
Затем можно удалить журнал с добавленным атрибутом:
{
"sampling": {
"overrides": [
{
"telemetryType": "trace",
"percentage": 0,
"attributes": [
{
"key": "key",
"value": "value",
"matchType": "strict"
}
]
}
]
}
}
Отключение телеметрии для метода Java
В следующих примерах добавляется диапазон к методу Java и удаляется диапазон с переопределением выборки.
Сначала добавьте opentelemetry-instrumentation-annotations зависимость:
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-instrumentation-annotations</artifactId>
</dependency>
Затем добавьте заметку WithSpan в метод Java, выполняющий SQL-запросы:
package org.springframework.samples.petclinic.vet;
@Controller
class VetController {
private final VetRepository vetRepository;
public VetController(VetRepository vetRepository) {
this.vetRepository = vetRepository;
}
@GetMapping("/vets.html")
public String showVetList(@RequestParam(defaultValue = "1") int page, Model model) {
Vets vets = new Vets();
Page<Vet> paginated = findPaginated(page);
vets.getVetList().addAll(paginated.toList());
return addPaginationModel(page, paginated, model);
}
@WithSpan
private Page<Vet> findPaginated(int page) {
int pageSize = 5;
Pageable pageable = PageRequest.of(page - 1, pageSize);
return vetRepository.findAll(pageable); // Execution of SQL requests
}
}
Следующая конфигурация переопределения выборки удаляет диапазон, добавленный заметкой WithSpan :
"sampling": {
"overrides": [
{
"telemetryType": "dependency",
"attributes": [
{
"key": "code.function",
"value": "findPaginated",
"matchType": "strict"
}
],
"percentage": 0
}
]
}
Значение атрибута — это имя метода Java.
Эта конфигурация удаляет все данные телеметрии, созданные методом findPaginated. Зависимости SQL не создаются для выполнений SQL-запросов, поступающих из метода findPaginated.
Следующая конфигурация удаляет все данные телеметрии, переданные методами VetController класса с аннотацией WithSpan.
"sampling": {
"overrides": [
{
"telemetryType": "dependency",
"attributes": [
{
"key": "code.namespace",
"value": "org.springframework.samples.petclinic.vet.VetController",
"matchType": "strict"
}
],
"percentage": 0
}
]
}
Выборка имеет преимущество перед устранением неполадок
См. специальную статью об устранении неполадок.
Часто задаваемые вопросы о переопределении выборки
Чтобы просмотреть часто задаваемые вопросы (FAQ), см. раздел "Часто задаваемые вопросы о переопределениях выборки Sampling overrides FAQ".
Настройка коллекции телеметрии
В этом разделе:
- Настройка метрик JMX
- Автоматическое ведение журнала
- Автосбор метрик Micrometer (включая метрики Spring Boot Actuator)
- Автоматический сбор зависимостей InProc (предварительная версия)
- Загрузчик пакета SDK для браузера (предварительная версия)
Настройка метрик JMX
Как собирать дополнительные метрики JMX
Application Insights Java 3.x собирает некоторые метрики расширений управления Java (JMX) по умолчанию, но чаще всего этого недостаточно. В этом разделе подробно описывается параметр конфигурации JMX.
Коллекция метрик JMX можно настроить, добавив "jmxMetrics" раздел в файл applicationinsights.json . Введите имя для метрики, так как она будет отображаться на портале Azure в ресурсе Application Insights. Имя и атрибут объекта необходимы для каждой из метрик, которые нужно собрать. В именах объектов можно использовать подстановочные знаки в стиле glob, такие как *.
Как узнать, какие метрики доступны для настройки
Свойства, такие как имена объектов и атрибуты, отличаются для различных библиотек, платформ и серверов приложений и часто не хорошо документированы.
Чтобы просмотреть доступные метрики JMX для конкретной среды, задайте уровень DEBUG самостоятельной диагностики в applicationinsights.json файле конфигурации, например:
{
"selfDiagnostics": {
"level": "DEBUG"
}
}
Доступные метрики JMX с именами объектов и именами атрибутов отображаются в файле журнала Application Insights.
Выходные данные файла журнала выглядят примерно так, как в этих примерах. В некоторых случаях это может быть обширным.
Вы также можете использовать средство command line для проверки доступных метрик JMX.
Пример конфигурации JMX
Зная, какие метрики доступны, можно настроить агент для их сбора.
В следующих примерах конфигурации Java 8 первый из них — вложенная метрика LastGcInfo с несколькими свойствами, и мы хотим зафиксировать GcThreadCount:
"jmxMetrics": [
{
"name": "Demo - GC Thread Count",
"objectName": "java.lang:type=GarbageCollector,name=PS MarkSweep",
"attribute": "LastGcInfo.GcThreadCount"
},
{
"name": "Demo - GC Collection Count",
"objectName": "java.lang:type=GarbageCollector,name=PS MarkSweep",
"attribute": "CollectionCount"
},
{
"name": "Demo - Thread Count",
"objectName": "java.lang:type=Threading",
"attribute": "ThreadCount"
}
]
Если вы хотите собрать другие метрики расширений управления 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объекта, который требуется собрать. Символ подстановочного знака (*) поддерживается. -
attribute— это имя атрибута внутриJMX MBean, которое вы хотите собрать.
Поддерживаются числовые и логические значения метрик JMX. Логические метрики JMX сопоставляются со значением 0 для false и 1 для true.
Где найти метрики JMX в Application Insights
Метрики JMX, собранные во время работы приложения, можно просмотреть, перейдя к ресурсу Application Insights на портале Azure. В области метрик выберите раскрывающийся список, как показано для просмотра метрик.
Ведение журнала автоколлектов
Log4j, Logback, JBoss Log и java.util.log автоматически используются. Ведение журнала с помощью этих платформ ведения журнала выполняется автоматически.
Ведение журнала осуществляется только в случае, если:
- Соответствует заданному уровню для платформы ведения журнала.
- Также соответствует настроенному уровню для Application Insights.
Например, если платформа ведения журнала настроена для записи WARN (и вы настроили ее, как описано выше) из пакета com.example, а Application Insights настроена для захвата INFO (и вы настроили, как описано), Application Insights записывает только WARN (и более серьезные) из пакета com.example.
Уровень по умолчанию, настроенный для Application Insights, — INFO. Если вы хотите изменить этот уровень:
{
"instrumentation": {
"logging": {
"level": "WARN"
}
}
}
Вы также можете задать уровень с помощью переменной APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVELсреды. Затем он имеет приоритет над уровнем, указанным в конфигурации JSON.
Эти допустимые level значения можно использовать для указания в applicationinsights.json файле. В таблице показано, как они соответствуют уровням ведения журнала в разных платформах ведения журнала.
| Уровень | Log4j | Обратный вход | JBoss | ИЮЛ |
|---|---|---|---|---|
| ВЫКЛ. | ВЫКЛ. | ВЫКЛ. | ВЫКЛ. | ВЫКЛ. |
| Фатальный | Фатальный | ОШИБКА | Фатальный | СЕРЬЕЗНЫЙ |
| ОШИБКА (или КРИТИЧЕСКАЯ) | ОШИБКА | ОШИБКА | ОШИБКА | СЕРЬЕЗНЫЙ |
| ПРЕДУПРЕЖДЕНИЕ | ПРЕДУПРЕЖДЕНИЕ | ПРЕДУПРЕЖДЕНИЕ | ПРЕДУПРЕЖДЕНИЕ | ПРЕДУПРЕЖДЕНИЕ |
| ИНФО | ИНФО | ИНФО | ИНФО | ИНФО |
| конфигурация | ОТЛАДКА | ОТЛАДКА | ОТЛАДКА | конфигурация |
| DEBUG (или FINE) | ОТЛАДКА | ОТЛАДКА | ОТЛАДКА | Хорошо |
| ЛУЧШЕ | ОТЛАДКА | ОТЛАДКА | ОТЛАДКА | ЛУЧШЕ |
| TRACE (или 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, ClassName, MethodName и LineNumber для Logback.
{
"preview": {
"captureLogbackCodeAttributes": true
}
}
Предупреждение
Запись атрибутов кода может привести к снижению производительности.
Уровень логирования в качестве настраиваемого измерения
Начиная с Java агента версии 3.3.0, LoggingLevel по умолчанию не фиксируется в пользовательском измерении Traces, так как эти данные уже записаны в поле SeverityLevel.
При необходимости можно временно повторно включить предыдущее поведение:
{
"preview": {
"captureLoggingLevelAsCustomDimension": true
}
}
Автоматически собранные метрики микрометра (включая метрики Spring Boot Actuator)
Если приложение использует Micrometer, метрики, отправленные в глобальный реестр Micrometer, автоматически собираются.
Если приложение использует Spring Boot Actuator, метрики, настроенные Spring Boot Actuator, также автоматически собираются.
Отправка пользовательских метрик с помощью Micrometer
Добавьте Micrometer в приложение, как показано в следующем примере.
<dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-core</artifactId> <version>1.6.1</version> </dependency>Используйте глобальный реестр Micrometer для создания счетчика, как показано в следующем примере.
static final Counter counter = Metrics.counter("test.counter");Используйте счетчик для записи метрик с помощью следующей команды.
counter.increment();Метрики вносятся в таблицу customMetrics, где захватываются теги, фиксированные в столбце
customDimensions. Вы также можете просмотреть метрики в обозревателе метрик вLog-based metricsпространстве имен метрик.Примечание.
Application Insights Java заменяет все нефанумерные символы (за исключением дефисов) в имени метрики Micrometer символами подчеркивания. В результате предыдущая
test.counterметрика будет отображаться какtest_counter.
Отключение автозаполнения метрик
Чтобы отключить автоматический сбор метрик Micrometer и метрик Spring Boot Actuator, выполните приведенные ниже действия.
{
"instrumentation": {
"micrometer": {
"enabled": false
}
}
}
Примечание.
Пользовательские метрики выставляются отдельно и могут создавать дополнительные затраты. Обязательно проверьте сведения о ценах. Чтобы отключить метрики Micrometer и Spring Boot Actuator, добавьте следующую конфигурацию в файл конфигурации.
Автоматическая сборка внутрипроцессных зависимостей (предварительная версия)
Примечание.
Эта функция доступна начиная с Java агента версии 3.2.0.
Если вы хотите записать зависимости контроллера InProc, используйте следующую конфигурацию:
{
"preview": {
"captureControllerSpans": true
}
}
Загрузчик пакета SDK для браузера (предварительная версия)
Эта функция автоматически внедряет загрузчик SDK для браузера в HTML-страницы приложения, а также настраивает соответствующую строку подключения.
Например, когда приложение 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 пользователя. Подробные сведения можно найти в ApplicationInsights-JS.
Если вы хотите включить эту функцию, добавьте следующий параметр конфигурации:
{
"preview": {
"browserSdkLoader": {
"enabled": true
}
}
}
Настройка процессоров телеметрии (предварительная версия)
Обработчики телеметрии можно использовать для настройки правил, применяемых к запросам, зависимостям и телеметрии трассировки. Application Insights Java 3.x может обрабатывать данные телеметрии перед экспортом данных.
Варианты использования:
- Маскирование конфиденциальных данных.
- Добавляйте пользовательские измерения при условии.
- Обновите имя диапазона, которое используется для статистической обработки аналогичных данных телеметрии на портале Azure.
- Удалите атрибуты диапазона, чтобы контролировать затраты на обработку данных.
- Отфильтруйте некоторые метрики, чтобы контролировать затраты на обработку данных.
Если вы хотите удалить определенные (целые) интервалы для управления затратами на обработку данных, см. раздел "Настройка переопределения выборки".
Примечание.
Функция процессоров телеметрии обозначена как предварительная версия, так как мы не можем гарантировать обратную совместимость от выпуска к выпуску из-за экспериментального состояния семантических соглашений. Однако эта функция протестирована и поддерживается в рабочей среде.
Терминология процессоров телеметрии
Прежде чем вы узнаете о процессорах телеметрии, вы должны понять термины спан и лог.
Спан — это тип телеметрии, который представляет одно из следующих:
- Входящий запрос.
- Исходящая зависимость (например, удаленный вызов другой службы).
- Внутрипроцессный набор зависимостей (например, работа, выполняемая подкомпонентами службы).
Журнал — это тип телеметрии, представляющий:
- данные журнала, полученные из Log4j, Logback и java.util.log
Для процессоров телеметрии важны следующие компоненты: охват и лог.
| Компонент | Описание |
|---|---|
| Имя | Основное отображение запросов и зависимостей на портале Azure. |
| Атрибуты | Атрибуты диапазона представляют как стандартные, так и пользовательские свойства заданного запроса или зависимости. Атрибуты журнала представляют как стандартные, так и пользовательские свойства заданного журнала. |
| Тело | Сообщение трассировки или текст является основным отображением журналов на портале Azure. |
Типы процессоров телеметрии
В настоящее время четыре типа процессоров телеметрии:
| Процессор | Описание |
|---|---|
| Обработчики атрибутов | Обработчик атрибутов может вставлять, обновлять, удалять или хэш-атрибуты элемента телеметрии (span или log). Он также может использовать регулярное выражение для извлечения одного или нескольких новых атрибутов из существующего атрибута. |
| Процессоры диапазона | Обработчик диапазона может обновить имя телеметрии запросов и зависимостей. Он также может использовать регулярное выражение для извлечения одного или нескольких новых атрибутов из имени диапазона. |
| Обработчики журналов | Обработчик журналов может обновить имя телеметрии журналов. Он также может использовать регулярное выражение для извлечения одного или нескольких новых атрибутов из имени журнала. |
| Фильтры метрик | Фильтр метрик может отфильтровать метрики, чтобы помочь управлять затратами на прием данных. |
Примечание.
В настоящее время обработчики телеметрии обрабатывают только атрибуты строки типа. Они не обрабатывают атрибуты типа Boolean или number.
Начало работы с процессорами телеметрии
Для начала создайте файл конфигурации с именем applicationinsights.json. Сохраните его в том же каталоге, что и applicationinsights-agent-*.jar. Используйте следующий шаблон.
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
...
},
{
"type": "span",
...
},
{
"type": "log",
...
},
{
"type": "metric-filter",
...
}
]
}
}
Обработчик атрибутов изменяет атрибуты a span или a log. Это может поддерживать возможность включения или исключения span или log. Он принимает список действий, выполняемых в том порядке, в котором указан файл конфигурации. Обработчик поддерживает следующие действия:
Подсказка
Разверните каждое из следующих действий, чтобы просмотреть дополнительные сведения.
insert
Действие insert вставляет новый атрибут в элемент телеметрии, если key атрибут еще не существует.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"value": "value1",
"action": "insert"
}
]
}
]
Для insert действия требуются следующие параметры:
key- Либо
valueилиfromAttribute -
action:insert
update
Действие update обновляет атрибут в элементе телеметрии, где key уже существует.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"value": "newValue",
"action": "update"
}
]
}
]
Для update действия требуются следующие параметры:
key- Либо
valueилиfromAttribute -
action:update
delete
Действие delete удаляет атрибут из элемента телеметрии.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"action": "delete"
}
]
}
]
Для delete действия требуются следующие параметры:
key-
action:delete
hash
Действие hash хэширует (SHA1) существующее значение атрибута.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"action": "hash"
}
]
}
]
Для hash действия требуются следующие параметры:
key-
action:hash
extract
Примечание.
Функция extract доступна начиная с агента Java версии 3.0.2.
Действие extract извлекает значения с помощью правила регулярного выражения из входного ключа к целевым ключам, которые указывает правило. Если целевой ключ уже существует, extract действие переопределяет целевой ключ. Это действие аналогично параметру процессора диапазонаtoAttributes, где существующий атрибут выступает в роли источника.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"pattern": "<regular pattern with named matchers>",
"action": "extract"
}
]
}
]
Для extract действия требуются следующие параметры:
keypattern-
action:extract
mask
Примечание.
Функция mask доступна начиная с агента Java версии 3.2.5.
Значения атрибутов mask маскируются с помощью правила регулярного выражения, указанного в pattern и replace.
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attributeName",
"pattern": "<regular expression pattern>",
"replace": "<replacement value>",
"action": "mask"
}
]
}
]
Для mask действия требуются следующие параметры:
keypatternreplace-
action:mask
pattern может содержать именованную группу, расположенную между ?< и >:. Пример: (?<userGroupName>[a-zA-Z.:\/]+)\d+? Группа (?<userGroupName>[a-zA-Z.:\/]+), а userGroupName — это название группы.
pattern затем может содержать такую же именованную группу, расположенную между ${ и }, после которых следует маска. Пример маски : **: ${userGroupName}**.
Включение условий и исключение условий
Обработчики атрибутов поддерживают необязательные include и exclude критерии. Обработчик атрибутов применяется только к телеметрии, которая соответствует его include критериям (если она доступна) и не соответствует его exclude критериям (если оно доступно).
Чтобы настроить этот параметр, укажите хотя бы один include и либо exclude, либо matchType в разделе spanNames или в обоих. Конфигурация include или exclude позволяет больше одного указанного условия. Все указанные условия должны иметь значение true, чтобы привести к совпадению.
| Поле | Описание | Требование |
|---|---|---|
matchType |
Управляет интерпретацией элементов в spanNames массивах и attributes массивах. Возможные значения: regexp и strict.Соответствие регулярных выражений проверяется в отношении всего значения атрибута, поэтому, если вы хотите сопоставить значение, содержащее abc в любом месте, вам нужно использовать .*abc.*. |
Required |
spanNames |
Должен соответствовать как минимум одному из элементов. | Необязательно |
* attributes |
Указывает список атрибутов для сопоставления. Все эти атрибуты должны соответствовать точно, чтобы привести к совпадению. | Необязательно |
Примечание.
Если указаны оба
includeиexclude, свойстваincludeпроверяются перед проверкой свойствexclude.Если конфигурации
includeилиexcludeне указаны вspanNames, то соответствующие критерии применяются к обоимspansиlogs.
Примеры обработчика телеметрии
"processors": [
{
"type": "attribute",
"include": {
"matchType": "strict",
"spanNames": [
"spanA",
"spanB"
]
},
"exclude": {
"matchType": "strict",
"attributes": [
{
"key": "redact_trace",
"value": "false"
}
]
},
"actions": [
{
"key": "credit_card",
"action": "delete"
},
{
"key": "duplicate_key",
"action": "delete"
}
]
}
]
Разверните приведенные ниже разделы, чтобы просмотреть различные примеры обработчика атрибутов.
Вставить
В следующем примере вставляется новый атрибут {"attribute1": "attributeValue1"} в диапазоны и журналы, в которых ключ attribute1 не существует.
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "attribute1",
"value": "attributeValue1",
"action": "insert"
}
]
}
]
}
}
Вставка из другого ключа
В следующем примере используется значение из атрибута anotherkey для вставки нового атрибута {"newKey": "<value from attribute anotherkey>"} в диапазоны и журналы, где ключ newKey не существует. Если атрибут anotherkey не существует, новый атрибут не вставляется в диапазоны и журналы.
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "newKey",
"fromAttribute": "anotherKey",
"action": "insert"
}
]
}
]
}
}
Обновление
В следующем примере атрибут обновляется на {"db.secret": "redacted"}. Он обновляет атрибут boo с помощью значения из атрибута foo. Диапазоны и журналы, которые не имеют атрибута boo , не изменяются.
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "db.secret",
"value": "redacted",
"action": "update"
},
{
"key": "boo",
"fromAttribute": "foo",
"action": "update"
}
]
}
]
}
}
Удалить
В следующем примере показано, как удалить атрибут с ключом credit_card.
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "credit_card",
"action": "delete"
}
]
}
]
}
}
Хэш
В следующем примере показано, как хэшировать существующие значения атрибутов.
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "user.email",
"action": "hash"
}
]
}
]
}
}
Извлечь
В следующем примере показано, как использовать регулярное выражение (regex) для создания новых атрибутов на основе значения другого атрибута.
Например, для url.path = /path?queryParam1=value1,queryParam2=value2 вставляются следующие атрибуты:
- httpProtocol:
http - httpDomain:
example.com - httpPath:
path - httpQueryParams:
queryParam1=value1,queryParam2=value2 - url.path: нет изменений
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "url.path",
"pattern": "^(?<httpProtocol>.*):\\/\\/(?<httpDomain>.*)\\/(?<httpPath>.*)(\\?|\\&)(?<httpQueryParams>.*)",
"action": "extract"
}
]
}
]
}
}
Маска
Например, url.path = https://example.com/user/12345622 обновляется до url.path = https://example.com/user/**** с использованием любой из приведенных ниже конфигураций.
Первый пример конфигурации:
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "url.path",
"pattern": "user\\/\\d+",
"replace": "user\\/****",
"action": "mask"
}
]
}
]
}
}
Второй пример конфигурации с именем группы регулярных выражений:
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"actions": [
{
"key": "url.path",
"pattern": "^(?<userGroupName>[a-zA-Z.:\/]+)\d+",
"replace": "${userGroupName}**",
"action": "mask"
}
]
}
]
}
}
Примеры нестрокных типизированных атрибутов
Начиная с 3.4.19 GA, процессоры телеметрии поддерживают нестроковые типизированные атрибуты: boolean, , double, longboolean-array, double-arraylong-arrayи string-array.
Если attributes.type не указан в JSON, по умолчанию используется string.
Следующий пример вставляет новый атрибут {"newAttributeKeyStrict": "newAttributeValueStrict"} в диапазоны и журналы, где атрибуты соответствуют следующим примерам:
{"longAttributeKey": 1234}{"booleanAttributeKey": true}{"doubleArrayAttributeKey": [1.0, 2.0, 3.0, 4.0]}
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"include": {
"matchType": "strict",
"attributes": [
{
"key": "longAttributeKey",
"value": 1234,
"type": "long"
},
{
"key": "booleanAttributeKey",
"value": true,
"type": "boolean"
},
{
"key": "doubleArrayAttributeKey",
"value": [1.0, 2.0, 3.0, 4.0],
"type": "double-array"
}
]
},
"actions": [
{
"key": "newAttributeKeyStrict",
"value": "newAttributeValueStrict",
"action": "insert"
}
],
"id": "attributes/insertNewAttributeKeyStrict"
}
]
}
}
Кроме того, поддерживаются атрибуты с типом 'не строка' regexp.
В следующем примере новый атрибут
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"include": {
"matchType": "regexp",
"attributes": [
{
"key": "longRegexpAttributeKey",
"value": "4[0-9][0-9]",
"type": "long"
}
]
},
"actions": [
{
"key": "newAttributeKeyRegexp",
"value": "newAttributeValueRegexp",
"action": "insert"
}
],
"id": "attributes/insertNewAttributeKeyRegexp"
}
]
}
}
Включение и исключение примеров диапазона
Разверните приведенные ниже разделы, чтобы просмотреть различные примеры включения и исключения диапазонов.
Включить диапазоны
В этом разделе показано, как включить диапазоны для обработчика атрибутов. Обработчик не обрабатывает диапазоны, которые не соответствуют свойствам.
Для совпадения требуется, чтобы имя диапазона было равно spanA или spanB.
Эти диапазоны соответствуют include свойствам, а действия процессора применяются:
-
Span1Имя: "spanA" Атрибуты: {env: dev, test_request: 123, credit_card: 1234} -
Span2Имя: "spanB" Атрибуты: {env: dev, test_request: false} -
Span3Имя: "spanA" Атрибуты: {env: 1, test_request: dev, credit_card: 1234}
Этот диапазон не соответствует include свойствам, а действия процессора не применяются:
-
Span4Имя: "spanC" Атрибуты: {env: dev, test_request: false}
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"include": {
"matchType": "strict",
"spanNames": [
"spanA",
"spanB"
]
},
"actions": [
{
"key": "credit_card",
"action": "delete"
}
]
}
]
}
}
Исключить диапазоны
В этом разделе показано, как исключить диапазоны для обработчика атрибутов. Этот обработчик не обрабатывает диапазоны, соответствующие свойствам.
Для совпадения требуется, чтобы имя диапазона было равно spanA или spanB.
Следующие диапазоны соответствуют exclude свойствам, а действия процессора не применяются:
-
Span1Имя: "spanA" Атрибуты: {env: dev, test_request: 123, credit_card: 1234} -
Span2Имя: "spanB" Атрибуты: {env: dev, test_request: false} -
Span3Имя: "spanA" Атрибуты: {env: 1, test_request: dev, credit_card: 1234}
Этот диапазон не соответствует exclude свойствам, а действия процессора применяются:
-
Span4Имя: "spanC" Атрибуты: {env: dev, test_request: false}
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"exclude": {
"matchType": "strict",
"spanNames": [
"spanA",
"spanB"
]
},
"actions": [
{
"key": "credit_card",
"action": "delete"
}
]
}
]
}
}
Исключение диапазонов с помощью нескольких критериев
В этом разделе показано, как исключить диапазоны для обработчика атрибутов. Этот обработчик не обрабатывает диапазоны, соответствующие свойствам.
Для совпадения необходимо выполнение следующих условий:
- Атрибут (например,
envсо значениемdev) должен существовать в диапазоне. - Диапазон должен иметь атрибут, имеющий ключ
test_request.
Следующие диапазоны соответствуют exclude свойствам, а действия процессора не применяются:
-
Span1Имя: 'spanB' Атрибуты: {env: dev, test_request: 123, credit_card: 1234} -
Span2Имя: "spanA" Атрибуты: {env: dev, test_request: false}
Следующий диапазон не соответствует exclude свойствам, и применяются действия процессора:
-
Span3Имя: "spanB" Атрибуты: {env: 1, test_request: dev, credit_card: 1234} -
Span4Имя: "spanC" Атрибуты: {env: dev, dev_request: false}
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"exclude": {
"matchType": "strict",
"spanNames": [
"spanA",
"spanB"
],
"attributes": [
{
"key": "env",
"value": "dev"
},
{
"key": "test_request"
}
]
},
"actions": [
{
"key": "credit_card",
"action": "delete"
}
]
}
]
}
}
Выборочная обработка
В этом разделе показано, как указать набор свойств диапазона, указывающих, к каким диапазонам должен применяться этот процессор. Свойства include указывают, какие диапазоны должны обрабатываться. Свойства exclude отфильтровывают диапазоны, которые не должны обрабатываться.
В следующей конфигурации эти диапазоны соответствуют свойствам и применяются действия процессора:
-
Span1Имя: "spanB" Атрибуты: {env: производство, test_request: 123, credit_card: 1234, redact_trace: "false"} -
Span2Имя: "spanA" Атрибуты: {env: тестовая, test_request: false, redact_trace: true}
Эти диапазоны не соответствуют include свойствам, а действия процессора не применяются:
-
Span3Имя: 'spanB' Атрибуты: {env: production, test_request: true, credit_card: 1234, redact_trace: false} -
Span4Имя: "spanC" Атрибуты: {env: dev, test_request: false}
{
"connectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000",
"preview": {
"processors": [
{
"type": "attribute",
"include": {
"matchType": "strict",
"spanNames": [
"spanA",
"spanB"
]
},
"exclude": {
"matchType": "strict",
"attributes": [
{
"key": "redact_trace",
"value": "false"
}
]
},
"actions": [
{
"key": "credit_card",
"action": "delete"
},
{
"key": "duplicate_key",
"action": "delete"
}
]
}
]
}
}
Часто задаваемые вопросы о процессорах телеметрии
Чтобы просмотреть FAQ, см. раздел "Часто задаваемые вопросы об обработчиках телеметрии".
Переопределение или подавление поведения по умолчанию
В этом разделе:
- Переопределения строки подключения (предварительный просмотр)
- Переопределение имен ролей в облаке (предварительная версия)
- Настройка строка подключения во время выполнения
- Локально отключить считывание данных (предварительная версия)
Переопределения строк подключения (предварительный просмотр)
Эта функция предоставляется в предварительной версии, начиная с 3.4.0.
Переопределения строки подключения позволяют изменить строку подключения по умолчанию. Например, доступны следующие возможности:
- Задайте одну строку подключения для одного префикса пути HTTP
/myapp1. - Задайте другую строку подключения для другого HTTP-префикса пути
/myapp2/.
{
"preview": {
"connectionStringOverrides": [
{
"httpPathPrefix": "/myapp1",
"connectionString": "..."
},
{
"httpPathPrefix": "/myapp2",
"connectionString": "..."
}
]
}
}
Переопределения названий облачных ролей (предварительный просмотр)
Эта функция предоставляется в предварительной версии начиная с 3.3.0.
Переопределения имен ролей в облаке позволяют переопределить имя по умолчанию для облачной роли. Например, доступны следующие возможности:
- Задайте одно имя облачной роли для одного префикса пути HTTP
/myapp1. - Задайте другое имя облачной роли для другого префикса пути HTTP
/myapp2/.
{
"preview": {
"roleNameOverrides": [
{
"httpPathPrefix": "/myapp1",
"roleName": "Role A"
},
{
"httpPathPrefix": "/myapp2",
"roleName": "Role B"
}
]
}
}
Настройте строку подключения во время выполнения программы
Примечание.
Эта функция доступна начиная с Java агента версии 3.4.8.
Если вам нужна возможность настроить строка подключения во время выполнения, добавьте это свойство в конфигурацию json:
{
"connectionStringConfiguredAtRuntime": true
}
Добавьте applicationinsights-core в свое приложение:
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-core</artifactId>
<version>3.7.8</version>
</dependency>
Используйте статический configure(String) метод в классе com.microsoft.applicationinsights.connectionstring.ConnectionString.
Примечание.
Все данные телеметрии, которые записываются до настройки строка подключения, будут удалены, поэтому рекомендуется настроить ее как можно раньше при запуске приложения.
Локально отключить выборку данных на этапе приема (предварительный просмотр)
По умолчанию, когда в агенте Java эффективный процент выборки составляет 100%, и на вашем ресурсе Application Insights настроена выборка данных, будет применен процент выборки данных.
Обратите внимание, что это поведение применяется как к выборке фиксированной частоты 100 %, так и к ограниченной частоте выборки, если скорость запроса не превышает предел скорости (эффективно захватывая 100 % во время непрерывного скользящего периода времени).
Начиная с версии 3.5.3 вы можете отключить это поведение (и сохранить 100% телеметрии в этих случаях, даже если в ресурсе Application Insights настроена выборка данных для сбора):
{
"preview": {
"sampling": {
"ingestionSamplingEnabled": false
}
}
}
Защита данных телеметрии
Маскирование запросов
Литеральные значения в Java Database Connectivity (JDBC) и в запросах MongoDB маскируются по умолчанию, чтобы избежать случайного захвата конфиденциальных данных.
Начиная с 3.4.0, это поведение можно отключить. Например:
Заголовки HTTP
Примечание.
Эта функция доступна начиная с Java агента версии 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.
Настройка конфигурации среды выполнения и окружения
В этом разделе:
- Аутентификация
- Прокси-сервер HTTP
- Интервал метрик
- Пульс
- Восстановление после сбоев приема
- Самостоятельное диагностика
- Корреляция данных телеметрии
Проверка подлинности
Примечание.
Функция проверки подлинности доступна в режиме общей доступности, начиная с агента Java версии 3.4.17.
Проверку подлинности можно использовать для настройки агента для создания учетных данных token, необходимых для проверки подлинности Microsoft Entra. Дополнительные сведения см. в статье Аутентификация Microsoft Entra в Application Insights.
Прокси-сервер HTTP
Если ваше приложение находится за брандмауэром и не может подключиться напрямую к Application Insights, обратитесь к доступу к конечным точкам Azure Monitor и настройке брандмауэра.
Чтобы обойти эту проблему, можно настроить Application Insights Java 3.x для использования прокси-сервера HTTP.
{
"proxy": {
"host": "myproxy",
"port": 8080
}
}
Вы также можете задать http-прокси с помощью переменной APPLICATIONINSIGHTS_PROXYсреды, которая принимает формат https://<host>:<port>. Затем он имеет приоритет над прокси-сервером, указанным в конфигурации JSON.
Вы можете указать пользователя и пароль для прокси-сервера с помощью переменной APPLICATIONINSIGHTS_PROXY среды: https://<user>:<password>@<host>:<port>
Application Insights Java 3.x также учитывает глобальные https.proxyHost и https.proxyPort системные свойства, если они заданы, и http.nonProxyHosts при необходимости.
Интервал в метриках
Примечание.
Эта функция доступна начиная с Java агента версии 3.0.3.
По умолчанию метрики фиксируются каждые 60 секунд. Этот интервал можно изменить:
{
"metricIntervalSeconds": 300
}
Начиная с агента Java версии 3.4.9 (GA), можно также задать metricIntervalSeconds с помощью переменной среды APPLICATIONINSIGHTS_METRIC_INTERVAL_SECONDS. Затем он имеет приоритет над metricIntervalSeconds указанным в конфигурации JSON.
Этот параметр применяется к следующим метрикам:
- Счетчики производительности по умолчанию: например, ЦП и память.
- Пользовательские метрики по умолчанию: например, время сборки мусора.
- Настроенные метрики JMX: см. раздел метрики JMX.
- Метрики микрометра: см. раздел "Автоколлектированные метрики микрометра".
Пульс
По умолчанию Application Insights Java 3.x отправляет метрику пульса каждые 15 минут. Если для активации оповещений используется метрика пульса, можно увеличить частоту этого пульса:
{
"heartbeat": {
"intervalSeconds": 60
}
}
Примечание.
Интервал не может превышать 15 минут, так как данные пульса также используются для отслеживания использования Application Insights.
Восстановление после сбоев приема
Примечание.
Эта функция доступна начиная с Java агента версии 3.3.0.
При сбое отправки телеметрии в службу Application Insights, Application Insights Java 3.x сохраняет телеметрию на диск и продолжает попытки отправки с диска.
Ограничение по умолчанию для сохранения данных на диске составляет 50 МБ. Если у вас есть высокий объем данных телеметрии или если вам нужно восстановиться после более длительного сбоя сети или сбоев в службах передачи данных, можно увеличить это ограничение.
{
"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.7.8.jar.
Начиная с версии 3.0.2 Java-агента, вы также можете настроить самодиагностику level с помощью переменной среды APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL. Затем он имеет приоритет над уровнем самодиагностики, указанным в конфигурации JSON.
Начиная с Java агента версии 3.0.3 можно также задать расположение файла самостоятельной диагностики с помощью переменной среды APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_FILE_PATH. Затем он имеет приоритет над путем к файлу самодиагностики, указанному в конфигурации JSON.
Корреляция данных телеметрии
Корреляция телеметрии включена по умолчанию, но ее можно отключить в конфигурации:
{
"preview": {
"disablePropagation": true
}
}
Расширенные и предварительные версии функций
Настраиваемое инструментирование (предварительная версия)
Примечание.
Эта функция доступна начиная с агента Java версии 3.3.1.
Вы можете записать диапазоны для метода в приложении:
{
"preview": {
"customInstrumentation": [
{
"className": "my.package.MyClass",
"methodName": "myMethod"
}
]
}
}
Предварительные инструментальные средства
Примечание.
Эта функция доступна начиная с Java агента версии 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 доступно начиная с Java агента версии 3.2.2.
Инструментирование библиотеки HTTP Vertx доступно начиная с Java агента версии 3.3.0.
Пример файла конфигурации
В этом примере показано, как выглядит файл конфигурации с несколькими компонентами. Настройте определенные параметры в зависимости от ваших потребностей.
{
"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
}
}
}