

# Java Management Extensions(JMX) 지표 수집
<a name="CloudWatch-Agent-JMX-metrics"></a>

CloudWatch 에이전트를 사용하여 Java 애플리케이션에서 Java Management Extensions(JMX) 지표를 수집할 수 있습니다.

CloudWatch 에이전트는 다음과 같은 버전에서 이러한 지표 수집을 지원합니다.
+ JVM 8 이상
+ Kafka 0.8.2.x 이상
+ Tomcat 9, 10.1 및 11(베타)

------
#### [ Amazon EC2 ]

**JVM 인스턴스에서 JMX를 활성화하려면 다음을 수행합니다.**  
CloudWatch 에이전트가 JMX 지표를 수집할 수 있도록 하려면 애플리케이션의 JVM이 `com.sun.management.jmxremote.port` 시스템 속성을 사용하여 포트에 바인딩되어야 합니다.

```
java -Dcom.sun.management.jmxremote.port={{port-number}} -jar {{example.jar}}
```

자세한 내용 및 기타 구성은 [JMX Exporter 설명서](https://docs.oracle.com/en/java/javase/17/management/monitoring-and-management-using-jmx-technology.html)를 참조하세요.

------
#### [ Amazon EKS ]

**Java 애플리케이션 포드에서 JMX를 활성화하려면 다음을 수행합니다.**  
CloudWatch Observability EKS 추가 기능을 사용할 경우, 주석을 사용하여 JMX 지표를 활성화하는 방법을 관리할 수 있습니다. 자세한 내용은 [Amazon CloudWatch Observability EKS 추가 기능 또는 헬름 차트를 사용하여 CloudWatch 에이전트 설치](install-CloudWatch-Observability-EKS-addon.md) 섹션을 참조하세요. 워크로드에서 JMX 지표 수집을 활성화하려면 `PodTemplate` 섹션 아래의 워크로드 매니페스트 파일에 다음과 같은 주석을 추가합니다.
+ `instrumentation.opentelemetry.io/inject-java: "true"`
+ 다음 중 한 개 이상을 수행할 수 있습니다.
  + JVM 지표의 경우: `cloudwatch.aws.amazon.com/inject-jmx-jvm: "true"`
  + Kafka 브로커 지표의 경우: `cloudwatch.aws.amazon.com/inject-jmx-kafka: "true"`
  + Kafka 소비자 지표의 경우: `cloudwatch.aws.amazon.com/inject-jmx-kafka-consumer: "true"`
  + Kafka 생산자 지표의 경우: `cloudwatch.aws.amazon.com/inject-jmx-kafka-producer: "true"`
  + Tomcat 지표의 경우: `cloudwatch.aws.amazon.com/inject-jmx-tomcat: "true"`

------

JMX 지표를 수집하려면 CloudWatch 에이전트 구성 파일의 `metrics_collected` 섹션에 `jmx` 섹션을 추가합니다. `jmx` 섹션에는 다음 필드가 포함될 수 있습니다.
+ `jvm` – 선택 사항입니다. 인스턴스에서 Java Virtual Machine(JVM) 지표를 검색하도록 지정합니다. 자세한 내용은 [JVM 지표 수집](#CloudWatch-Agent-JVM-metrics) 섹션을 참조하세요.

  이 섹션은 다음 필드를 포함할 수 있습니다.
  + `measurement` – 수집할 JVM 지표의 배열을 지정합니다. 여기에서 사용할 수 있는 값 목록은 [JVM 지표 수집](#CloudWatch-Agent-JVM-metrics)의 테이블에서 **지표(Metric)** 열을 참조하세요.

    각 개별 지표의 항목 내에서 다음 중 하나 또는 둘 다를 선택적으로 지정할 수 있습니다.
    + `rename` – 이 지표에 대해 다른 이름을 지정합니다.
    + `unit` – 이 지표에 사용할 단위를 지정하여 지표의 기본 단위를 재정의합니다. 지정하는 단위는 [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html)의 `Unit` 설명에 나열된 대로 유효한 CloudWatch 지표 단위여야 합니다.
+ `kafka` – 선택 사항입니다. 인스턴스에서 Apache Kafka 브로커 지표를 검색하도록 지정합니다. 자세한 내용은 [Kafka 지표 수집](#CloudWatch-Agent-Kafka-metrics) 섹션을 참조하세요.

  이 섹션은 다음 필드를 포함할 수 있습니다.
  + `measurement` – 수집할 Kafka 브로커 지표의 배열을 지정합니다. 여기에서 사용할 수 있는 값 목록은 [Kafka 지표 수집](#CloudWatch-Agent-Kafka-metrics)의 첫 번째 테이블에서 **지표** 열을 참조하세요.

    각 개별 지표의 항목 내에서 다음 중 하나 또는 둘 다를 선택적으로 지정할 수 있습니다.
    + `rename` – 이 지표에 대해 다른 이름을 지정합니다.
    + `unit` – 이 지표에 사용할 단위를 지정하여 지표의 기본 단위를 재정의합니다. 지정하는 단위는 [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html)의 `Unit` 설명에 나열된 대로 유효한 CloudWatch 지표 단위여야 합니다.
+ `kafka-consumer` – 선택 사항입니다. 인스턴스에서 Apache Kafka 소비자 지표를 검색하도록 지정합니다. 자세한 내용은 [Kafka 지표 수집](#CloudWatch-Agent-Kafka-metrics) 섹션을 참조하세요.

  이 섹션은 다음 필드를 포함할 수 있습니다.
  + `measurement` – 수집할 Kafka 브로커 지표의 배열을 지정합니다. 여기에서 사용할 수 있는 값 목록은 [Kafka 지표 수집](#CloudWatch-Agent-Kafka-metrics)의 두 번째 지표 테이블에서 **지표** 열을 참조하세요.

    각 개별 지표의 항목 내에서 다음 중 하나 또는 둘 다를 선택적으로 지정할 수 있습니다.
    + `rename` – 이 지표에 대해 다른 이름을 지정합니다.
    + `unit` – 이 지표에 사용할 단위를 지정하여 지표의 기본 단위를 재정의합니다. 지정하는 단위는 [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html)의 `Unit` 설명에 나열된 대로 유효한 CloudWatch 지표 단위여야 합니다.
+ `kafka-producer` – 선택 사항입니다. 인스턴스에서 Apache Kafka 생산자 지표를 검색하도록 지정합니다. 자세한 내용은 [Kafka 지표 수집](#CloudWatch-Agent-Kafka-metrics) 섹션을 참조하세요.

  이 섹션은 다음 필드를 포함할 수 있습니다.
  + `measurement` – 수집할 Kafka 브로커 지표의 배열을 지정합니다. 여기에서 사용할 수 있는 값 목록은 [Kafka 지표 수집](#CloudWatch-Agent-Kafka-metrics)의 세 번째 지표 테이블에서 **지표** 열을 참조하세요.

    각 개별 지표의 항목 내에서 다음 중 하나 또는 둘 다를 선택적으로 지정할 수 있습니다.
    + `rename` – 이 지표에 대해 다른 이름을 지정합니다.
    + `unit` – 이 지표에 사용할 단위를 지정하여 지표의 기본 단위를 재정의합니다. 지정하는 단위는 [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html)의 `Unit` 설명에 나열된 대로 유효한 CloudWatch 지표 단위여야 합니다.
+ `tomcat` – 선택 사항입니다. 인스턴스에서 Tomcat 지표를 검색하도록 지정합니다. 자세한 내용은 [Tomcat 지표 수집](#CloudWatch-Agent-Tomcat-metrics) 섹션을 참조하세요.

  이 섹션은 다음 필드를 포함할 수 있습니다.
  + `measurement` – 수집할 Tomcat 지표의 배열을 지정합니다. 여기에서 사용할 수 있는 값 목록은 [Tomcat 지표 수집](#CloudWatch-Agent-Tomcat-metrics)의 테이블에서 **지표(Metric)** 열을 참조하세요.

    각 개별 지표의 항목 내에서 다음 중 하나 또는 둘 다를 선택적으로 지정할 수 있습니다.
    + `rename` – 이 지표에 대해 다른 이름을 지정합니다.
    + `unit` – 이 지표에 사용할 단위를 지정하여 지표의 기본 단위를 재정의합니다. 지정하는 단위는 [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html)의 `Unit` 설명에 나열된 대로 유효한 CloudWatch 지표 단위여야 합니다.

`jmx` 섹션에는 다음과 같은 선택적 `append_dimensions` 필드도 포함될 수 있습니다.
+ `append_dimensions` – 선택 사항입니다. 프로세스 지표에만 사용할 수 있는 추가 측정기준입니다. 이 필드를 지정하면 에이전트에 의해 수집되는 모든 유형의 지표에 대해 사용되는 `append_dimensions` 필드에 지정되어 있는 측정기준 외에 이 측정기준도 사용됩니다.

**아래의 필드는 Amazon EC2에만 해당됩니다.**
+ `endpoint` - JMX 클라이언트가 연결할 주소입니다. 형식은 `ip:port`입니다. 엔드포인트가 localhost가 아닌 경우, 암호 인증 및 SSL을 활성화해야 합니다.
+ `metrics_collection_interval` – 선택 사항입니다. 프로세스 지표를 수집하여 구성 파일의 `agent` 섹션에 지정되어 있는 글로벌 `metrics_collection_interval` 값을 재정의할 빈도를 지정합니다.

  이 값은 초 단위로 지정됩니다. 예를 들어, 10을 지정하면 10초마다 지표가 수집되도록 설정되며, 300으로 설정하면 5분마다 지표가 수집되도록 지정됩니다.

  이 값을 60초 미만으로 설정하면 각 지표가 고분해능 지표로 수집됩니다. 자세한 내용은 [고분해능 지표](publishingMetrics.md#high-resolution-metrics) 섹션을 참조하세요.

JMX가 원격 액세스를 위해 암호 인증 또는 SSL로 활성화된 경우, 아래의 필드를 사용할 수 있습니다.
+ `password_file` – 선택 사항입니다. 암호에 대한 키의 Java 속성 파일을 지정합니다. 파일은 읽기 전용이어야 하며, CloudWatch 에이전트를 실행하는 사용자 대상으로만 제한해야 합니다. 암호 인증이 활성화된 경우, `com.sun.management.jmxremote.password.file` 속성에 제공된 JMX 암호 파일의 항목과 동일한 사용자 이름과 암호 페어가 필요합니다. SSL이 활성화된 경우, `keystore` 및 `truststore`에 대한 항목이 필요하며 이는 각각 `javax.net.ssl.trustStorePassword` 및 `javax.net.ssl.keyStorePassword`에 해당합니다.
+ `username` - 암호 인증이 활성화된 경우, 제공된 암호 파일에서 사용자 이름과 일치하는 사용자 이름을 지정합니다.
+ `keystore_path` – SSL이 활성화된 경우, 프라이빗 키와 퍼블릭 키의 인증서로 구성된 Java 키 스토어의 전체 경로를 지정합니다. `javax.net.ssl.keyStore` 속성에 해당합니다.
+ `keystore_type` – SSL이 활성화된 경우, 사용 중인 키스토어 유형을 지정합니다. `javax.net.ssl.keyStoreType` 속성에 해당합니다.
+ `truststore_path` – SSL이 활성화된 경우, 원격 JMX 서버의 퍼블릭 인증서를 포함해야 하는 Java 트러스트 스토어의 전체 경로를 지정합니다. `javax.net.ssl.trustStore` 속성에 해당합니다.
+ `truststore_type` - SSL이 활성화된 경우, 사용 중인 트러스트 스토어 유형을 지정합니다. `javax.net.ssl.trustStoreType` 속성에 해당합니다.
+ `remote_profile` – 선택 사항입니다. 지원되는 JMX 원격 프로필은 SASL 프로필 `SASL/PLAIN`, `SASL/DIGEST-MD5`, `SASL/CRAM-MD5`와 조합된 TLS입니다. `SASL/PLAIN`, `SASL/DIGEST-MD5`, `SASL/CRAM-MD5`, `TLS SASL/PLAIN`, `TLS SASL/DIGEST-MD5`, `TLS SASL/CRAM-MD5` 중 하나여야 합니다.
+ `realm` – 선택 사항입니다. 원격 프로필 `SASL/DIGEST-MD5`에 필요한 영역입니다.
+ `registry_ssl_enabled` – RMI 레지스트리 인증이 활성화된 경우입니다. JVM이 `com.sun.management.jmxremote.registry.ssl=true`로 구성된 경우 true로 설정합니다.
+ `insecure` – 에이전트가 비로컬 호스트 엔드포인트에 대해 구성된 경우, 필요한 검증을 옵트아웃하려면 `true`로 설정합니다.

다음은 CloudWatch 에이전트 구성 파일의 `jmx` 섹션의 예입니다.

```
{
  "metrics": {
    "metrics_collected": {
      "jmx": [
        {
          "endpoint": "remotehost:1314",
          "jvm": {
            "measurement": [
              "jvm.memory.heap.init",
              "jvm.memory.nonheap.used"
            ]
          },
          "kafka": {
            "measurement": [
              "kafka.request.count",
              {
                "name": "kafka.message.count",
                "rename": "KAFKA_MESSAGE_COUNT",
                "unit": "Count"
              }
            ]
          },
          "username": "cwagent",
          "keystore_path": "/path/to/keystore",
          "keystore_type": "PKCS12",
          "truststore_path": "/path/to/truststore",
          "truststore_type": "PKCS12"
        },
        {
          "endpoint": "localhost:1315",
          "kafka-producer": {
            "measurement": [
              "kafka.producer.request-rate"
            ]
          },
          "append_dimensions": {
            "service.name": "kafka/1"
          }
        }
      ]
    }
  }
}
```

## JVM 지표 수집
<a name="CloudWatch-Agent-JVM-metrics"></a>

CloudWatch 에이전트를 사용하여 Java Virtual Machine(JVM) 지표를 수집할 수 있습니다. 이를 설정하려면 CloudWatch 에이전트 구성 파일의 `jmx` 섹션에 `jvm` 섹션을 추가합니다.

다음 지표를 수집할 수 있습니다.


| 지표 | 측정 기준 | 설명 | 
| --- | --- | --- | 
| `jvm.classes.loaded` | [DEFAULT] | 로드된 클래스의 총 개수.<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균 | 
| `jvm.gc.collections.count` | [DEFAULT], `name`  | 폐영역 회수가 발생한 총 횟수.<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균 | 
| `jvm.gc.collections.elapsed` | [DEFAULT], `name`  | 누적된 대략적인 폐영역 회수 경과 시간.<br />**단위:** 밀리초<br />**유용한 통계:** 최소, 최대, 평균 | 
| `jvm.memory.heap.init` | [DEFAULT] | JVM이 힙에 사용되는 운영 체제에서 요청하는 초기 메모리 양.<br />**단위:** 바이트<br />**유용한 통계:** 최소, 최대, 평균 | 
| `jvm.memory.heap.max` | [DEFAULT] | 힙에 사용할 수 있는 최대 메모리 양.<br />**단위:** 바이트<br />**유용한 통계:** 최대 | 
| `jvm.memory.heap.used` | [DEFAULT] | 현재 힙 메모리 사용량.<br />**단위:** 바이트<br />**유용한 통계:** 최소, 최대, 평균 | 
| `jvm.memory.heap.committed` | [DEFAULT] | 힙에 사용할 수 있도록 보장되는 메모리의 양.<br />**단위:** 바이트<br />**유용한 통계:** 최소, 최대, 평균 | 
| `jvm.memory.nonheap.init` | [DEFAULT] | JVM이 힙 이외의 용도로 사용되는 운영 체제에서 요청하는 초기 메모리 양.<br />**단위:** 바이트<br />**유용한 통계:** 최소, 최대, 평균 | 
| `jvm.memory.nonheap.max` | [DEFAULT] | 힙 이외의 용도로 사용할 수 있는 최대 메모리 양.<br />**단위:** 바이트<br />**유용한 통계:** 최대 | 
| `jvm.memory.nonheap.used` | [DEFAULT] | 현재 힙 이외의 메모리 사용량.<br />**단위:** 바이트<br />**유용한 통계:** 최소, 최대, 평균 | 
| `jvm.memory.nonheap.committed` | [DEFAULT] | 힙 이외의 용도로 사용할 수 있도록 보장되는 메모리의 양.<br />**단위:** 바이트<br />**유용한 통계:** 최소, 최대, 평균 | 
| `jvm.memory.pool.init` | [DEFAULT], `name`  | JVM이 메모리 풀에 사용되는 운영 체제에서 요청하는 초기 메모리 양.<br />**단위:** 바이트<br />**유용한 통계:** 최소, 최대, 평균 | 
| `jvm.memory.pool.max` | [DEFAULT], `name`  | 메모리 풀에 사용할 수 있는 최대 메모리 양.<br />**단위:** 바이트<br />**유용한 통계:** 최대 | 
| `jvm.memory.pool.used` | [DEFAULT], `name`  | 현재 메모리 풀의 메모리 사용량.<br />**단위:** 바이트<br />**유용한 통계:** 최소, 최대, 평균 | 
| `jvm.memory.pool.committed` | [DEFAULT], `name`  | 메모리 풀에 사용할 수 있도록 보장되는 메모리의 양.<br />**단위:** 바이트<br />**유용한 통계:** 최소, 최대, 평균 | 
| `jvm.threads.count` | [DEFAULT] | 현재 스레드 수.<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균 | 

JVM 지표는 아래의 차원과 함께 수집됩니다.


| 차원 | 설명 | 
| --- | --- | 
| [DEFAULT] | `metrics` 섹션의 `append_dimensions` 필드를 사용하는 경우를 제외하고, Amazon EC2에서는 기본적으로 호스트도 CloudWatch 에이전트가 수집하는 지표의 차원으로 게시됩니다. 자세한 내용은 [수동으로 CloudWatch 에이전트 구성 파일 생성 또는 편집](CloudWatch-Agent-Configuration-File-Details.md)의 에이전트 섹션에서 `omit_hostname` 항목을 참조하세요.<br />Amazon EKS에서는 기본적으로 k8s 관련 컨텍스트도 지표(`k8s.container.name`, `k8s.deployment.name`, `k8s.namespace.name`, `k8s.node.name`, `k8s.pod.name`)의 차원으로 게시됩니다`k8s.replicaset.name`. 이는 `aggregation_dimensions` 필드를 사용하여 필터링할 수 있습니다. | 
| `name` | `jvm.gc.collections` 지표의 경우 값은 폐영역 수집기 이름입니다.<br />`jvm.memory.pool` 지표의 경우 값은 메모리 풀 이름입니다. | 

## Kafka 지표 수집
<a name="CloudWatch-Agent-Kafka-metrics"></a>

CloudWatch 에이전트를 사용하여 Apache Kafka 지표를 수집할 수 있습니다. 이를 설정하려면 CloudWatch 에이전트 구성 파일의 `jmx` 섹션에 다음과 같은 하위 섹션을 하나 이상 추가합니다.
+ `kafka` 섹션을 사용하여 Kafka 브로커 지표를 수집합니다.
+ `kafka-consumer` 섹션을 사용하여 Kafka 소비자 지표를 수집합니다.
+ `kafka-producer` 섹션을 사용하여 Kafka 생산자 지표를 수집합니다.

**Kafka 브로커 지표**

Kafka 브로커의 경우 다음 지표를 수집할 수 있습니다.


| 지표 | 측정 기준 | 설명 | 
| --- | --- | --- | 
| `kafka.message.count` | [DEFAULT] | Kafka 브로커에 수신된 메시지 수.<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.request.count` | [DEFAULT], `type`  | Kafka 브로커에 수신된 요청 수.<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.request.failed` | [DEFAULT], `type`  | 실패가 발생한 Kafka 브로커에 대한 요청 수.<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.request.time.total` | [DEFAULT], `type`  | Kafka 브로커가 서비스를 요청하는 데 걸린 총 시간.<br />**단위:** 밀리초<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.request.time.50p` | [DEFAULT], `type`  | Kafka 브로커가 서비스를 요청하는 데 걸린 50 백분위수 시간.<br />**단위:** 밀리초<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.request.time.99p` | [DEFAULT], `type`  | Kafka 브로커가 서비스를 요청하는 데 걸린 99 백분위수 시간.<br />**단위:** 밀리초<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.request.time.avg` | [DEFAULT], `type`  | Kafka 브로커가 서비스를 요청하는 데 걸린 평균 시간.<br />**단위:** 밀리초<br />**유용한 통계:** 평균 | 
| `kafka.network.io` | [DEFAULT], `state`  | Kafka 브로커가 수신하거나 전송한 바이트 수.<br />**단위:** 바이트<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.purgatory.size` | [DEFAULT], `type`  | 미완료 공간(purgatory)에 대기 중인 요청 수.<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.partition.count` | [DEFAULT] | Kafka 브로커의 파티션 수.<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.partition.offline` | [DEFAULT] | 오프라인 상태인 총 파티션 수.<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.partition.under_replicated` | [DEFAULT] | 복제가 덜 진행된 파티션 수.<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.isr.operation.count` | [DEFAULT], `operation`  | 동기화되는 복제본 축소 및 확장 작업 수.<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.max.lag` | [DEFAULT] | 팔로워 복제본과 리더 복제본 간 메시지의 최대 지연 시간.<br />**단위:** 없음<br />**유용한 통계:** 최대 | 
| `kafka.controller.active.count` | [DEFAULT] | 브로커의 활성 컨트롤러 수.<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.leader.election.rate` | [DEFAULT] | 리더 선정 속도. 이 값이 증가하면 브로커 실패를 나타내는 것입니다.<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.unclean.election.rate` | [DEFAULT] | 명확하지 않은 리더 선정 속도. 이 값이 증가하면 브로커 실패를 나타내는 것입니다.<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.request.queue` | [DEFAULT] | 요청 대기열의 크기.<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.logs.flush.time.count` | [DEFAULT] | 로그 플러시 수.<br />**단위:** 밀리초<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.logs.flush.time.median` | [DEFAULT] | 로그 플러시 수의 50 백분위수 값.<br />**단위:** 밀리초<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.logs.flush.time.99p` | [DEFAULT] | 로그 플러시 수의 99 백분위수 값.<br />**단위:** 밀리초<br />**유용한 통계:** 최소, 최대, 평균 | 

Kafka 브로커 지표는 아래의 차원과 함께 수집됩니다.


| 차원 | 설명 | 
| --- | --- | 
| [DEFAULT] | `metrics` 섹션의 `append_dimensions` 필드를 사용하는 경우를 제외하고, Amazon EC2에서는 기본적으로 호스트도 CloudWatch 에이전트가 수집하는 지표의 차원으로 게시됩니다. 자세한 내용은 [수동으로 CloudWatch 에이전트 구성 파일 생성 또는 편집](CloudWatch-Agent-Configuration-File-Details.md)의 에이전트 섹션에서 `omit_hostname` 항목을 참조하세요.<br />Amazon EKS에서는 기본적으로 k8s 관련 컨텍스트도 지표(`k8s.container.name`, `k8s.deployment.name`, `k8s.namespace.name`, `k8s.node.name`, `k8s.pod.name`)의 차원으로 게시됩니다`k8s.replicaset.name`. 이는 `aggregation_dimensions` 필드를 사용하여 필터링할 수 있습니다. | 
| `type` | 요청 유형. 가능한 값은 `produce`, `fetch`, `fetchconsumer` 및 `fetchfollower`입니다. | 
| `state` | 네트워크 트래픽의 방향. 가능한 값은 `in` 및 `out`입니다. | 
| `operation` | 동기화되는 복제본의 작업 유형. 가능한 값은 `shrink` 및 `expand`입니다. | 

**Kafka 소비자 지표**

Kafka 소비자의 경우 다음과 같은 지표를 수집할 수 있습니다.


| 지표 | 측정 기준 | 설명 | 
| --- | --- | --- | 
| `kafka.consumer.fetch-rate` | [DEFAULT], `client-id`  | 초당 모든 주제에 대한 가져오기 요청 수.<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.consumer.records-lag-max` | [DEFAULT], `client-id`  | 소비자가 생산자보다 지연되는 메시지 수.<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.consumer.total.bytes-consumed-rate` | [DEFAULT], `client-id`  | 초당 사용된 모든 주제의 평균 바이트 수.<br />**단위:** 바이트<br />**유용한 통계:** 평균 | 
| `kafka.consumer.total.fetch-size-avg` | [DEFAULT], `client-id`  | 모든 주제에 대해 요청당 가져온 바이트 수.<br />**단위:** 바이트<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.consumer.total.records-consumed-rate` | [DEFAULT], `client-id`  | 초당 사용된 모든 주제의 평균 레코드 수.<br />**단위:** 없음<br />**유용한 통계:** 평균 | 
| `kafka.consumer.bytes-consumed-rate` | [DEFAULT], `client-id`, `topic`  | 초당 사용된 평균 바이트 수<br />**단위:** 바이트<br />**유용한 통계:** 평균 | 
| `kafka.consumer.fetch-size-avg` | [DEFAULT], `client-id`, `topic`  | 요청당 가져온 바이트 수.<br />**단위:** 바이트<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.consumer.records-consumed-rate` | [DEFAULT], `client-id`, `topic`  | 초당 사용된 평균 레코드 수.<br />**단위:** 없음<br />**유용한 통계:** 평균 | 

Kafka 소비자 지표는 아래의 차원과 함께 수집됩니다.


| 차원 | 설명 | 
| --- | --- | 
| [DEFAULT] | `metrics` 섹션의 `append_dimensions` 필드를 사용하는 경우를 제외하고, Amazon EC2에서는 기본적으로 호스트도 CloudWatch 에이전트가 수집하는 지표의 차원으로 게시됩니다. 자세한 내용은 [수동으로 CloudWatch 에이전트 구성 파일 생성 또는 편집](CloudWatch-Agent-Configuration-File-Details.md)의 에이전트 섹션에서 `omit_hostname` 항목을 참조하세요.<br />Amazon EKS에서는 기본적으로 k8s 관련 컨텍스트도 지표(`k8s.container.name`, `k8s.deployment.name`, `k8s.namespace.name`, `k8s.node.name`, `k8s.pod.name`)의 차원으로 게시됩니다`k8s.replicaset.name`. 이는 `aggregation_dimensions` 필드를 사용하여 필터링할 수 있습니다. | 
| `client-id` | 클라이언트의 ID입니다. | 
| `topic` | Kafka 주제. | 

**Kafka 생산자 지표**

Kafka 생산자의 경우 다음과 같은 지표를 수집할 수 있습니다.


| 지표 | 측정 기준 | 설명 | 
| --- | --- | --- | 
| `kafka.producer.io-wait-time-ns-avg` | [DEFAULT], `client-id`  | I/O 스레드가 읽기 또는 쓰기 준비가 된 소켓을 기다리는 데 소비한 평균 시간.<br />**단위:** 없음<br />**유용한 통계:** 평균 | 
| `kafka.producer.outgoing-byte-rate` | [DEFAULT], `client-id`  | 모든 서버로 초당 전송된 평균 발신 바이트 수.<br />**단위:** 바이트<br />**유용한 통계:** 평균 | 
| `kafka.producer.request-latency-avg` | [DEFAULT], `client-id`  | 평균 요청 지연 시간.<br />**단위:** 밀리초<br />**유용한 통계:** 평균 | 
| `kafka.producer.request-rate` | [DEFAULT], `client-id`  | 초당 평균 요청 수.<br />**단위:** 없음<br />**유용한 통계:** 평균 | 
| `kafka.producer.response-rate` | [DEFAULT], `client-id`  | 초당 수신된 응답 수<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균 | 
| `kafka.producer.byte-rate` | [DEFAULT], `client-id`, `topic`  | 주제에 대해 초당 전송된 평균 바이트 수.<br />**단위:** 바이트<br />**유용한 통계:** 평균 | 
| `kafka.producer.compression-rate` | [DEFAULT], `client-id`, `topic`  | 주제에 대한 레코드 배치의 평균 압축률.<br />**단위:** 없음<br />**유용한 통계:** 평균 | 
| `kafka.producer.record-error-rate` | [DEFAULT], `client-id`, `topic`  | 주제에 대해 오류가 발생한 초당 평균 레코드를 전송하는 횟수.<br />**단위:** 없음<br />**유용한 통계:** 평균 | 
| `kafka.producer.record-retry-rate` | [DEFAULT], `client-id`, `topic`  | 주제에 대해 초당 평균 재시도된 레코드를 전송하는 횟수.<br />**단위:** 없음<br />**유용한 통계:** 평균 | 
| `kafka.producer.record-send-rate` | [DEFAULT], `client-id`, `topic`  | 주제에 대해 초당 전송된 평균 레코드 수.<br />**단위:** 없음<br />**유용한 통계:** 평균 | 

Kafka 생산자 지표는 아래의 차원과 함께 수집됩니다.


| 차원 | 설명 | 
| --- | --- | 
| [DEFAULT] | `metrics` 섹션의 `append_dimensions` 필드를 사용하는 경우를 제외하고, Amazon EC2에서는 기본적으로 호스트도 CloudWatch 에이전트가 수집하는 지표의 차원으로 게시됩니다. 자세한 내용은 [수동으로 CloudWatch 에이전트 구성 파일 생성 또는 편집](CloudWatch-Agent-Configuration-File-Details.md)의 에이전트 섹션에서 `omit_hostname` 항목을 참조하세요.<br />Amazon EKS에서는 기본적으로 k8s 관련 컨텍스트도 지표(`k8s.container.name`, `k8s.deployment.name`, `k8s.namespace.name`, `k8s.node.name`, `k8s.pod.name`)의 차원으로 게시됩니다`k8s.replicaset.name`. 이는 `aggregation_dimensions` 필드를 사용하여 필터링할 수 있습니다. | 
| `client-id` | 클라이언트의 ID입니다. | 
| `topic` | Kafka 주제. | 

## Tomcat 지표 수집
<a name="CloudWatch-Agent-Tomcat-metrics"></a>

CloudWatch 에이전트를 사용하여 Apache Tomcat 지표를 수집할 수 있습니다. 이를 설정하려면 CloudWatch 에이전트 구성 파일의 `metrics_collected` 섹션에 `tomcat` 섹션을 추가합니다.

다음 지표를 수집할 수 있습니다.


| 지표 | 측정 기준 | 설명 | 
| --- | --- | --- | 
| `tomcat.sessions` | [DEFAULT] | 활성 세션 수.<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균 | 
| `tomcat.errors` | [DEFAULT], `proto_handler`  | 오류가 발생한 횟수.<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균 | 
| `tomcat.processing_time` | [DEFAULT], `proto_handler`  | 총 처리 시간.<br />**단위:** 밀리초<br />**유용한 통계:** 최소, 최대, 평균  | 
| `tomcat.traffic` | [DEFAULT], `proto_handler`  | 수신 및 전송한 바이트 수.<br />**단위:** 바이트<br />**유용한 통계:** 최소, 최대, 평균  | 
| `tomcat.threads` | [DEFAULT], `proto_handler`  | 스레드 수.<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균  | 
| `tomcat.max_time` | [DEFAULT], `proto_handler`, `direction`  | 요청을 처리하는 데 걸리는 최대 시간.<br />**단위:** 밀리초<br />**유용한 통계: **최대  | 
| `tomcat.request_count` | [DEFAULT], `proto_handler`  | 총 요청 수.<br />**단위:** 없음<br />**유용한 통계:** 최소, 최대, 평균  | 

Tomcat 지표는 아래의 차원과 함께 수집됩니다.


| 차원 | 설명 | 
| --- | --- | 
| [DEFAULT] | `metrics` 섹션의 `append_dimensions` 필드를 사용하는 경우를 제외하고, Amazon EC2에서는 기본적으로 호스트도 CloudWatch 에이전트가 수집하는 지표의 차원으로 게시됩니다. 자세한 내용은 [수동으로 CloudWatch 에이전트 구성 파일 생성 또는 편집](CloudWatch-Agent-Configuration-File-Details.md)의 에이전트 섹션에서 `omit_hostname` 항목을 참조하세요.<br />Amazon EKS에서는 기본적으로 k8s 관련 컨텍스트도 지표(`k8s.container.name`, `k8s.deployment.name`, `k8s.namespace.name`, `k8s.node.name`, `k8s.pod.name`)의 차원으로 게시됩니다`k8s.replicaset.name`. 이는 `aggregation_dimensions` 필드를 사용하여 필터링할 수 있습니다. | 
| `proto_handler` | `proto_handler`는 커넥터의 식별자로, `<protocol>-<type>-<port>` 형식(예: `http-nio-8080`)으로 제공됩니다. | 
| `direction` | 트래픽 방향. 가능한 값은 `received` 및 `sent`입니다. | 