Я новичок в Azure App Insights. Я пытаюсь настроить его в своем приложении Spring Boot + Kotlin. Пока, после прочтения гайдов. Я добавил зависимость:
<!-- https://mvnrepository.com/artifact/com.microsoft.azure/applicationinsights-runtime-attach -->
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-runtime-attach</artifactId>
<version>3.4.9</version>
</dependency>
и в моем файле application.yaml
я добавил:
applicationinsights:
runtime-attach:
configuration:
classpath:
file: my_app_insights.json
Мой my_app_insights.json
(находится в src/main/resources
) содержит:
{
"connectionString":"A_VERY_LONG_CONNECTION_STRING",
"sampling":{
"requestsPerSecond":100
},
"instrumentation":{
"logging":{
"level":"INFO"
},
"jdbc":{
"masking":{
"enabled":true
}
}
}
}
И в моем основном классе Spring Boot я сделал это:
fun main(args: Array<String>) {
// Attach Azure Application Insights here.
ApplicationInsights.attach()
runApplication<MyDownloadApplication>(*args)
}
Но когда я запускаю свое весеннее загрузочное приложение обычным способом, используя mvn spring-boot:run...
Я получаю следующую ошибку:
2023-02-21 18:41:11.152+05:30 ERROR c.m.applicationinsights.agent -
*************************
Application Insights Java Agent 3.4.9 startup failed (PID 18436)
*************************
Description:
No connection string provided
Action:
Please provide connection string.
18:41:11.582 [Thread-0] DEBUG org.springframework.boot.devtools.restart.classloader.RestartClassLoader - Created RestartClassLoader org.springframework.boot.devtools.restart.classloader.RestartClassLoader@306e2a0a
Feb 21, 2023 6:41:11 PM com.microsoft.applicationinsights.attach.ApplicationInsights attach
WARNING: Application Insights is already attached. It is not attached a second time.
Не могли бы вы сказать мне, что я делаю неправильно здесь? Нужно ли добавлять какие-либо другие зависимости? Или это имя файла?
Любые указатели будут полезны.
applicationinsights.runtime-attach.configuration.classpath.file
свойство не может быть определено в application.properties
или application.yaml
. Вместо этого он должен быть определен с помощью -D
, например -Dapplicationinsights.runtime-attach.configuration.classpath.file=applicationinsights-dev.json
.
Другой вариант бесполезен -Dapplicationinsights.runtime-attach.configuration.classpath.file
. В этом случае Application Insights будет искать файл applicationinsights.json
в пути к классам (src/main/resources
, src/test/resources
).
Для JSON-файла Application Insights существуют и другие параметры конфигурации, которые приведены здесь.
Извинения. Я заставил его работать так, как вы упомянули. Спасибо за помощь. Это была проблема, потому что тег resources
моего файла pom не перетаскивал файлы json в путь к классам. Честно говоря, проблема как раз и заключалась в другом!
Вы должны добавить -Dspring-boot.run.jvmArguments с spring-boot:run
. Например, если у вас есть файл applicationinsights-dev.json
в вашем пути к классам (src/main/resources
, src/test/resources
), вы должны выполнить
mvn spring-boot:run -Dspring-boot.run.jvmArguments = "-Dapplicationinsights.runtime-attach.configuration.classpath.file=applicationinsights-dev.json"
К сожалению, я попробовал это, и я все еще получаю сообщение об ошибке. Я использовал
mvn spring-boot:run -Dspring-boot.run.arguments = "--spring.secret.key=XXXXXX --spring.user.password=XXXXX" -Dapplicationinsights.runtime-attach.configuration.classpath.file=applicationinsights.json