

# VPC 接続マネージドコレクター
<a name="managed-prometheus-collectors-vpc-setup"></a>

VPC 接続 Amazon CloudWatch マネージド Prometheus コレクターは、Amazon EC2 インスタンスや Amazon ECS タスクなど、VPC 内で到達可能な任意のリソースから Prometheus 互換メトリクスをスクレイプします。サブネットとセキュリティグループを提供すると、コレクターは Elastic Network Interface (ENI) を作成し、設定に従って Prometheus `/metrics` エンドポイントをスクレイプします。

ワークロードに特化した詳細なチュートリアルについては、Prometheus メトリクス収集用の CloudWatch オブザーバビリティソリューション ([Amazon CloudWatch ソリューション: Amazon EC2 での Prometheus メトリクス収集](Solution-Prometheus-On-EC2.md) および [Amazon CloudWatch ソリューション: Amazon ECS での Prometheus メトリクス収集](Solution-Prometheus-On-ECS.md)) を参照してください。

## 前提条件
<a name="managed-prometheus-collectors-vpc-prerequisites"></a>

この手順では、Amazon VPC サブネット、セキュリティグループ、および Prometheus エクスポーターエンドポイントに関する知識があることを前提としています。
+ DNS が有効な Amazon VPC
+ 異なるアベイラビリティーゾーンにある少なくとも 2 つのサブネット
+ コレクターがターゲットエクスポーターポートに到達できるようにするセキュリティグループ
+ Prometheus 互換の `/metrics` エンドポイントを公開するターゲット

コレクターは、パブリックインターネットを経由せず、スクレイプしたメトリクスを AWS ネットワークを介して CloudWatch に配信します。指定したサブネットとセキュリティグループは、スクレイプターゲットへの接続性を提供しますが、CloudWatch への配信パスは提供しません。メトリクス配信のために、VPC 内のインターネットアクセス、NAT ゲートウェイ、または CloudWatch インターフェイス VPC エンドポイントを構成する必要はありません。

## スクレイパーの作成
<a name="managed-prometheus-collectors-vpc-create-scraper"></a>

[GetDefaultScraperConfiguration](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_GetDefaultScraperConfiguration.html) を使用して、汎用スクレーパー設定を取得するか、独自のものを提供できます。

------
#### [ AWS API ]

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

```
POST /scrapers HTTP/1.1

{
  "alias": "vpc-metrics-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 "vpc-metrics-scraper" \
  --source '{
    "vpcConfiguration": {
      "subnetIds": ["{{subnet-subnet-id-1}}", "{{subnet-subnet-id-2}}"],
      "securityGroupIds": ["{{sg-security-group-id}}"]
    }
  }' \
  --scrape-configuration configurationBlob=$(cat {{scrape-config.yaml}} | base64 -w 0) \
  --destination '{
    "cloudWatchConfiguration": {
      "datasetArn": "arn:aws:cloudwatch:{{us-west-2}}:{{123456789012}}:dataset/default"
    }
  }'
```

------

## Amazon EC2 からのメトリクス収集
<a name="managed-prometheus-collectors-vpc-ec2"></a>

DCGM Exporter や Node Exporter などの Prometheus エクスポーターを実行している Amazon EC2 インスタンスからメトリクスをスクレイプするには、インスタンスのプライベート IP アドレスとともに `static_configs` を使用します:

```
global:
  scrape_interval: 60s

scrape_configs:
  - job_name: 'ec2-node-exporter'
    static_configs:
      - targets:
          - '{{10.0.1.10}}:9100'
          - '{{10.0.1.11}}:9100'
    relabel_configs:
      - source_labels: [__address__]
        target_label: instance
      - target_label: compute_platform
        replacement: 'ec2'

  - job_name: 'ec2-dcgm-exporter'
    static_configs:
      - targets:
          - '{{10.0.1.10}}:9400'
          - '{{10.0.1.11}}:9400'
    relabel_configs:
      - source_labels: [__address__]
        target_label: instance
      - target_label: compute_platform
        replacement: 'ec2'
```

## Amazon ECS からのメトリクス収集
<a name="managed-prometheus-collectors-vpc-ecs"></a>

AWS Cloud Map に登録する Amazon ECS タスクの場合は、DNS サービス検出を使用して、コンテナを自動的に検出およびスクレイプします:

```
global:
  scrape_interval: 60s

scrape_configs:
  - job_name: 'ecs-services'
    dns_sd_configs:
      - names:
          - '{{my-service.my-namespace.local}}'
        type: A
        port: 9090
    relabel_configs:
      - source_labels: [__meta_dns_name]
        target_label: service_name
      - source_labels: [__address__]
        target_label: instance
      - target_label: compute_platform
        replacement: 'ecs'
```

## クロス アカウント オブザーバビリティ
<a name="managed-prometheus-collectors-vpc-cross-account"></a>

クロスアカウントの VPC モニタリングでは、Amazon CloudWatch メトリクスの一元化を使用することをお勧めします。詳細については、「[CloudWatch メトリクスの一元化](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html)」を参照してください。

代替のクロスアカウンタースクレイパー設定については、*Amazon Managed Service for Prometheus ユーザーガイド*の「[クロスアカウンタースクレイパー](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector-cross-account.html)」を参照してください。

## セキュリティのベストプラクティス
<a name="managed-prometheus-collectors-vpc-security"></a>
+ コレクター ENI には、直接インターネットアクセスを持たないプライベートサブネットを指定します。
+ セキュリティグループのイングレスを、特定のエクスポーターポート上のスクレイパーセキュリティグループのみに制限します。
+ 可能な限り、すべてのエクスポーターエンドポイントで転送中の TLS 暗号化を有効にします。