Amazon MSK 用のマネージド Prometheus コレクターを設定する - Amazon Managed Service for Prometheus

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 CLI API または AWS を使用して作成できます。

独自のスクレイパーを作成するには、いくつかの前提条件があります。

  • Amazon MSK クラスターが作成済みである必要があります。

  • スクレイパーは Prometheus メトリクスを収集するためにこれらの DNS レコードにアクセスする必要があるため、Amazon VPC 内のポート 11001 (JMX Exporter) および 11002 (Node Exporter) でのインバウンドトラフィックを許可するように Amazon MSK クラスターのセキュリティグループを設定します。

  • Amazon MSK クラスターが存在する Amazon VPC では、DNS が有効になっている必要があります。

注記

クラスターは、Amazon リソースネーム (ARN) によってスクレイパーと関連付けられます。クラスターを削除し、同じ名前で新しいクラスターを作成すると、ARN は新しいクラスターで再利用されます。このため、スクレイパーは新しいクラスターのメトリクスを収集しようとします。スクレイパーの削除は、クラスターの削除とは別個に行います。

To create a scraper using the AWS API

CreateScraper API オペレーションを使用して AWS API を含むスクレイパーを作成します。次の例のコマンドは、米国東部 (バージニア北部) リージョンにスクレイパーを作成します。サンプルコンテンツを Amazon MSK クラスター情報に置き換え、スクレイパー設定を指定します。

注記

ターゲットクラスターと一致するようにセキュリティグループとサブネットを設定します。2 つのアベイラビリティーゾーンにまたがって少なくとも 2 つのサブネットが含まれます。

POST /scrapers HTTP/1.1 Content-Length: 415 Authorization: AUTHPARAMS X-Amz-Date: 20201201T193725Z User-Agent: aws-cli/1.18.147 Python/2.7.18 Linux/5.4.58-37.125.amzn2int.x86_64 botocore/1.18.6 { "alias": "myScraper", "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:us-east-1:123456789012:workspace/ws-workspace-id" } }, "source": { "vpcConfiguration": { "securityGroupIds": ["sg-security-group-id"], "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"] } }, "scrapeConfiguration": { "configurationBlob": base64-encoded-blob } }

この例では、scrapeConfigurationパラメータには、MSK クラスターの DNS レコードを指定する base64 でエンコードされた Prometheus 設定 YAML ファイルが必要です。

各 DNS レコードは、特定のアベイラビリティーゾーンのブローカーエンドポイントを表し、クライアントは選択した AZ 全体に分散されたブローカーに接続して高可用性を実現できます。

MSK クラスタープロパティの DNS レコードの数は、クラスター設定のブローカーノードとアベイラビリティーゾーンの数に対応します。

  • デフォルト設定 – 3 つの AZ にまたがる 3 つのブローカーノード = 3 つの DNS レコード

  • カスタム設定 – 2 つの AZ にまたがる 2 つのブローカーノード = 2 つの DNS レコード

MSK クラスターの DNS レコードを取得するには、https://console.aws.amazon.com/msk/home?region=us-east-1#/home/ で、MSK コンソールを開きます。MSK クラスターに移動します。[プロパティ][ブローカー][エンドポイント] を選択します。

MSK クラスターからメトリクスをスクレイプするように Prometheus を設定するには、次の 2 つのオプションがあります。

  1. クラスターレベルの DNS 解決 (推奨) – クラスターのベース DNS 名を使用して、すべてのブローカーを自動的に検出します。ブローカーエンドポイントが b-1.clusterName.xxx.xxx.xxx の場合、DNS レコードとして clusterName.xxx.xxx.xxx を使用します。これにより、Prometheus はクラスター内のすべてのブローカーを自動的にスクレイプできます。

    個々のブローカーエンドポイント – きめ細かな制御のために各ブローカーエンドポイントを個別に指定します。設定で完全なブローカー識別子 (b-1、b-2) を使用します。例:

    dns_sd_configs: - names: - b-1.clusterName.xxx.xxx.xxx - b-2.clusterName.xxx.xxx.xxx - b-3.clusterName.xxx.xxx.xxx
注記

clusterName.xxx.xxx.xxx を AWS コンソールで確認できる実際の MSK クラスターエンドポイントに置き換えます。

詳細については、Prometheus ドキュメントの「<dns_sd_config>」を参照してください。

以下はスクレイパー設定ファイルの例です。

global: scrape_interval: 30s external_labels: clusterArn: msk-test-1 scrape_configs: - job_name: msk-jmx scheme: http metrics_path: /metrics scrape_timeout: 10s dns_sd_configs: - names: - dns-record-1 - dns-record-2 - dns-record-3 type: A port: 11001 relabel_configs: - source_labels: [__meta_dns_name] target_label: broker_dns - source_labels: [__address__] target_label: instance regex: '(.*)' replacement: '${1}' - job_name: msk-node scheme: http metrics_path: /metrics scrape_timeout: 10s dns_sd_configs: - names: - dns-record-1 - dns-record-2 - dns-record-3 type: A port: 11002 relabel_configs: - source_labels: [__meta_dns_name] target_label: broker_dns - source_labels: [__address__] target_label: instance regex: '(.*)' replacement: '${1}'

次のいずれかのコマンドを実行して、YAML ファイルを base64 に変換します。任意のオンライン base64 コンバーターを使用してファイルを変換することもできます。

例 Linux/macOS
echo -n scraper config updated with dns records | base64
例 Windows PowerShell
[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(scraper config updated with dns records))
To create a scraper using the AWS CLI

create-scraper コマンドを使用して AWS Command Line Interface でスクレイパーを作成します。次の例のコマンドは、米国東部 (バージニア北部) リージョンにスクレイパーを作成します。サンプルコンテンツを Amazon MSK クラスター情報に置き換え、スクレイパー設定を指定します。

注記

ターゲットクラスターと一致するようにセキュリティグループとサブネットを設定します。2 つのアベイラビリティーゾーンにまたがって少なくとも 2 つのサブネットが含まれます。

aws amp create-scraper \ --source vpcConfiguration="{securityGroupIds=['sg-security-group-id'],subnetIds=['subnet-subnet-id-1', 'subnet-subnet-id-2']}" \ --scrape-configuration configurationBlob=base64-encoded-blob \ --destination ampConfiguration="{workspaceArn='arn:aws:aps:us-west-2:123456789012:workspace/ws-workspace-id'}"
  • 以下は、AWS API で使用できるスクレイパーオペレーションの完全なリストです。

    CreateScraper API オペレーションを使用してスクレイパーを作成します。

  • ListScrapers API オペレーションを使用して既存のスクレイパーを一覧表示します。

  • UpdateScraper API オペレーションを使用して、スクレイパーのエイリアス、設定、または送信先を更新します。

  • DeleteScraper API オペレーションを使用してスクレイパーを削除します。

  • DescribeScraper API オペレーションを使用してスクレイパーの詳細を取得します。

クロスアカウントの設定

メトリクスを収集する Amazon MSK クラスターが Amazon Managed Service for Prometheus コレクターとは異なるアカウントにある場合に、クロスアカウント設定でスクレイパーを作成するには、次の手順を使用します。

例えば、2 つのアカウント、Amazon MSK がある最初のソースアカウント account_id_source、および Amazon Managed Service for Prometheus ワークスペースがある 2 番目のターゲットアカウント account_id_target がある場合です。

クロスアカウント設定でスクレイパーを作成するには
  1. ソースアカウントで、ロール 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" } } }
  2. ソース (Amazon MSK クラスター) とターゲット (Amazon Managed Service for Prometheus ワークスペース) のすべての組み合わせで、ロール arn:aws:iam::444455556666:role/Target を作成し、AmazonPrometheusRemoteWriteAccess のアクセス許可を持つ次の信頼ポリシーを追加する必要があります。

    { "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" } } }
  3. --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"}'
  4. スクレイパーの作成を検証します。

    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 とサービスにリンクされたロールの間の変更

RoleConfiguration ではなくサービスにリンクされたロールに切り替えて Amazon Managed Service for Prometheus ワークスペースに書き込む場合は、UpdateScraper を更新し、RoleConfiguration なしでスクレイパーと同じアカウントのワークスペースを提供する必要があります。RoleConfiguration はスクレイパーから削除され、サービスにリンクされたロールが使用されます。

スクレイパーと同じアカウントのワークスペースを変更し、引き続き RoleConfiguration を使用する場合は、RoleConfigurationUpdateScraper を再度指定する必要があります。

スクレイパーの検出と削除

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-id scraperId

Amazon MSK から収集されたメトリクス

Amazon MSK と統合すると、Amazon Managed Service for Prometheus コレクターは次のメトリクスを自動的にスクレイピングします。

メトリクス 説明/目的

jmx_config_reload_failure_total

JMX エクスポーターが設定ファイルの再ロードに失敗した合計回数。

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

1 秒あたりのオフセットコミットの数。

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

コンシューマーごとの 1 秒あたりの平均消費バイト数。

kafka_consumer_consumer_fetch_manager_metrics_fetch_latency_avg

フェッチリクエストにかかるミリ秒単位の平均時間。

kafka_consumer_consumer_fetch_manager_metrics_fetch_rate

1 秒あたりのフェッチリクエストの数。

kafka_consumer_consumer_fetch_manager_metrics_records_consumed_rate

1 秒あたりに消費されるレコードの平均数。

kafka_consumer_consumer_fetch_manager_metrics_records_lag_max

このコンシューマー内の任意のパーティションのレコード数に関する最大ラグ。

kafka_consumer_consumer_metrics_connection_count

アクティブな接続の現在の数。

kafka_consumer_consumer_metrics_incoming_byte_rate

すべてのサーバーから 1 秒あたりに受信した平均バイト数。

kafka_consumer_consumer_metrics_last_poll_seconds_ago

前回のコンシューマー poll() 呼び出しからの秒数。

kafka_consumer_consumer_metrics_request_rate

1 秒あたりの送信リクエストの数。

kafka_consumer_consumer_metrics_response_rate

1 秒あたりの受信レスポンスの数。

kafka_consumer_group_ConsumerLagMetrics_Value

コンシューマーがどの程度遅れているかを示す、コンシューマーグループの現在のコンシューマーラグ値。

kafka_controller_KafkaController_Value

Kafka コントローラーの現在の状態または値 (1 = アクティブなコントローラー、0 = アクティブではない)。

kafka_controller_ControllerEventManager_Count

処理されたコントローラーイベントの合計数。

kafka_controller_ControllerEventManager_Mean

コントローラーイベントの処理にかかる平均時間。

kafka_controller_ControllerStats_MeanRate

1 秒あたりのコントローラー統計オペレーションの平均レート。

kafka_coordinator_group_GroupMetadataManager_Value

コンシューマーグループのグループメタデータマネージャーの現在の状態または値。

kafka_log_LogFlushStats_Count

ログフラッシュ操作の合計数。

kafka_log_LogFlushStats_Mean

ログフラッシュ操作にかかる平均時間。

kafka_log_LogFlushStats_MeanRate

1 秒あたりのログフラッシュ操作の平均レート。

kafka_network_RequestMetrics_Count

処理されたネットワークリクエストの合計数。

kafka_network_RequestMetrics_Mean

ネットワークリクエストの処理にかかる平均時間。

kafka_network_RequestMetrics_MeanRate

1 秒あたりのネットワークリクエストの平均レート。

kafka_network_Acceptor_MeanRate

1 秒あたりに受け入れられる接続の平均レート。

kafka_server_Fetch_queue_size

フェッチリクエストキューの現在のサイズ。

kafka_server_Produce_queue_size

作成リクエストキューの現在のサイズ。

kafka_server_Request_queue_size

一般的なリクエストキューの現在のサイズ。

kafka_server_BrokerTopicMetrics_Count

ブローカートピックオペレーション (メッセージイン/アウト、バイトイン/アウト) の合計数。

kafka_server_BrokerTopicMetrics_MeanRate

ブローカートピックオペレーションの 1 秒あたりの平均レート。

kafka_server_BrokerTopicMetrics_OneMinuteRate

ブローカートピックオペレーションの 1 分間の移動平均レート。

kafka_server_DelayedOperationPurgatory_Value

処理待ち状態での遅延オペレーションの現在の数 (完了待ち)。

kafka_server_DelayedFetchMetrics_MeanRate

1 秒あたりの遅延フェッチオペレーションの平均レート。

kafka_server_FetcherLagMetrics_Value

レプリカフェッチャースレッドの現在のラグ値 (リーダーからどの程度遅延しているか)。

kafka_server_FetcherStats_MeanRate

1 秒あたりのフェッチャーオペレーションの平均レート。

kafka_server_ReplicaManager_Value

レプリカマネージャーの現在の状態または値。

kafka_server_ReplicaManager_MeanRate

1 秒あたりのレプリカマネージャーオペレーションの平均レート。

kafka_server_LeaderReplication_byte_rate

このブローカーがリーダーであるパーティションの 1 秒あたりのレプリケートされたバイト数。

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

1 秒あたりのオフセットコミット操作のレート。

kafka_server_socket_server_metrics_connection_count

アクティブな接続の現在の数。

kafka_server_socket_server_metrics_connection_creation_rate

1 秒あたりの新しい接続作成のレート。

kafka_server_socket_server_metrics_connection_close_rate

1 秒あたりの接続閉鎖のレート。

kafka_server_socket_server_metrics_failed_authentication_total

失敗した認証試行の合計数。

kafka_server_socket_server_metrics_incoming_byte_rate

1 秒あたりの受信バイトのレート。

kafka_server_socket_server_metrics_outgoing_byte_rate

1 秒あたりの送信バイトのレート。

kafka_server_socket_server_metrics_request_rate

1 秒あたりのリクエストのレート。

kafka_server_socket_server_metrics_response_rate

1 秒あたりのレスポンスのレート。

kafka_server_socket_server_metrics_network_io_rate

1 秒あたりのネットワーク 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

コントローラーチャネルの 1 秒あたりの受信バイトのレート。

kafka_server_controller_channel_metrics_outgoing_byte_rate

コントローラーチャネルの 1 秒あたりの送信バイトのレート。

kafka_server_controller_channel_metrics_request_rate

コントローラーチャネルの 1 秒あたりのリクエストのレート。

kafka_server_replica_fetcher_metrics_connection_count

レプリカフェッチャーのアクティブな接続の現在の数。

kafka_server_replica_fetcher_metrics_incoming_byte_rate

レプリカフェッチャーの 1 秒あたりの受信バイトのレート。

kafka_server_replica_fetcher_metrics_request_rate

レプリカフェッチャーの 1 秒あたりのリクエストのレート。

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_bytes

非ルートユーザー用のバイト単位の使用可能なファイルシステムスペース (デバイスとマウントポイント別に分類)。

node_filesystem_size_bytes

バイト単位のファイルシステムの合計サイズ (デバイスとマウントポイント別に分類)。

node_filesystem_free_bytes

バイト単位の空きファイルシステムスペース (デバイスとマウントポイント別に分類)。

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 マッピングをサポートしています。