일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- MSSQL
- +9:00
- @EntityListeners
- spring boot
- mysql not equal null
- sendFractionalSeconds
- getDateCellValue
- apatch poi
- createEntityGraph
- 버전 문자열 비교
- load order
- deserializer
- fractional seconds
- NamedEntityGraph
- RootGraph
- getEntityGraph
- mysql =
- AuditingEntityListener
- 티스토리챌린지
- 오블완
- 1*1000
- mysql equal null
- MYSQL
- EmbeddedId
- @CreateDate
- Protecle
- https
- yml
- 운동해서 광명찾자
- pooled-lo
- Today
- Total
Hello
Azure Monitor Application Insights 구성 (with JAVA) 본문
현재 꽤 오래전에 구성한 applicationinsights-agent-3.0.0-PREVIEW.4.jar 를 사용하고 있었다.
어플리케이션 실행 될 때마다 agent 에러로그가 찍히는 현상을 다른 이슈를 확인 하다 발견하였는데, 에러는 agent 에서 의존하는 특정 클래스를 찾을 수 없다는 에러였다. 재밌는 것은 에러가 존재하지만 어플리케이션 실행에는 이슈는 없었다.
2020-08-21 09:59:07.169+09 INFO applicationinsights.diagnostics - Application Insights Codeless Agent Attach Successful
2020-08-21 09:59:08.497+09 ERROR i.o.auto.tooling.HelperInjector - Error preparing helpers while processing class org.springframework.core.io.ClassPathResource for ClassPathResourceInstrumentation. Failed to inject helper classes into instance org.springframework.boot.loader.LaunchedURLClassLoader@22d6cac2
java.lang.IllegalStateException: Error invoking java.lang.ClassLoader#defineClass
at net.bytebuddy.dynamic.loading.ClassInjector$UsingReflection$Dispatcher$Direct.defineClass(ClassInjector.java:607)
at net.bytebuddy.dynamic.loading.ClassInjector$UsingReflection.injectRaw(ClassInjector.java:234)
at io.opentelemetry.auto.tooling.HelperInjector.injectClassLoader(HelperInjector.java:184)
at io.opentelemetry.auto.tooling.HelperInjector.transform(HelperInjector.java:134)
.
.(중략)
Caused by: java.lang.NoClassDefFoundError: io/micrometer/core/instrument/step/StepMeterRegistry
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:757)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at net.bytebuddy.dynamic.loading.ClassInjector$UsingReflection$Dispatcher$Direct.defineClass(ClassInjector.java:603)
... 59 common frames omitted
Caused by: java.lang.ClassNotFoundException: io.micrometer.core.instrument.step.StepMeterRegistry
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:92)
at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
... 66 common frames omitted
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.6.RELEASE)
문제 확인 후 최신 버전을 보니 3.3.1 버전까지 업데이트 되어 있어 우리 구성도 업데이트 하면서 변경된 부분을 정리하고자 작성한다.
azure insight는 연결 문자열을 사용하는 두 가지 방법을 제공한다.
- 환경 변수를 설정할 수 있습니다.
- applicationinsights.json을 작성해 구성 파일을 사용할 수 있다.
applicationinsights-agent-3.3.1.jar과 동일한 디렉터리에 두어 사용합니다.
우리는 json으로 구성하는 방식을 사용하는 중인데, 구조가 거의 다 바뀌어 구성옵션 페이지를 확인하면서 변경해 주었다.
{
"connectionString": "your connectionString",
"role": {
"name": "role-name",
"instance": "role-name"
},
"instrumentation": {
"logging": {
"level": "INFO"
},
"micrometer": {
"enabled": false
}
},
"heartbeat": {
"intervalSeconds": 60
},
"jmxMetrics": [
{
"objectName": "java.lang:type=ClassLoading",
"attribute": "LoadedClassCount",
"name": "Loaded Class Count"
}
]
}
메트릭을 사용하기 위해서 개체 이름 및 특성을 알고 있어야하나, 해당 속성은 라이브러리, 프레임워크 및 애플리케이션 서버별로 다르고 제대로 문서화되지 않는 경우가 많습니다.
사용 가능한 메트릭을 보려면 applicationinsights.json 구성 파일에서 자가 진단 수준을 DEBUG로 설정합니다. 예를 들면 다음과 같습니다.
{
"selfDiagnostics": {
"level": "DEBUG"
}
}
처음 구성 할 때는 애플리케이션의 JVM 인수에 -javaagent:"path/to/applicationinsights-agent-3.3.1.jar" 추가해 jvm 실행 시 사용할 수 있도록 한다.
참조 : https://docs.microsoft.com/ko-kr/azure/azure-monitor/app/java-in-process-agent
https://docs.microsoft.com/ko-kr/azure/azure-monitor/app/java-standalone-config
'azure' 카테고리의 다른 글
[Azure] Microsoft Entra ID에 blob 권한 부여(storage blob data contributor와 contributor) (0) | 2024.03.19 |
---|---|
Azure Storage Blob sdk V8과 V12 (0) | 2023.10.17 |
Azure DevOps 에서 Azure App Service slot 배포하기 (0) | 2023.10.10 |
[Paas]Azure App Service 타임존 설정 (0) | 2022.07.21 |
Java Service Bus 사용 (0) | 2020.11.30 |