구성 옵션: Java용 Azure Monitor Application Insights
이 문서에서는 Java용 Azure Monitor Application Insights를 구성하는 방법을 보여 줍니다.
연결 문자열 및 역할 이름
시작하는 데 필요한 가장 일반적인 설정은 연결 문자열 및 역할 이름입니다.
{
"connectionString": "...",
"role": {
"name": "my cloud role name"
}
}
연결 문자열이 필요합니다. 다른 애플리케이션의 데이터를 동일한 Application Insights 리소스로 보낼 때마다 역할 이름이 중요합니다.
자세한 정보와 구성 옵션은 다음 섹션에서 제공됩니다.
구성 파일 경로
기본적으로 Application Insights Java 3.x는 구성 파일의 이름을 applicationinsights.json
으로 지정하고 applicationinsights-agent-3.5.4.jar
와 동일한 디렉터리에 위치하도록 합니다.
다음 두 가지 옵션 중 하나를 사용하여 고유한 구성 파일 경로를 지정할 수 있습니다.
APPLICATIONINSIGHTS_CONFIGURATION_FILE
환경 변수applicationinsights.configuration.file
Java 시스템 속성
상대 경로를 지정하면 applicationinsights-agent-3.5.4.jar
이 있는 디렉터리를 기준으로 확인됩니다.
또는 구성 파일을 사용하는 대신 환경 변수 APPLICATIONINSIGHTS_CONFIGURATION_CONTENT
를 통해 JSON 구성의 전체 콘텐츠를 지정할 수 있습니다.
Connection string
연결 문자열이 필요합니다. Application Insights 리소스에서 연결 문자열을 찾을 수 있습니다.
{
"connectionString": "..."
}
환경 변수 APPLICATIONINSIGHTS_CONNECTION_STRING
를 사용하여 연결 문자열을 설정할 수도 있습니다. 그러면 JSON 구성에 지정된 연결 문자열보다 우선합니다.
또는 Java 시스템 속성 applicationinsights.connection.string
을 사용하여 연결 문자열을 설정할 수 있습니다. 또한 JSON 구성에 지정된 연결 문자열보다 우선합니다.
연결 문자열을 로드할 파일을 지정하여 연결 문자열을 설정할 수도 있습니다.
상대 경로를 지정하면 applicationinsights-agent-3.5.4.jar
이 있는 디렉터리를 기준으로 확인됩니다.
{
"connectionString": "${file:connection-string-file.txt}"
}
파일에는 연결 문자열만 포함되어야 합니다.
연결 문자열을 설정하지 않으면 Java 에이전트가 사용되지 않습니다.
동일한 JVM(Java Virtual Machine)에 여러 애플리케이션이 배포되어 있고 서로 다른 연결 문자열로 원격 분석을 보내도록 하려면 연결 문자열 재정의(미리 보기)를 참조하세요.
클라우드 역할 이름
클라우드 역할 이름은 애플리케이션 맵의 구성 요소에 레이블을 적용하는 데 사용됩니다.
클라우드 역할 이름을 설정하려면 다음을 수행합니다.
{
"role": {
"name": "my cloud role name"
}
}
클라우드 역할 이름이 설정되지 않은 경우 Application Insights 리소스의 이름을 사용하여 애플리케이션 맵의 구성 요소에 레이블을 지정할 수 있습니다.
환경 변수 APPLICATIONINSIGHTS_ROLE_NAME
을 사용하여 클라우드 역할 이름을 설정할 수도 있습니다. 그러면 JSON 구성에 지정된 클라우드 역할 이름보다 우선합니다.
또는 Java 시스템 속성 applicationinsights.role.name
을 사용하여 클라우드 역할 이름을 설정할 수 있습니다. 또한 JSON 구성에 지정된 클라우드 역할 이름보다 우선합니다.
동일한 JVM에 배포된 애플리케이션이 여러 개 있고 다른 클라우드 역할 이름으로 원격 분석을 보내도록 하려면 클라우드 역할 이름 재정의(미리 보기)를 참조하세요.
클라우드 역할 인스턴스
클라우드 역할 인스턴스는 기본적으로 머신 이름으로 설정됩니다.
클라우드 역할 인스턴스를 머신 이름이 아닌 다른 항목으로 설정하려면 다음을 수행합니다.
{
"role": {
"name": "my cloud role name",
"instance": "my cloud role instance"
}
}
환경 변수 APPLICATIONINSIGHTS_ROLE_INSTANCE
를 사용하여 클라우드 역할 인스턴스를 설정할 수도 있습니다. 그러면 JSON 구성에 지정된 클라우드 역할 인스턴스보다 우선합니다.
또는 Java 시스템 속성 applicationinsights.role.instance
을 사용하여 클라우드 역할 인스턴스를 설정할 수 있습니다.
또한 JSON 구성에 지정된 클라우드 역할 인스턴스보다 우선합니다.
샘플링
참고 항목
샘플링은 Application Insights의 비용을 줄이는 좋은 방법이 될 수 있습니다. 샘플링 구성은 사용 사례에 맞게 적절하게 설정해야 합니다.
샘플링은 요청을 기준으로 합니다. 즉, 요청이 캡처(샘플링)되면 종속성, 로그 및 예외도 캡처됩니다.
또한 샘플링은 추적 ID를 기준으로 하므로 다양한 서비스에서 일관된 샘플링 결정을 내릴 수 있습니다.
샘플링은 요청 내부의 로그에만 적용됩니다. 요청 내부에 없는 로그(예: 시작 로그)는 기본적으로 항상 수집됩니다. 해당 로그를 샘플링하려면 샘플링 재정의를 사용할 수 있습니다.
속도 제한 샘플링
3.4.0부터 속도 제한 샘플링을 사용할 수 있으며 이제 기본값입니다.
샘플링이 구성되지 않은 경우 기본값은 해당 요청에 대한 모든 종속성 및 로그와 함께 이제 초당 최대(약) 5개의 요청을 캡처하도록 구성된 속도 제한 샘플링입니다.
이 구성은 모든 요청을 캡처하는 이전 기본값을 대체합니다. 여전히 모든 요청을 캡처하려면 고정 백분율 샘플링을 사용하고 샘플링 비율을 100으로 설정합니다.
참고 항목
속도 제한 샘플링은 근사치입니다. 내부적으로 각 원격 분석 레코드에서 정확한 항목 수를 내보내려면 시간이 지남에 따라 "고정" 샘플링 백분율을 조정해야 하기 때문입니다. 내부적으로 속도 제한 샘플링은 새 애플리케이션 로드에 빠르게 적응(0.1초)되도록 조정됩니다. 이러한 이유로 구성된 속도를 많이 또는 너무 오랫동안 초과하지 않아야 합니다.
이 예제에서는 초당 최대(대략) 1개 요청을 캡처하도록 샘플링을 설정하는 방법의 예를 보여 줍니다.
{
"sampling": {
"requestsPerSecond": 1.0
}
}
requestsPerSecond
는 소수일 수 있으므로 원하는 경우 초당 요청 1개 미만을 캡처하도록 구성할 수 있습니다. 예를 들어, 0.5
값은 2초마다 최대 1개의 요청을 캡처함을 의미합니다.
환경 변수 APPLICATIONINSIGHTS_SAMPLING_REQUESTS_PER_SECOND
를 사용하여 샘플링 비율을 설정할 수도 있습니다. 그러면 JSON 구성에 지정된 속도 제한보다 우선합니다.
고정 백분율 샘플링
이 예제에서는 모든 요청의 약 3분의 1을 캡처하도록 샘플링을 설정하는 방법의 예를 보여 줍니다.
{
"sampling": {
"percentage": 33.333
}
}
환경 변수 APPLICATIONINSIGHTS_SAMPLING_PERCENTAGE
를 사용하여 샘플링 비율을 설정할 수도 있습니다. 그러면 JSON 구성에 지정된 샘플링 비율보다 우선합니다.
참고 항목
샘플링 비율의 경우 100/N(여기서 N은 정수)에 가까운 백분율을 선택합니다. 현재 샘플링은 다른 값을 지원하지 않습니다.
샘플링 재정의
샘플링 재정의를 사용하면 기본 샘플링 백분율을 재정의할 수 있습니다. 이렇게 시작할 수 있는 작업의 예는 다음과 같습니다.
- 잡음 상태 검사에 대한 샘플링 백분율을 0이나 작은 값으로 설정합니다.
- 잡음 종속성 호출에 대한 샘플링 백분율을 0이나 작은 값으로 설정합니다.
- 중요한 요청 유형에 대한 샘플링 비율을 100으로 설정합니다. 예를 들어 기본 샘플링이 더 낮은 값으로 구성되어 있더라도
/login
을 사용할 수 있습니다.
자세한 내용은 샘플링 재정의 설명서를 참조하세요.
Java Management Extensions 메트릭
다른 JMX(Java Management Extensions) 메트릭을 수집하려는 경우:
{
"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 메트릭은 false의 경우 0
에, true의 경우 1
에 매핑됩니다.
자세한 내용은 JMX 메트릭 설명서를 참조하세요.
사용자 지정 차원
모든 원격 분석에 사용자 지정 차원을 추가하려면 다음을 수행합니다.
{
"customDimensions": {
"mytag": "my value",
"anothertag": "${ANOTHER_VALUE}"
}
}
${...}
를 사용하여 시작 시 지정된 환경 변수에서 값을 읽을 수 있습니다.
참고 항목
버전 3.0.2부터 service.version
이라는 사용자 지정 차원을 추가하는 경우 값은 사용자 지정 차원이 아닌 Application Insights Logs 테이블의 application_Version
열에 저장됩니다.
상속된 특성(미리 보기)
버전 3.2.0부터 요청 원격 분석에서 프로그래밍 방식으로 사용자 지정 차원을 설정할 수 있습니다. 종속성 및 로그 원격 분석을 통해 상속을 보장합니다. 모두 해당 요청의 컨텍스트에서 캡처됩니다.
{
"preview": {
"inheritedAttributes": [
{
"key": "mycustomer",
"type": "string"
}
]
}
}
그런 다음, 각 요청이 시작될 때 다음을 호출합니다.
Span.current().setAttribute("mycustomer", "xyz");
범위에 사용자 지정 속성 추가도 참조하세요.
연결 문자열 재정의(미리 보기)
이 기능은 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"
}
]
}
}
런타임에 구성된 연결 문자열
버전 3.4.8부터 런타임에 연결 문자열을 구성하는 기능이 필요한 경우 json 구성에 이 속성을 추가합니다.
{
"connectionStringConfiguredAtRuntime": true
}
애플리케이션에 applicationinsights-core
을 추가합니다.
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-core</artifactId>
<version>3.5.4</version>
</dependency>
클래스 com.microsoft.applicationinsights.connectionstring.ConnectionString
의 정적 configure(String)
메서드를 사용합니다.
참고 항목
연결 문자열을 구성하기 전에 캡처된 모든 원격 분석은 삭제되므로 애플리케이션 시작 시 가능한 한 빨리 구성하는 것이 가장 좋습니다.
InProc 종속성 자동 수집(미리 보기)
버전 3.2.0부터 컨트롤러 "InProc" 종속성을 캡처하려면 다음 구성을 사용합니다.
{
"preview": {
"captureControllerSpans": true
}
}
브라우저 SDK 로더(미리 보기)
이 기능은 적절한 연결 문자열 구성을 포함하여 애플리케이션의 HTML 페이지에 브라우저 SDK 로더를 자동으로 삽입합니다.
예를 들어, 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 Portal로 다시 보냅니다. 자세한 내용은 ApplicationInsights-JS에서 확인할 수 있습니다.
이 기능을 사용하도록 설정하려면 아래 구성 옵션을 추가합니다.
{
"preview": {
"browserSdkLoader": {
"enabled": true
}
}
}
원격 분석 프로세서(미리 보기)
원격 분석 프로세서를 사용하여 요청, 종속성 및 추적 원격 분석에 적용되는 규칙을 구성할 수 있습니다. 이렇게 시작할 수 있는 작업의 예는 다음과 같습니다.
- 중요한 데이터를 마스크합니다.
- 조건부로 사용자 지정 차원을 추가합니다.
- Azure Portal에서 유사한 원격 분석을 집계하는 데 사용되는 범위 이름을 업데이트합니다.
- 수집 비용을 제어하기 위해 특정 범위 특성을 삭제합니다.
자세한 내용은 원격 분석 프로세서 설명서를 확인하세요.
참고 항목
수집 비용을 제어하기 위해 특정(전체) 범위를 삭제하려는 경우 샘플링 재정의를 참조하세요.
사용자 지정 계측(미리 보기)
버전 3.3.1부터 애플리케이션의 메서드에 대한 범위를 캡처할 수 있습니다.
{
"preview": {
"customInstrumentation": [
{
"className": "my.package.MyClass",
"methodName": "myMethod"
}
]
}
}
로컬로 수집 샘플링 사용하지 않도록 설정(미리 보기)
기본적으로 Java 에이전트의 유효 샘플링 비율이 100%이고 Application Insights 리소스에 수집 샘플링이 구성된 경우 수집 샘플링 비율이 적용됩니다.
이러한 동작은 100%의 고정 비율 샘플링과 요청 비율이 속도 제한을 초과하지 않는 속도 제한 샘플링(지속적으로 슬라이딩하는 기간 동안 100%를 효과적으로 캡처)에도 적용됩니다.
3.5.3부터 이 동작을 사용하지 않도록 설정할 수 있으며, Application Insights 리소스에서 수집 샘플링이 구성된 경우에도 이러한 경우 원격 분석의 100%를 유지할 수 있습니다.
{
"preview": {
"sampling": {
"ingestionSamplingEnabled": false
}
}
}
자동 수집된 로깅
Log4j, Logback, JBoss Logging 및 java.util.logging은 자동 계측됩니다. 이러한 로깅 프레임워크를 통해 수행된 로깅은 자동 수집됩니다.
로깅은 다음과 같은 경우에만 캡처됩니다.
- 로깅 프레임워크에 대해 구성된 수준을 충족합니다.
- Application Insights에 대해 구성된 수준도 충족합니다.
예를 들어, 로깅 프레임워크가 패키지 com.example
에서 WARN
을 기록하도록 구성되고(또한 앞서 설명한 대로 구성) Application Insights가 INFO
을 캡처하도록 구성된 경우(또한 설명한 대로 구성) Application Insights는 패키지 com.example
에서 WARN
(및 더 심각함)만 캡처합니다.
Application Insights에 대해 구성된 기본 수준은 INFO
입니다. 이 수준을 변경하려면 다음을 수행합니다.
{
"instrumentation": {
"logging": {
"level": "WARN"
}
}
}
환경 변수 APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVEL
을 사용하여 수준을 설정할 수도 있습니다. 그러면 JSON 구성에 지정된 수준보다 우선합니다.
이러한 유효한 level
값을 사용하여 applicationinsights.json
파일에 지정할 수 있습니다. 이 표에서는 서로 다른 로깅 프레임워크의 로깅 수준과 어떻게 관련되어 있는지 보여 줍니다.
수준 | Log4j | Logback | JBoss | JUL |
---|---|---|---|---|
OFF | OFF | OFF | OFF | OFF |
FATAL | FATAL | 오류 | FATAL | SEVERE |
ERROR(또는 SEVERE) | 오류 | 오류 | 오류 | SEVERE |
WARN(또는 WARNING) | WARN | WARN | WARN | WARNING |
INFO | INFO | INFO | INFO | INFO |
CONFIG | DEBUG | DEBUG | DEBUG | CONFIG |
DEBUG(또는 FINE) | DEBUG | DEBUG | DEBUG | FINE |
FINER | DEBUG | DEBUG | DEBUG | FINER |
TRACE(또는 FINEST) | TRACE | TRACE | TRACE | FINEST |
ALL | ALL | ALL | ALL | ALL |
참고 항목
예외 개체가 로거에 전달되면 로그 메시지(및 예외 개체 세부 정보)는 Azure Portal에서 traces
테이블 대신 exceptions
테이블에 표시됩니다. 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부터 Logback에 대해 FileName
, ClassName
, MethodName
및 LineNumber
를 캡처할 수 있습니다.
{
"preview": {
"captureLogbackCodeAttributes": true
}
}
Warning
코드 특성을 캡처하면 성능 오버헤드가 추가될 수 있습니다.
사용자 지정 차원으로의 로깅 수준
버전 3.3.0부터 LoggingLevel
은 기본적으로 Trace의 사용자 지정 차원의 일부로 캡처되지 않습니다. 해당 데이터가 SeverityLevel
필드에서 이미 캡처되어 있기 때문입니다.
필요한 경우 일시적으로 이전 동작을 다시 사용하도록 설정할 수 있습니다.
{
"preview": {
"captureLoggingLevelAsCustomDimension": true
}
}
자동 수집된 마이크로미터 메트릭(Spring Boot Actuator 메트릭 포함)
애플리케이션에서 마이크로미터를 사용하는 경우 마이크로미터 글로벌 레지스트리로 전송되는 메트릭은 자동으로 수집됩니다.
또한 애플리케이션에서 Spring Boot Actuator를 사용하는 경우 Spring Boot Actuator로 구성된 메트릭도 자동으로 수집됩니다.
마이크로미터를 사용하여 사용자 지정 메트릭을 보내려면 다음을 수행합니다.
다음 예에 표시된 대로 애플리케이션에 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();
메트릭은
customDimensions
열에 캡처된 태그와 함께 customMetrics 테이블로 수집됩니다. 메트릭 탐색기의Log-based metrics
메트릭 네임스페이스 아래에서 메트릭을 볼 수도 있습니다.참고 항목
Application Insights Java는 마이크로미터 메트릭 이름에 있는 모든 영숫자가 아닌 문자(대시 제외)를 밑줄로 바꿉니다. 따라서 이전
test.counter
메트릭이test_counter
로 표시됩니다.
자동 수집된 마이크로미터 메트릭 및 Spring Boot Actuator 메트릭을 사용하지 않도록 설정하려면 다음을 수행합니다.
참고 항목
사용자 지정 메트릭은 별도로 청구되며 추가 비용이 발생할 수 있습니다. 가격 정보를 확인하세요. 마이크로미터 및 Spring Boot Actuator 메트릭을 사용하지 않도록 설정하려면 구성 파일에 다음 구성을 추가합니다.
{
"instrumentation": {
"micrometer": {
"enabled": false
}
}
}
Java Database Connectivity 쿼리 마스킹
JDBC(Java Database Connectivity) 쿼리의 리터럴 값은 중요한 데이터를 실수로 캡처하지 않도록 기본적으로 마스킹됩니다.
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 서버 4xx 응답 코드
기본적으로 4xx 응답 코드를 생성하는 HTTP 서버 요청은 오류로 캡처됩니다.
버전 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
},
"logging": {
"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_LOGGING_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부터 사용할 수 있습니다. Vertx HTTP Library 계측은 버전 3.3.0부터 사용할 수 있습니다.
메트릭 간격
기본적으로 메트릭은 60초마다 캡처됩니다.
버전 3.0.3부터 이 간격을 변경할 수 있습니다.
{
"metricIntervalSeconds": 300
}
3.4.9 GA에서 시작하여 APPLICATIONINSIGHTS_METRIC_INTERVAL_SECONDS
환경 변수를 사용하여 metricIntervalSeconds
를 설정할 수도 있습니다. 그러면 JSON 구성에 지정된 metricIntervalSeconds
보다 우선합니다.
이 설정은 다음 메트릭에 적용됩니다.
- 기본 성능 카운터: 예: CPU 및 메모리
- 기본 사용자 지정 메트릭: 예: 가비지 수집 타이밍
- 구성된 JMX 메트릭: JMX 메트릭 섹션을 참조하세요.
- 마이크로미터 메트릭: 자동 수집된 마이크로미터 메트릭 섹션을 참조하세요.
하트비트
기본적으로 Application Insights Java 3.x는 15분마다 한 번씩 하트비트 메트릭을 보냅니다. 하트비트 메트릭을 사용하여 경고를 트리거하는 경우 이 하트비트의 빈도를 늘릴 수 있습니다.
{
"heartbeat": {
"intervalSeconds": 60
}
}
참고 항목
하트비트 데이터가 Application Insights 사용을 추적하는 데에도 사용되므로 간격을 15분보다 길게 늘릴 수 없습니다.
인증
참고 항목
인증 기능은 버전 3.4.17부터 GA입니다.
인증을 사용하여 Microsoft Entra 인증에 필요한 토큰 자격 증명을 생성하도록 에이전트를 구성할 수 있습니다. 자세한 내용은 인증 설명서를 참조하세요.
HTTP 프록시
애플리케이션이 방화벽 뒤에 있고 Application Insights에 직접 연결할 수 없는 경우 Application Insights에서 사용하는 IP 주소를 참조하세요.
이 문제를 해결하려면 HTTP 프록시를 사용하도록 Application Insights Java 3.x를 구성하면 됩니다.
{
"proxy": {
"host": "myproxy",
"port": 8080
}
}
https://<host>:<port>
형식을 사용하는 APPLICATIONINSIGHTS_PROXY
환경 변수를 사용하여 http 프록시를 설정할 수도 있습니다. 그러면 JSON 구성에 지정된 프록시보다 우선합니다.
APPLICATIONINSIGHTS_PROXY
환경 변수: https://<user>:<password>@<host>:<port>
를 사용하여 프록시에 대한 사용자 및 암호를 제공할 수 있습니다.
Application Insights Java 3.x는 설정된 경우 전역 https.proxyHost
및 https.proxyPort
시스템 속성 http.nonProxyHosts
도(필요한 경우) 적용합니다.
수집 실패에서 복구
Application Insights 서비스에 원격 분석을 보내는 데 실패하면 Application Insights Java 3.x는 원격 분석을 디스크에 저장하고 디스크에서 계속 다시 시도합니다.
디스크 지속성에 대한 기본 제한은 50Mb입니다. 원격 분석 볼륨이 높거나 더 긴 네트워크 또는 수집 서비스 중단에서 복구할 수 있어야 하는 경우 버전 3.3.0부터 이 제한을 늘릴 수 있습니다.
{
"preview": {
"diskPersistenceMaxSizeMb": 50
}
}
자체 진단
“자체 진단”은 Application Insights Java 3.x의 내부 로깅을 참조합니다. 이 기능은 Application Insights 자체의 문제를 발견하고 진단하는 데 유용할 수 있습니다.
기본적으로 Application Insights Java 3.x는 다음 구성에 해당하는 applicationinsights.log
파일과 콘솔 모두에 대해 INFO
수준으로 로그를 기록합니다.
{
"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.4.jar
이 있는 디렉터리를 기준으로 확인됩니다.
버전 3.0.2부터 환경 변수 APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_LEVEL
을 사용하여 자가 진단 level
을 설정할 수도 있습니다. 그러면 JSON 구성에 지정된 자체 진단 수준보다 우선합니다.
버전 3.0.3부터 환경 변수 APPLICATIONINSIGHTS_SELF_DIAGNOSTICS_FILE_PATH
를 사용하여 자가 진단 파일 위치를 설정할 수도 있습니다. 그러면 JSON 구성에 지정된 자체 진단 파일 경로보다 우선합니다.
원격 분석 상관 관계
원격 분석 상관 관계는 기본적으로 사용하도록 설정되어 있지만 구성에서 사용하지 않도록 설정할 수 있습니다.
{
"preview": {
"disablePropagation": true
}
}
예제
이 예제에서는 여러 구성 요소가 있는 구성 파일이 어떻게 표시되는지를 보여 줍니다. 요구 사항에 따라 특정 옵션을 구성하세요.
{
"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
}
}
}