

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon EKS のマネージドコレクターを設定する
<a name="AMP-collector-how-to"></a>

Amazon Managed Service for Prometheus コレクターを使用するには、Amazon EKS クラスター内のメトリクスを検出して取得するスクレイパーを作成します。Amazon Managed Streaming for Apache Kafka と統合するスクレイパーを作成することもできます。詳細については、「[Amazon MSK の統合](https://docs.aws.amazon.com/prometheus/latest/userguide/prom-msk-integration.html)」を参照してください。
+ Amazon EKS クラスターを作成するときに、スクレイパーを作成できます。スクレイパーの作成を含め、Amazon EKS クラスターの作成に関する詳細については、「Amazon EKS ユーザーガイド**」の「[Amazon EKS クラスターの作成](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html)」を参照してください。
+  AWS API を使用してプログラムで、または を使用して、独自のスクレイパーを作成できます AWS CLI。

Amazon Managed Service for Prometheus コレクターは、Prometheus と互換性のあるメトリクスをスクレイピングします。Prometheus 互換メトリクスの詳細については、「[Prometheus と互換性のあるメトリクスとはどのようなものですか。](prom-compatible-metrics.md)」を参照してください。Amazon EKS クラスターは、API サーバーのメトリクスを公開します。Kubernete バージョン `1.28` 以降の Amazon EKS クラスターは、`kube-scheduler` と `kube-controller-manager` のメトリクスも公開します。詳細については、「*Amazon EKS ユーザーガイド*」の「[コントロールプレーンの未加工メトリクスを Prometheus 形式で取得する](https://docs.aws.amazon.com/eks/latest/userguide/view-raw-metrics.html#scheduler-controller-metrics)」を参照してください。

**注記**  
クラスターからメトリクスをスクレイピングすると、ネットワークの使用に対して料金が発生する場合があります。これらのコストを最適化する 1 つの方法は、提供されたメトリクスを圧縮 (gzip などを使用) するように `/metrics` エンドポイントを設定し、ネットワーク全体で移動する必要があるデータを減らすことです。これを行う方法は、メトリクスを提供するアプリケーションまたはライブラリによって異なります。一部のライブラリは、デフォルトで gzip を使用します。

以下のトピックでは、スクレイパーを作成、管理、および設定する方法について説明します。

**Topics**
+ [スクレイパーの作成](#AMP-collector-create)
+ [Amazon EKS クラスターの設定](#AMP-collector-eks-setup)
+ [スクレイパーの検出と削除](#AMP-collector-list-delete)
+ [スクレイパー設定](#AMP-collector-configuration)
+ [スクレイパー設定のトラブルシューティング](#AMP-collector-troubleshoot)
+ [スクレイパーの制限事項](#AMP-collector-limits)

## スクレイパーの作成
<a name="AMP-collector-create"></a>

Amazon Managed Service for Prometheus コレクターは、Amazon EKS クラスターからメトリクスを検出して収集するスクレイパーで構成されています。Amazon Managed Service for Prometheus ではお客様に代わってスクレイパーが管理されます。インスタンス、エージェント、スクレイパーをご自身で管理しなくても、必要なスケーラビリティ、セキュリティ、信頼性を実現できます。

スクレイパーを作成する方法は 3 つあります。
+ [Amazon EKS コンソールから Amazon EKS クラスターを作成](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html)して、Prometheus メトリクスをオンにすると、スクレイパーが自動的に作成されます。
+ スクレイパーは、既存のクラスターの Amazon EKS コンソールから作成できます。[Amazon EKS コンソール](https://console.aws.amazon.com/eks/home#/clusters)でクラスターを開き、**[オブザーバビリティ]** タブで **[スクレイパーを追加]** を選択します。

  使用可能な設定の詳細については、「*Amazon EKS ユーザーガイド*」の「[Prometheus メトリクスを有効にする](https://docs.aws.amazon.com/eks/latest/userguide/prometheus.html#turn-on-prometheus-metrics)」を参照してください。
+  AWS API または を使用してスクレイパーを作成できます AWS CLI。

  これらのオプションについて、次の手順で説明します。

独自のスクレイパーを作成するには、いくつかの前提条件があります。
+ Amazon EKS クラスターが作成済みである必要があります。
+ Amazon EKS クラスターは、[クラスターエンドポイントアクセスコントロール](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html)がプライベートアクセスを含むように設定されている必要があります。プライベートとパブリックを含めることができますが、プライベートを含める必要があります。
+ Amazon EKS クラスターが存在する Amazon VPC では、[DNS が有効](https://docs.aws.amazon.com/vpc/latest/userguide/AmazonDNS-concepts.html)になっている必要があります。

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

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

** AWS API を使用してスクレイパーを作成するには**

`CreateScraper` API オペレーションを使用して、 AWS API でスクレイパーを作成します。次の例では、`us-west-2` リージョンでスクレイパーを作成します。 AWS アカウント、ワークスペース、セキュリティ、Amazon EKS クラスター情報を独自の ID に置き換え、スクレイパーに使用する設定を指定する必要があります。

**注記**  
セキュリティグループとサブネットは、接続先のクラスターのセキュリティグループとサブネットに設定する必要があります。  
少なくとも 2 つ以上のアベイラビリティーゾーンにある 2 つ以上のサブネットを含める必要があります。

`scrapeConfiguration` は、base64 でエンコードされた Prometheus 設定 YAML ファイルです。`GetDefaultScraperConfiguration` API オペレーションで汎用設定をダウンロードできます。`scrapeConfiguration` の形式の詳細については、「[スクレイパー設定](#AMP-collector-configuration)」を参照してください。

```
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-west-2:account-id:workspace/ws-workspace-id"
        }
    },
    "source": {
        "eksConfiguration": {
            "clusterArn": "arn:aws:eks:us-west-2:account-id:cluster/cluster-name",
            "securityGroupIds": ["sg-security-group-id"],
            "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"]
        }
    },
    "scrapeConfiguration": {
        "configurationBlob": <base64-encoded-blob>
    }
}
```

------
#### [ AWS CLI ]

** AWS CLIを使用してスクレイパーを作成するには**

`create-scraper` コマンドを使用して AWS CLIでスクレイパーを作成します。次の例では、`us-west-2` リージョンでスクレイパーを作成します。 AWS アカウント、ワークスペース、セキュリティ、Amazon EKS クラスター情報を独自の ID に置き換え、スクレイパーに使用する設定を指定する必要があります。

**注記**  
セキュリティグループとサブネットは、接続先のクラスターのセキュリティグループとサブネットに設定する必要があります。  
少なくとも 2 つ以上のアベイラビリティーゾーンにある 2 つ以上のサブネットを含める必要があります。

`scrape-configuration` は、base64 でエンコードされた Prometheus 設定 YAML ファイルです。汎用設定は、`get-default-scraper-configuration` コマンドを使用してダウンロードできます。`scrape-configuration` の形式の詳細については、「[スクレイパー設定](#AMP-collector-configuration)」を参照してください。

```
aws amp create-scraper \
  --source eksConfiguration="{clusterArn='arn:aws:eks:us-west-2:account-id:cluster/cluster-name', 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:account-id:workspace/ws-workspace-id'}"
```

------

以下は、 AWS API で使用できるスクレイパーオペレーションの完全なリストです。
+ [CreateScraper](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_CreateScraper.html) API オペレーションを使用してスクレイパーを作成します。
+ [ListScrapers](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_ListScrapers.html) API オペレーションを使用して既存のスクレイパーを一覧表示します。
+ [UpdateScraper](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_UpdateScraper.html) API オペレーションを使用して、スクレイパーのエイリアス、設定、または送信先を更新します。
+ [DeleteScraper](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_DeleteScraper.html) API オペレーションを使用してスクレイパーを削除します。
+ [DescribeScraper](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_DescribeScraper.html) API オペレーションを使用してスクレイパーの詳細を取得します。
+ [GetDefaultScraperConfiguration](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_GetDefaultScraperConfiguration.html) API オペレーションを使用してスクレイパーの汎用設定を取得します。

**注記**  
スクレイピングする Amazon EKS クラスターは、Amazon Managed Service for Prometheus がメトリクスにアクセスできるように設定されている必要があります。次のトピックでは、クラスターの設定方法について説明します。

### クロスアカウントの設定
<a name="cross-account-remote-write"></a>

Amazon EKS クラスターと Amazon Managed Service for Prometheus ワークスペースが異なるアカウントにあるときにクロスアカウントスクレイパーを作成するには、次の手順を使用します。例えば、Amazon EKS クラスターを含むソースアカウント `account_id_source` と、Amazon Managed Service for Prometheus ワークスペースを含むターゲットアカウント `account_id_target` があるとします。

**クロスアカウント設定でスクレイパーを作成するには**

1. ソースアカウントで、ロール `arn:aws:iam::account_id_source:role/Source` を作成し、次の信頼ポリシーを追加します。

   ```
   {
       "Effect": "Allow",
       "Principal": {
       "Service": [
           "scraper.aps.amazonaws.com"
        ]
       },
       "Action": "sts:AssumeRole",
       "Condition": {
           "ArnEquals": {
               "aws:SourceArn": "scraper_ARN"
           },
           "StringEquals": {
               "AWS:SourceAccount": "account_id"
           }
       }
   }
   ```

1. ソース (Amazon EKS クラスター) とターゲット (Amazon Managed Service for Prometheus ワークスペース) のすべての組み合わせで、ロール `arn:aws:iam::account_id_target:role/Target` を作成し、[AmazonPrometheusRemoteWriteAccess](https://docs.aws.amazon.com/prometheus/latest/userguide/security-iam-awsmanpol.html) のアクセス許可を持つ次の信頼ポリシーを追加する必要があります。

   ```
   {
     "Effect": "Allow",
     "Principal": {
        "AWS": "arn:aws:iam::account_id_source:role/Source"
     },
     "Action": "sts:AssumeRole",
     "Condition": {
        "StringEquals": {
           "sts:ExternalId": "scraper_ARN"
         }
     }
   }
   ```

1. `--role-configuration` オプションを使用してスクレイパーを作成します。

   ```
   aws amp create-scraper \
     --source eksConfiguration="{clusterArn='arn:aws:eks:us-west-2:account-id_source:cluster/xarw,subnetIds=[subnet-subnet-id]}" \
     --scrape-configuration configurationBlob=<base64-encoded-blob> \
     --destination ampConfiguration="{workspaceArn='arn:aws:aps:us-west-2:account-id_target:workspace/ws-workspace-id'}"\
     --role-configuration '{"sourceRoleArn":"arn:aws:iam::account-id_source:role/Source", "targetRoleArn":"arn:aws:iam::account-id_target:role/Target"}'
   ```

1. スクレイパーの作成を検証します。

   ```
   aws amp list-scrapers
   {
       "scrapers": [
           {
               "scraperId": "scraper-id",
               "arn": "arn:aws:aps:us-west-2:account_id_source:scraper/scraper-id",
               "roleArn": "arn:aws:iam::account_id_source:role/aws-service-role/scraper.aps.amazonaws.com/AWSServiceRoleForAmazonPrometheusScraperInternal_cc319052-41a3-4",
               "status": {
                   "statusCode": "ACTIVE"
               },
               "createdAt": "2024-10-29T16:37:58.789000+00:00",
               "lastModifiedAt": "2024-10-29T16:55:17.085000+00:00",
               "tags": {},
               "source": {
                   "eksConfiguration": {
                       "clusterArn": "arn:aws:eks:us-west-2:account_id_source:cluster/xarw",
                       "securityGroupIds": [
                           "sg-security-group-id",
                           "sg-security-group-id"
                       ],
                       "subnetIds": [
                           "subnet-subnet_id"
                       ]
                   }
               },
               "destination": {
                   "ampConfiguration": {
                       "workspaceArn": "arn:aws:aps:us-west-2:account_id_target:workspace/ws-workspace-id"
                   }
               }
           }
       ]
   }
   ```

### RoleConfiguration とサービスにリンクされたロールの間の変更
<a name="changing-roles"></a>

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

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

### カスタマーマネージドキーで有効になっているワークスペース用のスクレイパーの作成
<a name="setup-customer-managed-keys"></a>

[カスタマーマネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)を使用して Amazon Managed Service for Prometheus ワークスペースにメトリクスを取り込むスクレイパーを作成するには、ソースとターゲットの両方を同じアカウントに設定した `--role-configuration` を使用します。

```
aws amp create-scraper \
  --source eksConfiguration="{clusterArn='arn:aws:eks:us-west-2:account-id:cluster/xarw,subnetIds=[subnet-subnet_id]}" \
  --scrape-configuration configurationBlob=<base64-encoded-blob> \
  --destination ampConfiguration="{workspaceArn='arn:aws:aps:us-west-2:account-id:workspace/ws-workspace-id'}"\
  --role-configuration '{"sourceRoleArn":"arn:aws:iam::account_id:role/Source", "targetRoleArn":"arn:aws:iam::account_id:role/Target"}'
```

### スクレイパー作成時の一般的なエラー
<a name="AMP-collector-create-errors"></a>

以下は、新しいスクレイパーの作成時に発生する場合がある最も一般的な問題です。
+ 必要な AWS リソースが存在しません。指定した*セキュリティグループ*、*サブネット*、*Amazon EKS クラスター*が存在している必要があります。
+ IP アドレス領域が不足しています。`CreateScraper` API に渡すサブネットごとに、少なくとも 1 つの IP アドレスが必要です。

## Amazon EKS クラスターの設定
<a name="AMP-collector-eks-setup"></a>

Amazon EKS クラスターは、スクレイパーがメトリクスにアクセスできるように設定する必要があります。この設定には 2 つのオプションがあります。
+ Amazon EKS の*アクセスエントリ*を使用して、Amazon Managed Service for Prometheus コレクターにクラスターへのアクセス権を自動的に付与します。
+ Amazon EKS クラスターをマネージドメトリクススクレイピング用に手動で設定します。

以下のトピックで、これらの各手順について詳しく説明します。

### アクセスエントリを使用してスクレイパーアクセス用に Amazon EKS を設定する
<a name="AMP-collector-eks-access-entry-setup"></a>

Amazon EKS のアクセスエントリを使用することは、クラスターからメトリクスをスクレイピングするためのアクセス権を Amazon Managed Service for Prometheus に付与する最も簡単な方法です。

スクレイピングする Amazon EKS クラスターは、API 認証を許可するように設定する必要があります。クラスター認証モードは、`API` または `API_AND_CONFIG_MAP` に設定する必要があります。これは、Amazon EKS コンソールのクラスター詳細の **[アクセス設定]** タブで確認できます。詳細については、「*Amazon EKS ユーザーガイド*」の「[Amazon EKS クラスターで Kubernetes オブジェクトへのアクセスを IAM ロールまたはユーザーに許可する](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html)」を参照してください。

クラスターの作成時または作成後にスクレイパーを作成できます。
+ **クラスターの作成時** - [Amazon EKS コンソールを使用して Amazon EKS クラスターを作成する](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html)ときに (クラスターの一部としてスクレイパーを作成する手順に従って)、このアクセスを設定できます。アクセスエントリポリシーが自動的に作成され、クラスターメトリクスへのアクセスが Amazon Managed Service for Prometheus に許可されます。
+ **クラスターの作成後に追加** - Amazon EKS クラスターが既に存在する場合は、認証モードを `API` または `API_AND_CONFIG_MAP` に設定します。[Amazon Managed Service for Prometheus API または CLI を使用して](#AMP-collector-create)、または Amazon EKS コンソールを使用して作成したスクレイパーには、自動的に正しいアクセスエントリポリシーが作成され、スクレイパーからクラスターにアクセスできるようになります。

**アクセスエントリポリシーの作成**

スクレイパーを作成し、Amazon Managed Service for Prometheus でアクセスエントリポリシーを自動的に生成できるようにすると、次のポリシーが生成されます。アクセスエントリの詳細については、「*Amazon EKS ユーザーガイド*」の「[IAM ロールまたはユーザーに Kubernetes へのアクセスを許可する](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html)」を参照してください。

```
{
    "rules": [
        {
            "effect": "allow",
            "apiGroups": [
                ""
            ],
            "resources": [
                "nodes",
                "nodes/proxy",
                "nodes/metrics",
                "services",
                "endpoints",
                "pods",
                "ingresses",
                "configmaps"
            ],
            "verbs": [
                "get",
                "list",
                "watch"
            ]
        },
        {
            "effect": "allow",
            "apiGroups": [
                "extensions",
                "networking.k8s.io"
            ],
            "resources": [
                "ingresses/status",
                "ingresses"
            ],
            "verbs": [
                "get",
                "list",
                "watch"
            ]
        },
        {
            "effect": "allow",
            "apiGroups": [
                "metrics.eks.amazonaws.com"
            ],
            "resources": [
                "kcm/metrics",
                "ksh/metrics"
            ],
            "verbs": [
                "get"
            ]
        },
        {
            "effect": "allow",
            "nonResourceURLs": [
                "/metrics"
            ],
            "verbs": [
                "get"
            ]
        }
    ]
}
```

### スクレイパーアクセス用に Amazon EKS を手動で設定する
<a name="AMP-collector-eks-manual-setup"></a>

`aws-auth ConfigMap` を使用して kubernetes クラスターへのアクセスを制御する場合でも、Amazon Managed Service for Prometheus スクレイパーにメトリクスへのアクセスを許可できます。次の手順では、Amazon Managed Service for Prometheus に対して、Amazon EKS クラスターのメトリクスをスクレイピングするためのアクセス権を付与します。

**注記**  
`ConfigMap` およびアクセスエントリの詳細については、「*Amazon EKS ユーザーガイド*」の「[IAM ロールまたはユーザーに Kubernetes へのアクセスを許可する](https://docs.aws.amazon.com/eks/latest/userguide/access-entries.html)」を参照してください。

この手順では、 `kubectl`と CLI AWS を使用します。`kubectl` のインストールの詳細については、「Amazon EKS ユーザーガイド**」の「[kubectl のインストール](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)」を参照してください。

**Amazon EKS クラスターをマネージドメトリクスクレイピング用に手動で設定するには**

1. `clusterrole-binding.yml` という名前のファイルを作成し、次のテキストを記述します。

   ```
   apiVersion: rbac.authorization.k8s.io/v1
   kind: ClusterRole
   metadata:
     name: aps-collector-role
   rules:
     - apiGroups: [""]
       resources: ["nodes", "nodes/proxy", "nodes/metrics", "services", "endpoints", "pods", "ingresses", "configmaps"]
       verbs: ["describe", "get", "list", "watch"]
     - apiGroups: ["extensions", "networking.k8s.io"]
       resources: ["ingresses/status", "ingresses"]
       verbs: ["describe", "get", "list", "watch"]
     - nonResourceURLs: ["/metrics"]
       verbs: ["get"]
     - apiGroups: ["metrics.eks.amazonaws.com"]
       resources: ["kcm/metrics", "ksh/metrics"]
       verbs: ["get"]
   ---
   apiVersion: rbac.authorization.k8s.io/v1
   kind: ClusterRoleBinding
   metadata:
     name: aps-collector-user-role-binding
   subjects:
   - kind: User
     name: aps-collector-user
     apiGroup: rbac.authorization.k8s.io
   roleRef:
     kind: ClusterRole
     name: aps-collector-role
     apiGroup: rbac.authorization.k8s.io
   ```

1. クラスターで次のコマンドを実行します。

   ```
   kubectl apply -f clusterrole-binding.yml
   ```

   これにより、クラスターのロールバインディングとルールが作成されます。この例では、`aps-collector-role` をロール名、`aps-collector-user` をユーザー名として使用しています。

1. 次のコマンドは、*scraper-id* という ID のスクレイパーに関する情報を提供します。これは、前のセクションのコマンドを使用して作成したスクレイパーです。

   ```
   aws amp describe-scraper --scraper-id scraper-id
   ```

1. `describe-scraper` の結果から `roleArn` を探します。この形式は次のようになります。

   ```
   arn:aws:iam::account-id:role/aws-service-role/scraper.aps.amazonaws.com/AWSServiceRoleForAmazonPrometheusScraper_unique-id
   ```

   Amazon EKS では、この ARN に別の形式が必要です。次のステップで使用するために、返される ARN の形式を調整する必要があります。この形式に合わせて編集してください。

   ```
   arn:aws:iam::account-id:role/AWSServiceRoleForAmazonPrometheusScraper_unique-id
   ```

   例えば、この ARN の場合、

   ```
   arn:aws:iam::111122223333:role/aws-service-role/scraper.aps.amazonaws.com/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-56ef-7
   ```

   以下のように記述する必要があります。

   ```
   arn:aws:iam::111122223333:role/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-56ef-7
   ```

1. 前のステップで変更した `roleArn` と、クラスター名およびリージョンを使用して、クラスター内で以下のコマンドを実行します。

   ```
   eksctl create iamidentitymapping --cluster cluster-name --region region-id --arn roleArn --username aps-collector-user
   ```

   これにより、スクレイパーは `clusterrole-binding.yml` ファイルに作成したロールとユーザーを使用してクラスターにアクセスできます。

## スクレイパーの検出と削除
<a name="AMP-collector-list-delete"></a>

 AWS API または を使用して AWS CLI 、アカウントのスクレイパーを一覧表示したり、削除したりできます。

**注記**  
最新バージョンの AWS CLI または SDK を使用していることを確認します。最新バージョンには、最新の特長と機能に加え、セキュリティアップデートも含まれています。または、常に最新のコマンドラインエクスペリエンスを提供する [AWS CloudShell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html) を自動的に使用します。

アカウント内のすべてのスクレイパーを一覧表示するには、[ListScrapers](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_ListScrapers.html) API オペレーションを使用します。

または、 を使用して AWS CLIを呼び出します。

```
aws amp list-scrapers --region aws-region
```

`ListScrapers` は、アカウント内のすべてのスクレイパーを返します。例:

```
{
    "scrapers": [
        {
            "scraperId": "s-1234abcd-56ef-7890-abcd-1234ef567890",
            "arn": "arn:aws:aps:us-west-2: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": {
                "eksConfiguration": {
                    "clusterArn": "arn:aws:eks:us-west-2:123456789012:cluster/my-cluster",
                    "securityGroupIds": [
                        "sg-1234abcd5678ef90"
                    ],
                    "subnetIds": [
                        "subnet-abcd1234ef567890", 
                        "subnet-1234abcd5678ab90"
                    ]
                }
            },
            "destination": {
                "ampConfiguration": {
                    "workspaceArn": "arn:aws:aps:us-west-2:123456789012:workspace/ws-1234abcd-5678-ef90-ab12-cdef3456a78"
                }
            }
        }
    ]
}
```

スクレイパーを削除するには、`ListScrapers` オペレーションを使用して削除するスクレイパーの `scraperId` を見つけ、[DeleteScraper](https://docs.aws.amazon.com/prometheus/latest/APIReference/API_DeleteScraper.html) オペレーションを使用して削除します。

または、 を使用して AWS CLIを呼び出します。

```
aws amp delete-scraper --scraper-id scraperId
```

## スクレイパー設定
<a name="AMP-collector-configuration"></a>

Prometheus 互換のスクレイパー設定を使用して、スクレイパーがメトリクスを検出して収集する方法を制御できます。例えば、メトリクスをワークスペースに送信する間隔を変更できます。再ラベル付けを使用して、メトリクスのラベルを動的に書き換えることもできます。スクレイパー設定は、スクレイパーの定義の一部である YAML ファイルです。

新しいスクレイパーを作成したら、API コールで base64 でエンコードされた YAML ファイルを提供して設定を指定します。Amazon Managed Service for Prometheus API の `GetDefaultScraperConfiguration` オペレーションを含む汎用設定ファイルをダウンロードできます。

スクレイパーの設定を変更するために、`UpdateScraper` オペレーションを使用できます。メトリクスのソース (別の Amazon EKS クラスターなど) を更新する必要がある場合は、スクレイパーを削除し、新しいソースで再作成する必要があります。

**サポートされている設定**

スクレイパーの設定形式に関する情報 (可能な値の詳細な内訳を含む) については、Prometheus ドキュメントの「[Configuration](https://prometheus.io/docs/prometheus/latest/configuration/configuration/)」を参照してください。グローバル設定オプションと `<scrape_config>` オプションには、最も一般的に必要なオプションが記載されています。

サポートされているサービスは Amazon EKS のみであるため、サポートされるサービス検出設定 (`<*_sd_config>`) は `<kubernetes_sd_config>` のみです。

許可される設定セクションの完全なリスト:
+ `<global>`
+ `<scrape_config>`
+ `<static_config>`
+ `<relabel_config>`
+ `<metric_relabel_configs>`
+ `<kubernetes_sd_config>`

これらのセクション内の制限は、サンプル設定ファイルの後に一覧表示されます。

**設定ファイルの例**

以下は、30 秒のスクレイプ間隔の YAML 設定ファイルのサンプルです。このサンプルには、kube API サーバーメトリクスと、kube-controller-manager および kube-scheduler メトリクスのサポートが含まれています。詳細については、「*Amazon EKS ユーザーガイド*」の「[コントロールプレーンの未加工メトリクスを Prometheus 形式で取得する](https://docs.aws.amazon.com/eks/latest/userguide/view-raw-metrics.html#scheduler-controller-metrics)」を参照してください。

```
global:
   scrape_interval: 30s
   external_labels:
     clusterArn: apiserver-test-2
scrape_configs:
  - job_name: pod_exporter
    kubernetes_sd_configs:
      - role: pod
  - job_name: cadvisor
    scheme: https
    authorization:
      type: Bearer
      credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
    kubernetes_sd_configs:
      - role: node
    relabel_configs:
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
      - replacement: kubernetes.default.svc:443
        target_label: __address__
      - source_labels: [__meta_kubernetes_node_name]
        regex: (.+)
        target_label: __metrics_path__
        replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor
  # apiserver metrics
  - scheme: https
    authorization:
      type: Bearer
      credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
    job_name: kubernetes-apiservers
    kubernetes_sd_configs:
    - role: endpoints
    relabel_configs:
    - action: keep
      regex: default;kubernetes;https
      source_labels:
      - __meta_kubernetes_namespace
      - __meta_kubernetes_service_name
      - __meta_kubernetes_endpoint_port_name
  # kube proxy metrics
  - job_name: kube-proxy
    honor_labels: true
    kubernetes_sd_configs:
    - role: pod
    relabel_configs:
    - action: keep
      source_labels:
      - __meta_kubernetes_namespace
      - __meta_kubernetes_pod_name
      separator: '/'
      regex: 'kube-system/kube-proxy.+'
    - source_labels:
      - __address__
      action: replace
      target_label: __address__
      regex: (.+?)(\\:\\d+)?
      replacement: $1:10249
  # Scheduler metrics
  - job_name: 'ksh-metrics'
    kubernetes_sd_configs:
    - role: endpoints
    metrics_path: /apis/metrics.eks.amazonaws.com/v1/ksh/container/metrics
    scheme: https
    bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
    relabel_configs:
    - source_labels:
      - __meta_kubernetes_namespace
      - __meta_kubernetes_service_name
      - __meta_kubernetes_endpoint_port_name
      action: keep
      regex: default;kubernetes;https
  # Controller Manager metrics
  - job_name: 'kcm-metrics'
    kubernetes_sd_configs:
    - role: endpoints
    metrics_path: /apis/metrics.eks.amazonaws.com/v1/kcm/container/metrics
    scheme: https
    bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
    relabel_configs:
    - source_labels:
      - __meta_kubernetes_namespace
      - __meta_kubernetes_service_name
      - __meta_kubernetes_endpoint_port_name
      action: keep
      regex: default;kubernetes;https
```

以下は、 AWS マネージドコレクターに固有の制限です。
+ **スクレイプ間隔** — スクレイパー設定では、30 秒未満のスクレイプ間隔を指定できません。
+ **ターゲット** — `static_config` 内のターゲットは IP アドレスとして指定する必要があります。
+ **DNS 解決** — ターゲット名に関連して、この設定で認識されるサーバー名は Kubernetes api サーバー `kubernetes.default.svc` のみです。他のすべてのマシン名は IP アドレスで指定する必要があります。
+ **認可** - 認可が必要ない場合は省略します。必要な場合、認可は `Bearer` でなければならず、ファイル `/var/run/secrets/kubernetes.io/serviceaccount/token` を指す必要があります。つまり、使用する場合、認可セクションは次のようになる必要があります。

  ```
      authorization:
        type: Bearer
        credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
  ```
**注記**  
`type: Bearer` はデフォルトであるため、省略できます。

## スクレイパー設定のトラブルシューティング
<a name="AMP-collector-troubleshoot"></a>

Amazon Managed Service for Prometheus コレクターは、メトリクスの検出と収集を自動的に行います。しかし、予想したメトリクスが Amazon Managed Service for Prometheus ワークスペースに表示されない場合、どのようにトラブルシューティングできるでしょうか。

**重要**  
Amazon EKS クラスターのプライベートアクセスが有効になっていることを確認します。詳細については、「*Amazon EKS ユーザーガイド*」の「[クラスタープライベートエンドポイント](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html#cluster-endpoint-private)」を参照してください。

`up` メトリクスは便利なツールです。Amazon Managed Service for Prometheus コレクターが検出した各エンドポイントについて、このメトリクスは自動的に送信されます。このメトリクスには 3 つの状態があり、コレクター内で発生している問題のトラブルシューティングに役立ちます。
+ `up` が存在しない — エンドポイントの `up` メトリクスが存在しない場合、コレクターがエンドポイントを検出できなかったことを意味します。

  エンドポイントが存在することが確実な場合、コレクターがエンドポイントを検出できない理由はいくつかあります。
  + スクレイプ設定を調整する必要がある場合があります。検出 `relabel_config` を調整する必要がある場合があります。
  + 検出に使用される `role` に問題がある可能性があります。
  + Amazon EKS クラスターで使用される Amazon VPC で [DNS が有効](https://docs.aws.amazon.com/vpc/latest/userguide/AmazonDNS-concepts.html)になっていない場合があり、コレクターがエンドポイントを検出できない可能性があります。
+ `up` は存在するものの、常に 0 — `up` が存在するが 0 の場合、コレクターはエンドポイントを検出できますが、Prometheus 互換のメトリクスを検出できません。

  この場合は、`curl` エンドポイントに対して直接コマンドを実行してみるといいかもしれません。プロトコル (`http` または `https`)、エンドポイント、使用しているポートなど、詳細が正しいことを検証できます。また、エンドポイントの応答が有効な `200` レスポンスであり、Prometheus 形式に従っていることを確認することもできます。最後に、レスポンスの本文を最大許容サイズより大きくすることはできません ( AWS マネージドコレクターの制限については、次のセクションを参照してください）。
+ `up` が存在し、0 より大きい — `up` が存在し、かつ 0 より大きい場合、メトリクスは Amazon Managed Service for Prometheus に送信されています。

  Amazon Managed Service for Prometheus (または Amazon Managed Grafana などの代替ダッシュボード) で正しいメトリクスを検出していることを確認します。curl をもう一度使用して、`/metrics` エンドポイントに予想したデータがあるかどうかを確認できます。また、スクレイパーあたりのエンドポイント数など、他の制限を超えていないことも確認してください。スクレイピングされるメトリクスエンドポイントの数を調べるには、`count(up)` を使用して `up` メトリクスの数を確認します。

## スクレイパーの制限事項
<a name="AMP-collector-limits"></a>

Amazon Managed Service for Prometheus が提供するフルマネージド型スクレイパーには、いくつかの制限があります。
+ **リージョン** — EKS クラスター、マネージドスクレイパー、Amazon Managed Service for Prometheus ワークスペースはすべて同じ AWS リージョンにある必要があります。
+ **コレクター** — 1 リージョンの 1 アカウントあたり、最大 10 個の Amazon Managed Service for Prometheus スクレイパーを設定できます。
**注記**  
[クォータの引き上げをリクエスト](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase)することで、この上限を引き上げることができます。
+ **メトリクスレスポンス** — 任意の 1 つの `/metrics` エンドポイントリクエストからのレスポンスの本文は 50 メガバイト (MB) を超えることはできません。
+ **スクレイパーあたりのエンドポイント** — スクレイパーは最大 30,000 の `/metrics` エンドポイントをスクレイピングできます。
+ **スクレイプ間隔** — スクレイパー設定では、30 秒未満のスクレイプ間隔を指定できません。