

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Prometheus를 사용하여 MSK 프로비저닝 클러스터 모니터링
<a name="open-monitoring"></a>

시계열 지표 데이터를 위한 오픈 소스 모니터링 시스템인 Prometheus로 MSK 프로비저닝된 클러스터를 모니터링할 수 있습니다. Prometheus의 원격 쓰기 기능을 사용하여 이 데이터를 Prometheus용 Amazon 관리형 서비스에 게시할 수 있습니다. 또한 Prometheus 형식의 지표와 호환되는 도구 또는 Amazon MSK 오픈 모니터링과 통합되는 도구([Datadog](https://docs.datadoghq.com/integrations/amazon_msk/), [Lenses](https://docs.lenses.io/latest/deployment/configuration/agent/automation/kafka/aws-msk), [New Relic](https://docs.newrelic.com/docs/integrations/amazon-integrations/aws-integrations-list/aws-managed-kafka-msk-integration), [Sumo logic](https://help.sumologic.com/03Send-Data/Collect-from-Other-Data-Sources/Amazon_MSK_Prometheus_metrics_collection))를 사용할 수 있습니다. 오픈 모니터링은 무료로 제공되지만 가용 영역 간 데이터 전송에 대해서는 요금이 부과됩니다.

Prometheus에 대한 자세한 내용은 [Prometheus 설명서](https://prometheus.io/docs)를 참조하십시오.

Prometheus 사용에 대한 자세한 내용은 [Prometheus용 Amazon Managed Service 및 Amazon Managed Grafana를 사용하여 Amazon MSK에 대한 운영 인사이트 향상](https://aws.amazon.com/blogs//big-data/enhance-operational-insights-for-amazon-msk-using-amazon-managed-service-for-prometheus-and-amazon-managed-grafana/)을 참조하세요.

**참고**  
KRaft 메타데이터 모드와 MSK Express 브로커는 공개 모니터링과 퍼블릭 액세스 둘 다를 활성화할 수 없습니다.

# 새로운 MSK 프로비저닝된 클러스터에서 오픈 모니터링 활성화
<a name="enable-open-monitoring-at-creation"></a>

이 절차에서는 AWS Management Console AWS CLI, 또는 Amazon MSK API를 사용하여 새 MSK 클러스터에서 공개 모니터링을 활성화하는 방법을 설명합니다.

**사용 AWS Management Console**

1. 에 로그인 AWS Management Console하고 [https://console.aws.amazon.com/msk/home?region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/) Amazon MSK 콘솔을 엽니다.

1. **모니터링** 섹션에서 **Enable open monitoring with Prometheus(Prometheus를 사용하여 오픈 모니터링 활성화)** 옆에 있는 확인란을 선택합니다.

1. 페이지의 모든 섹션에 필요한 정보를 제공하고 사용 가능한 모든 옵션을 검토합니다.

1. **클러스터 생성**을 선택합니다.

**사용 AWS CLI**
+ [create-cluster](https://docs.aws.amazon.com/cli/latest/reference/kafka/create-cluster.html) 명령을 호출하고 해당 `open-monitoring` 옵션을 지정합니다. `JmxExporter`, `NodeExporter` 또는 둘 다를 활성화합니다. `open-monitoring`을 지정하면 두 Exporter를 동시에 비활성화할 수 없습니다.

**API 사용**
+ [CreateCluster](https://docs.aws.amazon.com/msk/1.0/apireference/clusters.html#CreateCluster) 작업을 호출하고 `OpenMonitoring`을 지정합니다. `jmxExporter`, `nodeExporter` 또는 둘 다를 활성화합니다. `OpenMonitoring`을 지정하면 두 Exporter를 동시에 비활성화할 수 없습니다.

# 기존 MSK 프로비저닝된 클러스터에서 오픈 모니터링 활성화
<a name="enable-open-monitoring-after-creation"></a>

개방형 모니터링을 사용하려면 MSK 프로비저닝된 클러스터가 `ACTIVE` 상태인지 확인합니다.

**사용 AWS Management Console**

1. 에 로그인 AWS Management Console하고 [https://console.aws.amazon.com/msk/home?region=us-east-1\$1/home/](https://console.aws.amazon.com/msk/home?region=us-east-1#/home/) Amazon MSK 콘솔을 엽니다.

1. 업데이트할 클러스터 이름을 선택합니다. 그러면 클러스터에 대한 세부 정보가 포함된 페이지로 이동합니다.

1. **속성** 탭에서 아래로 스크롤하여 **모니터링** 섹션을 찾습니다.

1. **편집**을 선택합니다.

1. **Enable open monitoring with Prometheus(Prometheus를 사용하여 오픈 모니터링 활성화)** 옆에 있는 확인란을 선택합니다.

1. **변경 사항 저장**을 선택합니다.

**사용 AWS CLI**
+ [update-monitoring](https://docs.aws.amazon.com/cli/latest/reference/kafka/update-monitoring.html) 명령을 호출하고 해당 `open-monitoring` 옵션을 지정합니다. `JmxExporter`, `NodeExporter` 또는 둘 다를 활성화합니다. `open-monitoring`을 지정하면 두 Exporter를 동시에 비활성화할 수 없습니다.

**API 사용**
+ [UpdateMonitoring](https://docs.aws.amazon.com/msk/1.0/apireference/clusters-clusterarn-monitoring.html#UpdateMonitoring) 작업을 호출하고 `OpenMonitoring`을 지정합니다. `jmxExporter`, `nodeExporter` 또는 둘 다를 활성화합니다. `OpenMonitoring`을 지정하면 두 Exporter를 동시에 비활성화할 수 없습니다.

# Amazon EC2 인스턴스에서 Prometheus 호스트 설정
<a name="set-up-prometheus-host"></a>

이 절차에서는 prometheus.yml 파일을 사용하여 Prometheus 호스트를 설정하는 방법을 설명합니다.

1. [https://prometheus.io/download/#prometheus](https://prometheus.io/download/#prometheus)에서 Amazon EC2 인스턴스로 Prometheus 서버를 다운로드합니다.

1. 디렉터리에 다운로드한 파일의 압축을 풀고 해당 디렉터리로 이동합니다.

1. 다음 콘텐츠가 포함된 파일을 생성하고 이름을 `prometheus.yml`로 지정합니다.

   ```
   # file: prometheus.yml
   # my global config
   global:
     scrape_interval:     60s
   
   # A scrape configuration containing exactly one endpoint to scrape:
   # Here it's Prometheus itself.
   scrape_configs:
     # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
     - job_name: 'prometheus'
       static_configs:
       # 9090 is the prometheus server port
       - targets: ['localhost:9090']
     - job_name: 'broker'
       file_sd_configs:
       - files:
         - 'targets.json'
   ```

1. [ListNodes](https://docs.aws.amazon.com//msk/1.0/apireference/clusters-clusterarn-nodes.html#ListNodes) 작업을 사용하여 클러스터의 브로커 목록을 가져옵니다.

1. 다음 JSON을 통해 `targets.json` 파일을 생성합니다. *broker\$1dns\$11*, *broker\$1dns\$12* 및 나머지 브로커 DNS 이름을 이전 단계에서 브로커에 대해 얻은 DNS 이름으로 바꿉니다. 이전 단계에서 획득한 모든 브로커를 포함합니다. Amazon MSK는 JMX Exporter에 포트 11001을, Node Exporter에 포트 11002를 사용합니다.

------
#### [ ZooKeeper mode targets.json ]

   ```
   [
     {
       "labels": {
         "job": "jmx"
       },
       "targets": [
         "broker_dns_1:11001",
         "broker_dns_2:11001",
         .
         .
         .
         "broker_dns_N:11001"
       ]
     },
     {
       "labels": {
         "job": "node"
       },
       "targets": [
         "broker_dns_1:11002",
         "broker_dns_2:11002",
         .
         .
         .
         "broker_dns_N:11002"
       ]
     }
   ]
   ```

------
#### [ KRaft mode targets.json ]

   ```
   [
     {
       "labels": {
         "job": "jmx"
       },
       "targets": [
         "broker_dns_1:11001",
         "broker_dns_2:11001",
         .
         .
         .
         "broker_dns_N:11001",
         "controller_dns_1:11001",
         "controller_dns_2:11001",
         "controller_dns_3:11001"
       ]
     },
     {
       "labels": {
         "job": "node"
       },
       "targets": [
         "broker_dns_1:11002",
         "broker_dns_2:11002",
         .
         .
         .
         "broker_dns_N:11002"
       ]
     }
   ]
   ```

------
**참고**  
KRaft 컨트롤러에서 JMX 지표를 스크레이핑하려면 JSON 파일에 컨트롤러 DNS 이름을 대상으로 추가합니다. 예를 들어, `controller_dns_1:11001`인 경우 `controller_dns_1`를 실제 컨트롤러 DNS 이름으로 바꿉니다.

1. Amazon EC2 인스턴스에서 Prometheus 서버를 시작하려면 Prometheus 파일을 추출하고 `prometheus.yml` 및 `targets.json`을 저장한 디렉터리에서 다음 명령을 실행합니다.

   ```
   ./prometheus
   ```

1. 이전 단계에서 Prometheus를 실행한 Amazon EC2 인스턴스의 IPv4 퍼블릭 IP 주소를 찾습니다. 다음 단계에서 이 퍼블릭 IP 주소가 필요합니다.

1. Prometheus 웹 UI에 액세스하려면 Amazon EC2 인스턴스에 액세스할 수 있는 브라우저를 열고 `Prometheus-Instance-Public-IP:9090`으로 이동합니다. 여기서 *Prometheus-Instance-Public-IP*는 이전 단계에서 얻은 퍼블릭 IP 주소입니다.

# Prometheus 지표 사용
<a name="prometheus-metrics"></a>

JMX로 Apache Kafka에 의해 방출된 모든 지표는 Prometheus와 오픈 모니터링을 사용하여 액세스할 수 있습니다. Apache Kafka 지표에 대한 자세한 내용은 Apache Kafka 설명서의 [Monitoring](https://kafka.apache.org/documentation/#monitoring)을 참조하십시오. Apache Kafka 지표와 함께 소비자 지연 지표도 JMX MBean 이름 `kafka.consumer.group:type=ConsumerLagMetrics` 아래 포트 11001에서 사용할 수 있습니다. Prometheus 노드 내보내기를 사용하여 포트 11002에서 브로커에 대한 CPU 및 디스크 지표를 가져올 수도 있습니다.

# Amazon Managed Service for Prometheus에 Prometheus 지표 저장
<a name="managed-service-prometheus"></a>

Amazon Managed Service for Prometheus는 Amazon MSK 클러스터 모니터링에 사용할 수 있는 Prometheus 호환 모니터링 및 알림 서비스입니다. 지표의 수집, 스토리지, 쿼리 및 알림을 자동으로 확장하는 완전관리형 서비스입니다. 또한 AWS 보안 서비스와 통합되어 데이터에 빠르고 안전하게 액세스할 수 있습니다. 오픈 소스 PromQL 쿼리 언어를 사용하여 지표를 쿼리하고 지표에 대해 알릴 수 있습니다.

자세한 내용은 [Amazon Managed Service for Prometheus 시작하기](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-getting-started.html)를 참조하세요.