View a markdown version of this page

Amazon CloudWatch ソリューション: Amazon EC2 での Prometheus メトリクス収集 - Amazon CloudWatch

Amazon CloudWatch ソリューション: Amazon EC2 での Prometheus メトリクス収集

このソリューションでは、独自の収集インフラストラクチャを実行またはスケーリングせずに、Amazon EC2 インスタンスから Prometheus 互換メトリクスを収集できます。インスタンス上で 1 つ以上の Prometheus エクスポーターを実行すると、Amazon CloudWatch マネージド Prometheus コレクターが VPC 内のターゲットを検出し、それらの /metrics エンドポイントをスクレイプして、メトリクスを CloudWatch に配信します。すべての CloudWatch オブザーバビリティソリューションの一般的な情報については、「CloudWatch オブザーバビリティソリューション」を参照してください。マネージドコレクターの詳細については、「Amazon CloudWatch マネージド Prometheus コレクター」を参照してください。

要件

このソリューションは、以下の条件に適しています。

  • コンピューティング: 1 つ以上の Prometheus エクスポーターを実行する Amazon EC2 インスタンス。

  • DNS が有効化された Amazon VPC と、コレクター用の異なるアベイラビリティーゾーンにある少なくとも 2 つのサブネット。

  • コレクターがインスタンス上のエクスポーターポートに到達できるようにするセキュリティグループ。

Prometheus エクスポーターを有効にする

Prometheus エクスポーターは、HTTP Prometheus エンドポイントで /metrics 表記形式のメトリクスを公開するプロセスです。モニタリングしたいワークロードと一致するエクスポーターを実行します。Amazon EC2 上で一般的に使用されるエクスポーターを以下に示します:

  • Node Exporter – CPU、メモリ、ディスク、ネットワークなどのホストレベルのインフラストラクチャメトリクス (デフォルトポート 9100)。詳細については、GitHub の「Node Exporter リポジトリ」を参照してください。

  • JMX Exporter – Java ワークロード向けの JVM および Java アプリケーションメトリクス。詳細については、GitHub の「JMX Exporter リポジトリ」を参照してください。

  • NGINX Prometheus Exporter – NGINX ウェブサーバーおよびリバースプロキシメトリクス。詳細については、GitHub の「NGINX Prometheus Exporter リポジトリ」を参照してください。

  • DCGM Exporter – 機械学習トレーニングや推論などの GPU ワークロード向けの NVIDIA GPU メトリクス (デフォルトポート 9400)。詳細については、GitHub の「DCGM Exporter リポジトリ」を参照してください。

  • HAProxy Exporter – HAProxy ロードバランサーメトリクス。詳細については、GitHub の「HAProxy Exporter リポジトリ」を参照してください。

  • Apache Exporter – Apache HTTP Server メトリクス。詳細については、GitHub の「Apache Exporter リポジトリ」を参照してください。

各エクスポーターを、その公式ドキュメントに従って、インスタンス上にインストールして実行します。スクレイプ構成でこれらのポートを参照するので、各エクスポーターがリッスンするポートを書き留めます。利用可能なエクスポーターの完全なカタログについては、Prometheus ドキュメントの「エクスポーターと統合」を参照してください。

エクスポーターを起動した後、インスタンスからエンドポイントをクエリして、メトリクスが公開されていることを確認します。

curl http://localhost:port-number/metrics

ステップ 1: スクレイプ構成をセットアップする

次の例では、インスタンスのプライベート DNS 名を持つ static_configs を使用して、Amazon EC2 インスタンス上のサンプルアプリケーション (ポート 8080) と Node Exporter (ポート 9100) をスクレイプします。relabel_configs セクションでは、サービス間でクエリおよびフィルターを実行できるように、メトリクスに一貫したラベルを追加します。サポートされている構成オプションの完全なセットについては、「スクレイパー設定」を参照してください。

global: scrape_interval: 30s scrape_timeout: 10s scrape_configs: - job_name: 'ec2-metrics' static_configs: - targets: - ip-ip-address.us-west-2.compute.internal:8080 metrics_path: '/metrics' relabel_configs: - source_labels: [__address__] target_label: instance replacement: 'ec2-metrics-instance' - target_label: service replacement: 'ec2-metrics' - target_label: environment replacement: 'dev' metric_relabel_configs: - source_labels: [__name__] regex: '.*' action: keep - job_name: ec2-node-exporter static_configs: - targets: - ip-ip-address.us-west-2.compute.internal:9100

ステップ 2: スクレーパーをセットアップする

インスタンスをスクレイプし、メトリクスを CloudWatch データセットに配信する VPC 接続マネージドコレクターを作成します。コレクターがエクスポーターポートに到達できるようにするサブネットとセキュリティグループを指定します。

GetDefaultScraperConfiguration を使用して、汎用スクレーパー設定を取得するか、独自のものを提供できます。

AWS API

CreateScraper API オペレーションを使用して、CloudWatch 送信先を持つスクレーパーを作成します。サブネット、セキュリティグループ、データセット情報を独自の值に置き換えます。

POST /scrapers HTTP/1.1 { "alias": "ec2-payment-service-scraper", "source": { "vpcConfiguration": { "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"], "securityGroupIds": ["sg-security-group-id"] } }, "destination": { "cloudWatchConfiguration": { "datasetArn": "arn:aws:cloudwatch:us-west-2:123456789012:dataset/default" } }, "scrapeConfiguration": { "configurationBlob": "base64-encoded-blob" } }
AWS CLI

create-scraper コマンドを使用して、CloudWatch 送信先を持つスクレーパーを作成します。サブネット、セキュリティグループ、データセット情報を独自の值に置き換えます。

aws amp create-scraper \ --alias "ec2-payment-service-scraper" \ --source '{ "vpcConfiguration": { "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"], "securityGroupIds": ["sg-security-group-id"] } }' \ --scrape-configuration configurationBlob=$(cat ec2-scraper.yml | base64 -w 0) \ --destination '{ "cloudWatchConfiguration": { "datasetArn": "arn:aws:cloudwatch:us-west-2:123456789012:dataset/default" } }'

マネージドコレクターを作成すると、Amazon Managed Service for Prometheus は、VPC リソースへのアクセスと CloudWatch データセットへの書き込みを行うためのアクセス許可をコレクターに付与するサービスにリンクされたロールを自動的に作成します。

メトリクスの収集を検証する

数分以内に、メトリクスが CloudWatch データセットに流れ始めます。メトリクスが到着していることを確認するには、Query Studio を使用して CloudWatch でアドホッククエリを実行します。例えば、次のクエリは ec2-metrics ジョブのメトリクスを返します。

{job="ec2-metrics"}

カスタムダッシュボードを構築する

コレクターが Amazon EC2 メトリクスを CloudWatch に配信し始めたら、それらを可視化するためのカスタム CloudWatch ダッシュボードを構築できます。カスタムダッシュボードでは、Prometheus エクスポーターからのメトリクスをウィジェットに組み合わせ、PromQL ベースのクエリを追加し、モニタリングニーズに合わせてウィジェットを整理できます。詳細については、「CloudWatch ダッシュボードの使用」を参照してください。

コスト

Prometheus コレクターについては時間単位で課金され、CloudWatch OpenTelemetry メトリクスの取り込み料金が適用されます。CloudWatch の料金の詳細については、「Amazon CloudWatch の料金」をご覧ください。