Amazon MSK용 관리형 Prometheus 수집기 설정
Amazon Managed Service for Prometheus 수집기를 사용하려면 Amazon Managed Streaming for Apache Kafka 클러스터에서 지표를 검색하고 가져오는 스크레이퍼를 생성해야 합니다. Amazon Elastic Kubernetes Service와 통합되는 스크레이퍼를 생성할 수도 있습니다. 자세한 내용은 Amazon EKS 통합을 참조하세요.
스크레이퍼 생성
Amazon Managed Service for Prometheus 수집기는 Amazon MSK 클러스터에서 지표를 검색하고 수집하는 스크레이퍼로 구성됩니다. Amazon Managed Service for Prometheus가 스크레이퍼를 관리하므로 인스턴스, 에이전트 또는 스크레이퍼를 직접 관리할 필요 없이 필요한 확장성, 보안 및 신뢰성을 제공합니다.
다음 절차에 설명된 대로 AWS API 또는 AWS CLI를 사용하여 스크레이퍼를 생성할 수 있습니다.
나만의 스크레이퍼를 만들기 위한 몇 가지 사전 조건은 다음과 같습니다.
-
Amazon MSK 클러스터가 생성되어 있어야 합니다.
-
Amazon VPC 내의 포트 11001(JMX Exporter) 및 11002(Node Exporter)에서 인바운드 트래픽을 허용하도록 Amazon MSK 클러스터의 보안 그룹을 구성합니다. 스크레이퍼가 Prometheus 지표를 수집하기 위해 이러한 DNS 레코드에 액세스해야 하기 때문입니다.
-
Amazon MSK 클러스터가 상주하는 Amazon VPC에 DNS가 활성화되어 있어야 합니다.
참고
클러스터는 Amazon 리소스 이름(ARN)으로 스크레이퍼와 연결됩니다. 클러스터를 삭제한 다음 이름이 같은 새 클러스터를 생성하면 ARN이 새 클러스터에 재사용됩니다. 이로 인해 스크레이퍼는 새 클러스터에 대한 지표를 수집하려고 시도합니다. 클러스터 삭제와 별도로 스크레이퍼를 삭제합니다.
-
다음은 AWS API와 함께 사용할 수 있는 스크레이퍼 작업의 전체 목록입니다.
CreateScraper API 작업으로 스크레이퍼를 생성합니다.
-
ListScrapers API 작업으로 기존 스크레이퍼를 나열합니다.
-
UpdateScraper API 작업으로 스크레이퍼의 별칭, 구성 또는 대상을 업데이트합니다.
-
DeleteScraper API 작업으로 스크레이퍼를 삭제합니다.
-
DescribeScraper API 작업으로 스크레이퍼에 대한 자세한 내용을 확인합니다.
교차 계정 설정
지표를 수집하려는 Amazon MSK 클러스터가 Amazon Managed Service for Prometheus 수집기와 다른 계정에 있는 경우 교차 계정 설정에서 스크레이퍼를 생성하려면 아래 절차를 따릅니다.
예를 들어 Amazon MSK가 있는 첫 번째 소스 계정 account_id_source와 Amazon Managed Service for Prometheus 워크스페이스가 있는 두 번째 대상 계정 account_id_target과 같이 두 계정이 있는 경우를 가정합니다.
교차 계정 설정에서 스크레이퍼를 생성하려면
-
소스 계정에서
arn:aws:iam::역할을 생성하고 다음 신뢰 정책을 추가합니다.111122223333:role/Source{ "Effect": "Allow", "Principal": { "Service": [ "scraper.aps.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:aps:aws-region:111122223333:scraper/scraper-id" }, "StringEquals": { "AWS:SourceAccount": "111122223333" } } } -
소스(Amazon MSK 클러스터)와 대상(Amazon Managed Service for Prometheus 워크스페이스)의 모든 조합마다
arn:aws:iam::역할을 생성하고 다음 신뢰 정책을 추가하여 AmazonPrometheusRemoteWriteAccess 권한을 부여해야 합니다.444455556666:role/Target{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/Source" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "arn:aws:aps:aws-region:111122223333:scraper/scraper-id" } } } -
--role-configuration옵션을 사용하여 스크레이퍼를 생성합니다.aws amp create-scraper \ --source vpcConfiguration="{subnetIds=[subnet-subnet-id], "securityGroupIds": ["sg-security-group-id"]}" \ --scrape-configuration configurationBlob=<base64-encoded-blob>\ --destination ampConfiguration="{workspaceArn='arn:aws:aps:aws-region:444455556666:workspace/ws-workspace-id'}"\ --role-configuration '{"sourceRoleArn":"arn:aws:iam::111122223333:role/Source", "targetRoleArn":"arn:aws:iam::444455556666:role/Target"}' -
스크레이퍼 생성을 검증합니다.
aws amp list-scrapers { "scrapers": [ { "scraperId": "s-example123456789abcdef0", "arn": "arn:aws:aps:aws-region:111122223333:scraper/s-example123456789abcdef0": "arn:aws:iam::111122223333:role/Source", "status": "ACTIVE", "creationTime": "2025-10-27T18:45:00.000Z", "lastModificationTime": "2025-10-27T18:50:00.000Z", "tags": {}, "statusReason": "Scraper is running successfully", "source": { "vpcConfiguration": { "subnetIds": ["subnet-subnet-id"], "securityGroupIds": ["sg-security-group-id"] } }, "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:aws-region:444455556666:workspace/ws-workspace-id'" } }, "scrapeConfiguration": { "configurationBlob": "<base64-encoded-blob>" } } ] }
RoleConfiguration 및 서비스 연결 역할 간 변경
Amazon Managed Service for Prometheus 워크스페이스에 쓰기 위해 RoleConfiguration 대신 서비스 연결 역할로 다시 전환하려면 UpdateScraper를 업데이트하고 스크레이퍼와 동일한 계정에 RoleConfiguration 없이 워크스페이스를 제공해야 합니다. 스크레이퍼에서 RoleConfiguration이 제거되고 서비스 연결 역할이 사용됩니다.
스크레이퍼와 동일한 계정에서 워크스페이스를 변경할 때 RoleConfiguration을 계속 사용하려면 UpdateScraper에 RoleConfiguration을 다시 제공해야 합니다.
스크레이퍼 찾기 및 삭제
AWS API 또는 AWS CLI를 사용하여 계정의 스크래퍼를 나열하거나 삭제할 수 있습니다.
참고
최신 버전의 AWS CLI 또는 SDK를 사용하고 있는지 확인합니다. 최신 버전은 최신 특징과 기능 및 보안 업데이트도 제공합니다. 또는 항상 최신 명령줄 환경을 자동으로 제공하는 AWS CloudShell을 사용합니다.
계정의 모든 스크레이퍼를 나열하려면 ListScrapers API 작업을 사용합니다.
또는 AWS CLI를 사용하여 다음과 같이 호출합니다.
aws amp list-scrapers
ListScrapers가 계정의 모든 스크레이퍼를 반환합니다. 예를 들면 다음과 같습니다.
{ "scrapers": [ { "scraperId": "s-1234abcd-56ef-7890-abcd-1234ef567890", "arn": "arn:aws:aps:aws-region:123456789012:scraper/s-1234abcd-56ef-7890-abcd-1234ef567890", "roleArn": "arn:aws:iam::123456789012:role/aws-service-role/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-2931", "status": { "statusCode": "DELETING" }, "createdAt": "2023-10-12T15:22:19.014000-07:00", "lastModifiedAt": "2023-10-12T15:55:43.487000-07:00", "tags": {}, "source": { "vpcConfiguration": { "securityGroupIds": [ "sg-1234abcd5678ef90" ], "subnetIds": [ "subnet-abcd1234ef567890", "subnet-1234abcd5678ab90" ] } }, "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:aws-region:123456789012:workspace/ws-1234abcd-5678-ef90-ab12-cdef3456a78" } } } ] }
스크레이퍼를 삭제하려면 ListScrapers 작업을 사용하여 삭제하려는 스크레이퍼의 scraperId를 찾은 다음 DeleteScraper 작업을 사용하여 삭제합니다.
또는 AWS CLI를 사용하여 다음과 같이 호출합니다.
aws amp delete-scraper --scraper-idscraperId
Amazon MSK에서 수집된 지표
Amazon MSK와 통합하면 Amazon Managed Service for Prometheus 수집기가 자동으로 다음 지표를 스크래핑합니다.
| 지표 | 설명/목적 |
|---|---|
|
jmx_config_reload_failure_total |
JMX Exporter가 구성 파일을 다시 로드하지 못한 총 횟수입니다. |
|
jmx_scrape_duration_seconds |
현재 수집 주기 동안 JMX 지표를 스크래핑하는 데 걸린 시간(초)입니다. |
|
jmx_scrape_error |
JMX 지표 스크래핑 중에 오류가 발생했는지 여부를 나타냅니다(1 = 오류, 0 = 성공). |
|
java_lang_Memory_HeapMemoryUsage_used |
JVM에 현재 사용된 힙 메모리의 양(바이트)입니다. |
|
java_lang_Memory_HeapMemoryUsage_max |
메모리 관리에 사용할 수 있는 최대 힙 메모리 양(바이트)입니다. |
|
java_lang_Memory_NonHeapMemoryUsage_used |
JVM에 현재 사용된 힙 이외 메모리의 양(바이트)입니다. |
|
kafka_cluster_Partition_Value |
Kafka 클러스터 파티션과 관련된 현재 상태 또는 값을 파티션 ID 및 주제별로 분류하여 표시합니다. |
|
kafka_consumer_consumer_coordinator_metrics_assigned_partitions |
현재 이 소비자에게 할당된 파티션 수입니다. |
|
kafka_consumer_consumer_coordinator_metrics_commit_latency_avg |
오프셋을 커밋하는 데 걸린 평균 시간입니다. |
|
kafka_consumer_consumer_coordinator_metrics_commit_rate |
초당 오프셋 커밋 횟수입니다. |
|
kafka_consumer_consumer_coordinator_metrics_failed_rebalance_total |
소비자 그룹 재조정 실패 총 횟수입니다. |
|
kafka_consumer_consumer_coordinator_metrics_last_heartbeat_seconds_ago |
코디네이터에 마지막으로 하트비트가 전송된 이후 경과된 시간(초)입니다. |
|
kafka_consumer_consumer_coordinator_metrics_rebalance_latency_avg |
소비자 그룹 재조정에 걸린 평균 시간(밀리초)입니다. |
|
kafka_consumer_consumer_coordinator_metrics_rebalance_total |
소비자 그룹 재조정 총 횟수입니다. |
|
kafka_consumer_consumer_fetch_manager_metrics_bytes_consumed_rate |
소비자가 초당 소비하는 평균 바이트 수입니다. |
|
kafka_consumer_consumer_fetch_manager_metrics_fetch_latency_avg |
가져오기 요청에 걸린 평균 시간(밀리초)입니다. |
|
kafka_consumer_consumer_fetch_manager_metrics_fetch_rate |
초당 가져오기 요청 수입니다. |
|
kafka_consumer_consumer_fetch_manager_metrics_records_consumed_rate |
초당 소비된 평균 레코드 수입니다. |
|
kafka_consumer_consumer_fetch_manager_metrics_records_lag_max |
해당 소비자 내 모든 파티션에서 레코드 수 기준으로 발생하는 최대 지연 시간입니다. |
|
kafka_consumer_consumer_metrics_connection_count |
현재 활성 연결 수입니다. |
|
kafka_consumer_consumer_metrics_incoming_byte_rate |
모든 서버에서 초당 수신된 평균 바이트 수입니다. |
|
kafka_consumer_consumer_metrics_last_poll_seconds_ago |
마지막 소비자 poll() 호출 이후 경과된 시간(초)입니다. |
|
kafka_consumer_consumer_metrics_request_rate |
초당 전송된 요청 수입니다. |
|
kafka_consumer_consumer_metrics_response_rate |
초당 수신된 응답 수입니다. |
|
kafka_consumer_group_ConsumerLagMetrics_Value |
소비자 그룹의 현재 소비자 지연 값으로, 소비자가 얼마나 뒤처져 있는지를 나타냅니다. |
|
kafka_controller_KafkaController_Value |
Kafka 컨트롤러의 현재 상태 또는 값입니다(1 = 활성 컨트롤러, 0 = 비활성). |
|
kafka_controller_ControllerEventManager_Count |
처리된 총 컨트롤러 이벤트 수입니다. |
|
kafka_controller_ControllerEventManager_Mean |
컨트롤러 이벤트를 처리하는 데 걸린 평균 시간입니다. |
|
kafka_controller_ControllerStats_MeanRate |
컨트롤러 통계 작업의 초당 평균 처리 속도입니다. |
|
kafka_coordinator_group_GroupMetadataManager_Value |
소비자 그룹에 대한 그룹 메타데이터 관리자의 현재 상태 또는 값입니다. |
|
kafka_log_LogFlushStats_Count |
로그 플러시 작업의 총 횟수입니다. |
|
kafka_log_LogFlushStats_Mean |
로그 플러시 작업에 걸린 평균 시간입니다. |
|
kafka_log_LogFlushStats_MeanRate |
로그 플러시 작업의 초당 평균 속도입니다. |
|
kafka_network_RequestMetrics_Count |
처리된 총 네트워크 요청 수입니다. |
|
kafka_network_RequestMetrics_Mean |
네트워크 요청을 처리하는 데 걸린 평균 시간입니다. |
|
kafka_network_RequestMetrics_MeanRate |
네트워크 요청의 초당 평균 속도입니다. |
|
kafka_network_Acceptor_MeanRate |
수락된 연결의 초당 평균 속도입니다. |
|
kafka_server_Fetch_queue_size |
가져오기 요청 대기열의 현재 크기입니다. |
|
kafka_server_Produce_queue_size |
생산 요청 대기열의 현재 크기입니다. |
|
kafka_server_Request_queue_size |
일반 요청 대기열의 현재 크기입니다. |
|
kafka_server_BrokerTopicMetrics_Count |
브로커 주제 작업(수신/송신 메시지, 수신/송신 바이트)의 총 개수입니다. |
|
kafka_server_BrokerTopicMetrics_MeanRate |
브로커 주제 작업의 초당 평균 속도입니다. |
|
kafka_server_BrokerTopicMetrics_OneMinuteRate |
브로커 주제 작업의 1분 이동 평균 속도입니다. |
|
kafka_server_DelayedOperationPurgatory_Value |
퍼거토리에 있는 지연된 작업(완료 대기 중)의 현재 개수입니다. |
|
kafka_server_DelayedFetchMetrics_MeanRate |
지연된 가져오기 작업의 초당 평균 속도입니다. |
|
kafka_server_FetcherLagMetrics_Value |
복제본 페쳐 스레드에 대한 현재 지연 값입니다(리더보다 얼마나 뒤처져 있는지를 나타냄). |
|
kafka_server_FetcherStats_MeanRate |
페처 작업의 초당 평균 속도입니다. |
|
kafka_server_ReplicaManager_Value |
복제본 관리자의 현재 상태 또는 값입니다. |
|
kafka_server_ReplicaManager_MeanRate |
복제본 관리자 작업의 초당 평균 속도입니다. |
|
kafka_server_LeaderReplication_byte_rate |
이 브로커가 리더인 파티션에 대한 초당 복제 속도(바이트)입니다. |
|
kafka_server_group_coordinator_metrics_group_completed_rebalance_count |
소비자 그룹 재조정 완료 총 횟수입니다. |
|
kafka_server_group_coordinator_metrics_offset_commit_count |
총 오프셋 커밋 작업 수입니다. |
|
kafka_server_group_coordinator_metrics_offset_commit_rate |
오프셋 커밋 작업의 초당 속도입니다. |
|
kafka_server_socket_server_metrics_connection_count |
현재 활성 연결 수입니다. |
|
kafka_server_socket_server_metrics_connection_creation_rate |
새 연결 생성 작업의 초당 속도입니다. |
|
kafka_server_socket_server_metrics_connection_close_rate |
초당 연결 종료 속도입니다. |
|
kafka_server_socket_server_metrics_failed_authentication_total |
총 인증 시도 실패 횟수입니다. |
|
kafka_server_socket_server_metrics_incoming_byte_rate |
초당 수신 바이트 속도입니다. |
|
kafka_server_socket_server_metrics_outgoing_byte_rate |
초당 발신 바이트 속도입니다. |
|
kafka_server_socket_server_metrics_request_rate |
초당 요청 속도입니다. |
|
kafka_server_socket_server_metrics_response_rate |
초당 응답 속도입니다. |
|
kafka_server_socket_server_metrics_network_io_rate |
네트워크 I/O 작업의 초당 속도입니다. |
|
kafka_server_socket_server_metrics_io_ratio |
I/O 작업에 소요된 시간 비율입니다. |
|
kafka_server_controller_channel_metrics_connection_count |
컨트롤러 채널의 현재 활성 연결 수입니다. |
|
kafka_server_controller_channel_metrics_incoming_byte_rate |
컨트롤러 채널의 초당 수신 바이트 속도입니다. |
|
kafka_server_controller_channel_metrics_outgoing_byte_rate |
컨트롤러 채널의 초당 발신 바이트 속도입니다. |
|
kafka_server_controller_channel_metrics_request_rate |
컨트롤러 채널의 초당 요청 속도입니다. |
|
kafka_server_replica_fetcher_metrics_connection_count |
복제본 가져오기에 대한 현재 활성 연결 수입니다. |
|
kafka_server_replica_fetcher_metrics_incoming_byte_rate |
복제본 가져오기에 대한 초당 수신 바이트 속도입니다. |
|
kafka_server_replica_fetcher_metrics_request_rate |
복제본 가져오기에 대한 초당 요청 속도입니다. |
|
kafka_server_replica_fetcher_metrics_failed_authentication_total |
복제본 가져오기에 대한 총 인증 시도 실패 횟수입니다. |
|
kafka_server_ZooKeeperClientMetrics_Count |
ZooKeeper 클라이언트 작업의 총 개수입니다. |
|
kafka_server_ZooKeeperClientMetrics_Mean |
ZooKeeper 클라이언트 작업의 평균 지연 시간입니다. |
|
kafka_server_KafkaServer_Value |
Kafka 서버의 현재 상태 또는 값입니다(일반적으로 서버가 실행 중임을 나타냄). |
|
node_cpu_seconds_total |
각 모드(사용자, 시스템, 유휴 등)에서 CPU가 소모한 총 시간(초)을 CPU 및 모드별로 분류하여 표시합니다. |
|
node_disk_read_bytes_total |
디스크에서 성공적으로 읽은 총 바이트 수를 디바이스별로 구분하여 표시합니다. |
|
node_disk_reads_completed_total |
디스크에 대해 성공적으로 완료된 총 읽기 횟수를 디바이스별로 분류하여 표시합니다. |
|
node_disk_writes_completed_total |
디스크에 대해 성공적으로 완료된 총 쓰기 횟수를 디바이스별로 분류하여 표시합니다. |
|
node_disk_written_bytes_total |
디스크에 성공적으로 기록된 총 바이트 수를 디바이스별로 분류하여 표시합니다. |
|
node_filesystem_avail_바이트 |
루트 사용자가 아닌 사용자에게 사용 가능한 파일 시스템 공간(바이트)을 디바이스 및 탑재 지점별로 분류하여 표시합니다. |
|
node_filesystem_size_bytes |
파일 시스템의 총 크기(바이트)를 디바이스 및 탑재 지점별로 분류하여 표시합니다. |
|
node_filesystem_free_바이트 |
사용 가능한 파일 시스템 공간(바이트)을 디바이스 및 탑재 지점별로 분류하여 표시합니다. |
|
node_filesystem_files |
파일 시스템의 총 파일 노드(inode) 수를 디바이스 및 탑재 지점별로 분류하여 표시합니다. |
|
node_filesystem_files_free |
파일 시스템의 사용 가능한 파일 노드(inode) 수를 디바이스 및 탑재 지점별로 분류하여 표시합니다. |
|
node_filesystem_readonly |
파일 시스템이 읽기 전용으로 마운트되었는지 여부를 나타냅니다(1 = 읽기 전용, 0 = 읽기-쓰기). |
|
node_filesystem_device_error |
파일 시스템 통계를 가져오는 동안 오류가 발생했는지 여부를 나타냅니다(1 = 오류, 0 = 성공). |
제한 사항
현재 Amazon MSK와 Amazon Managed Service for Prometheus 간의 통합에는 다음과 같은 제한 사항이 적용됩니다:
-
Amazon MSK 프로비저닝 클러스터에서만 지원됩니다(Amazon MSK Serverless에서는 사용할 수 없음).
-
KRaft 메타데이터 모드와 함께 퍼블릭 액세스가 활성화된 Amazon MSK 클러스터에서는 지원되지 않습니다.
-
Amazon MSK Express 브로커에서는 지원되지 않습니다.
-
현재 Amazon MSK 클러스터와 Amazon Managed Service for Prometheus 수집기/워크스페이스 간의 1:1 매핑을 지원합니다.