OpenTelemetry Java Instrumentation
실행
opentelemetry-javaagent를 실행하기 위해서는 JVM 옵션 설정이 필요합니다.
다음은 설정 가능한 옵션들에 대한 예시입니다.
-javaagent:/agent-home/opentelemetry-javaagent.jar
-Dotel.resource.attributes=service.name=myBusiness,service.instance.id=myInstance,provider.type=was -Dotel.javaagent.debug=false -Dotel.exporter.otlp.endpoint=http://localhost:4317 -Dotel.exporter.otlp.metrics.temporality.preference=DELTA -Dotel.metric.export.interval=10000 -Dotel.instrumentation.methods.tmax.include=/agent-home/extend-bci.json -Dio.opentelemetry.javaagent.slf4j.simpleLogger.logFile=/agent-home/agent.log
옵션 | 설명 |
---|---|
javaagent (필수) |
로드할 에이전트 파일(opentelemetry-javaagent.jar)의 경로입니다. |
otel.resource.attributes (필수) |
데이터를 수집하는 opentelemetry-javaagent의 리소스 관련 변수입니다.
|
otel.javaagent.debug |
디버깅 허용 여부입니다.
|
io.opentelemetry.javaagent.slf4j.simpleLogger.logFile (필수) |
opentelemetry-javaagent 로그 파일의 경로입니다. |
otel.exporter.otlp.endpoint (필수) |
opentelemetry-javaagent로 수집한 데이터들을 모니터링 마스터로 보내기 위해 사용할 otelcol의 주소입니다. |
otel.exporter.otlp.metrics.temporality.preference |
기본 출력 집계 시간 옵션입니다. (현재 'DELTA’로 고정) |
otel.metric.export.interval (필수) |
메트릭 전송 주기입니다. (단위: ms, 기본값: 60000, 권장값: 10000) |
otel.bsp.schedule.delay |
트레이스 전송 주기입니다. (단위: ms, 기본값: 5000) |
otel.instrumentation.methods.tmax.include |
Extend BCI에 필요한 설정 파일의 경로입니다. 모니터링에서 기본적으로 수집하고 있는 데이터 외에 추가로 BCI를 이용하여 수집하는 데이터가 있을 경우에 설정합니다. [참고] Extend BCI 설정 파일의 작성 방법에 대한 자세한 설명은 Extend BCI 설정 파일을 참고합니다. |
Extend BCI 설정 파일
Extend BCI 설정 파일은 다음과 같은 규칙에 따라 작성합니다.
-
설정 파일은 항상 JSON 형식으로 작성
-
'clazz’는 클래스의 패키지명을 포함한 클래스명을 작성
-
'methodName’은 수집하고자 하는 메소드명을 작성
-
'methodSignature’는 'methodName’에 작성한 메소드의 시그니처를 작성
-
반환값의 키는 무조건 rtn으로 고정 (변경 불가능)
-
현재 call은 항상 toString으로 고정
Extend BCI 설정 파일 작성 시 다음 사항에 유의합니다.
|
다음은 Java 코드와 Extend BCI 설정 파일의 예시입니다.
-
Java 코드
package com.tmax.monitoring.example; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Servicepublic class SampleService { @Autowired private SampleRepository repository; public String sampleGet(String hello, int i) { String s = "helloService" + hello + String.valueOf(i); repository.findAll(); return s; } public String sampleInsert() { return "insert"; } }
-
Extend BCI 설정 파일
{ "required": true, "target": [ { "clazz": "com.tmax.monitoring.example.SampleService", "methods": [ { "methodName": "sampleGet", "methodSignature": "(java.lang.String,int)", "params": [ { "key": "string.hello", "call": "toString", "required": true }, { "key": "int.hello", "call": "toString", "required": true } ], "rtn": { "key": "rtn" } } ] } ] }