

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

# Amazon Managed Service for Prometheus で分割コスト配分データを使用する
<a name="split-cost-allocation-data-resource-amp"></a>

Amazon EKS のコストデータを分割するには、メモリや CPU 使用量などのメトリクスをクラスターから収集して保存する必要があります。この目的には、Amazon Managed Service for Prometheus を使用できます。

分割コスト配分データにオプトインし、Amazon Managed Service for Prometheus ワークスペースが 2 つの必須メトリクス (`container_cpu_usage_seconds_total` と `container_memory_working_set_bytes`) の受信を開始すると、分割コスト配分データはメトリクスを認識し、自動的に使用します。

**注記**  
2 つの必須メトリクス (`container_cpu_usage_seconds_total` と `container_memory_working_set_bytes`) は、デフォルトの Prometheus スクレイプ設定と、 AWS マネージドコレクターで提供されるデフォルト設定にあります。ただし、これらの設定をカスタマイズする場合は、`container_cpu_usage_seconds_total` および `container_memory_working_set_bytes` メトリクスから、`name`、`namespace`、`pod` のラベルを再ラベル付けしたり、変更したり、削除したりしないでください。これらのラベルの再ラベル付け、変更、修正、または削除を行うと、メトリクスの取り込みに影響する可能性があります。

Amazon Managed Service for Prometheus を使用して、1 つのリージョンで 1 つの使用状況アカウントから EKS メトリクスを収集できます。Amazon Managed Service for Prometheus ワークスペースは、そのアカウントとリージョンにある必要があります。コストをモニタリングする使用状況アカウントとリージョンごとに、Amazon Managed Service for Prometheus インスタンスが 1 つ必要です。Amazon Managed Service for Prometheus ワークスペース内の複数のクラスターのメトリクスは、同じ使用状況アカウントとリージョンにある限り収集できます。

以下のセクションでは、EKS クラスターから Amazon Managed Service for Prometheus ワークスペースに正しいメトリクスを送信する方法について説明します。

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

分割コスト配分データで Amazon Managed Service for Prometheus を使用するための前提条件:
+  AWS Billing and Cost Management コンソールで分割コスト配分データを有効にする必要があります。詳細については、「[Enabling split cost allocation data](https://docs.aws.amazon.com/cur/latest/userguide/enabling-split-cost-allocation-data.html)」を参照してください。コスト配分データの分割にオプトインすると、各使用アカウントにサービスにリンクされたロールが作成され、そのアカウントの Amazon EKS クラスターメトリクスについて Amazon Managed Service for Prometheus にクエリが実行されます。詳細については、「[分割コスト配分データのサービスにリンクされたロール](https://docs.aws.amazon.com/cost-management/latest/userguide/split-cost-allocation-data-SLR.html)」を参照してください。
+ 分割コスト配分データを追跡する EKS クラスターが必要です。新しいクラスターを作成するか、既存のクラスターを使用できます。詳細については、「*Amazon EKS ユーザーガイド*」の「[Amazon EKS クラスターを作成する](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html)」を参照してください。
**注記**  
後の手順で使用するために、`EKS cluster ARN`、`security group IDs`、さらに少なくとも 2 つの `subnet IDs` (異なるアベイラビリティーゾーン内) が必要になります。  
(任意) EKS クラスターの認証モードを `API` または `API_AND_CONFIG_MAP` に設定します。
+ EKS クラスターと同じアカウントとリージョンに Amazon Managed Service for Prometheus インスタンスが必要です。まだ持っていない場合は、作成する必要があります。Amazon Managed Service for Prometheus インスタンスを作成する方法については、「*Amazon Managed Service for Prometheus ユーザーガイド*」の「[Create a workspace](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-onboard-create-workspace.html)」を参照してください。
**注記**  
後の手順で使用するために `Amazon Managed Service for Prometheus workspace ARN` が必要です。

## EKS メトリクスを Amazon Managed Service for Prometheus に転送する
<a name="forward-eks-metrics-prometheus"></a>

EKS クラスターと Amazon Managed Service for Prometheus インスタンスがあれば、メトリクスをクラスターからインスタンスに転送できます。メトリクスは 2 つの方法で送信できます。
+ [オプション 1: AWS マネージドコレクターを使用します。](https://docs.aws.amazon.com/cur/latest/userguide/split-cost-allocation-data-resource-amp.html#use-managed-collector)これは、EKS クラスターから Amazon Managed Service for Prometheus にメトリクスを送信する最も簡単な方法です。ただし、最大 30 秒ごとにメトリックをスクレイピングするだけという制限があります。
+ [オプション 2: 独自の Prometheus エージェントを作成します。](https://docs.aws.amazon.com/cur/latest/userguide/split-cost-allocation-data-resource-amp.html#create-prometheus-agent)この場合、スクレイピング構成をより細かく制御できますが、エージェントを作成した後に管理する必要があります。

### オプション 1: AWS マネージドコレクターの使用
<a name="use-managed-collector"></a>

 AWS マネージドコレクター (*スクレイパー*) を使用することは、EKS クラスターから Amazon Managed Service for Prometheus インスタンスにメトリクスを送信する最も簡単な方法です。次の手順では、 AWS マネージドコレクターを作成する手順を説明します。詳細については、「*Amazon Managed Service for Prometheus ユーザーガイド*」の「[AWS managed collectors](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector.html)」を参照してください。

**注記**  
AWS マネージドコレクターの最小スクレイプ間隔は 30 秒です。有効期間の短いポッドがある場合は、スクレイパー間隔を 15 秒に設定することをお勧めします。15 秒のスクレイパー間隔を使用するには、オプション 2 を使用して[独自の Prometheus エージェントを作成](https://docs.aws.amazon.com/cur/latest/userguide/split-cost-allocation-data-resource-amp.html#create-prometheus-agent)します。

 AWS マネージドコレクターを作成するには、次の 3 つのステップがあります。

1. スクレイパー設定を作成します。

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

1. EKS クラスターを、スクレイパーがメトリクスにアクセスできるように設定します。

*ステップ 1: 設定を作成する*

スクレイパーを作成するには、スクレイパー設定が必要です。デフォルト設定を使用するか、独自の設定を作成できます。スクレイパー設定を取得する 3 つの方法は次のとおりです。
+ CLI AWS を使用してデフォルト設定を取得するには、以下を呼び出します。

  ```
  aws amp get-default-scraper-configuration
  ```
+ 独自の設定を作成します。詳細については、「*Amazon Managed Service for Prometheus ユーザーガイド*」の「[Scraper configuration](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector-how-to.html#AMP-collector-configuration)」を参照してください。
+ 「*Amazon Managed Service for Prometheus ユーザーガイド*」の同じ「[Scraper configuration](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector-how-to.html#AMP-collector-configuration)」の手順で提供されているサンプル設定をコピーします。

スクレイパー設定を編集して、スクレイプ間隔を変更したり、スクレイプされたメトリクスをフィルタリングしたりできます。

スクレイピングされるメトリクスをフィルタリングして、分割コスト配分データに必要な 2 つのメトリクスを含めるには、次のスクレイパー設定を使用します。

```
global:
   scrape_interval: 30s
   #external_labels:
     #clusterArn: <REPLACE_ME>
scrape_configs:
  - job_name: kubernetes-nodes-cadvisor
    scrape_interval: 30s
    scrape_timeout: 10s
    scheme: https
    authorization:
      type: Bearer
      credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
    kubernetes_sd_configs:
    - role: node
    relabel_configs:
    - regex: (.+)
      replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor
      source_labels:
      - __meta_kubernetes_node_name
      target_label: __metrics_path__
    - replacement: kubernetes.default.svc:443
      target_label: __address__
    metric_relabel_configs:
    - source_labels: [__name__]
      regex: 'container_cpu_usage_seconds_total|container_memory_working_set_bytes'
      action: keep
```

スクレイパー設定が完了したら、*ステップ 2* で使用するために base64 でエンコードする必要があります。設定はテキスト YAML ファイルです。ファイルをエンコードするには、[https://www.base64encode.org/](https://www.base64encode.org/) などのウェブサイトを使用します。

*ステップ 2: スクレイパーを作成する*

設定ファイルを作成したら、スクレイパーを作成する必要があります。前提条件セクションで説明されている変数に基づいて、次の AWS CLI コマンドを使用してスクレイパーを作成します。{{<EKS-CLUSTER-ARN>}}、{{<SG-SECURITY-GROUP-ID>}}、{{<SUBNET-ID>}} の各フィールドに EKS クラスターの情報を使用し、{{<BASE64-CONFIGURATION-BLOB>}} を前のステップで作成したスクレイパー設定に置き換え、{{<AMP\_WORKSPACE\_ARN>}} を Amazon Managed Service for Prometheus ワークスペース ARN に置き換える必要があります。

```
aws amp create-scraper \ 
--source eksConfiguration="{clusterArn={{<EKS-CLUSTER-ARN>}},securityGroupIds=[{{<SG-SECURITY-GROUP-ID>}}],subnetIds=[{{<SUBNET-ID>}}]}" \ 
--scrape-configuration configurationBlob={{<BASE64-CONFIGURATION-BLOB>}} \ 
--destination ampConfiguration={workspaceArn="{{<AMP_WORKSPACE_ARN>}}"}
```

*ステップ 3* で使用するために返される `scraperId` を書き留めます。

*ステップ 3: EKS クラスターを、スクレイパーがメトリクスにアクセスできるように設定する*

EKS クラスターの認証モードが `API` または `API_AND_CONFIG_MAP` のいずれかに設定されている場合、スクレイパーは自動的に正しいクラスター内アクセスポリシーを持ち、スクレイパーはクラスターにアクセスできます。これ以上の設定は必要なく、メトリクスは Amazon Managed Service for Prometheus に流れるはずです。

EKS クラスターの認証モードが `API` または `API_AND_CONFIG_MAP` に設定されていない場合は、スクレイパーが ClusterRole および ClusterRoleBinding を介してメトリクスにアクセスできるようにクラスターを手動で設定する必要があります。これらのアクセス許可を有効にする方法については、「*Amazon Managed Service for Prometheus ユーザーガイド*」の「[Manually configuring an EKS cluster for scraper access](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector-how-to.html#AMP-collector-eks-setup)」を参照してください。

スクレイパーがアクティブになったら、両方のメトリクス (`container_cpu_usage_seconds_total` と `container_memory_working_set_bytes`) が Amazon Managed Service for Prometheus ワークスペースにプッシュされていることを確認します。

```
awscurl --service="aps" --region="<REGION>" "https://aps-workspaces.<REGION>.amazonaws.com/workspaces/<WorkSpace_ID>/api/v1/label/__name__/values"
```

出力:

```
{
"status": "success",
"data": [
"container_cpu_usage_seconds_total",
"container_memory_working_set_bytes",
"scrape_duration_seconds",
"scrape_samples_post_metric_relabeling",
"scrape_samples_scraped",
"scrape_series_added",
"up"
]
}
```

### オプション 2: 独自の Prometheus エージェントを作成する
<a name="create-prometheus-agent"></a>

 AWS マネージドコレクターを使用できない場合、または独自の Prometheus サーバーがすでにある場合は、独自の Prometheus インスタンスをエージェントとして使用して EKS クラスターからメトリクスをスクレイプし、Amazon Managed Service for Prometheus に送信できます。

独自の Prometheus インスタンスをエージェントとして使用する方法の詳細については、「*Amazon Managed Service for Prometheus ユーザーガイド*」の「[Using a Prometheus instance as a collector](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-ingest-with-prometheus.html)」を参照してください。

以下は、Prometheus サーバースクレイプ間隔と分割コスト配分データに必要なコンテナメトリクスを含む Prometheus スクレイプ設定の例です。ポッドの有効期間が短い場合は、デフォルトの Prometheus サーバースクレイプ間隔を 30 秒から 15 秒に短縮することをお勧めします。この場合、Prometheus サーバーのメモリ使用率が高くなる可能性があります。

```
global:
   scrape_interval: 30s
   #external_labels:
     #clusterArn: <REPLACE_ME>
scrape_configs:
  - job_name: kubernetes-nodes-cadvisor
    scrape_interval: 30s
    scrape_timeout: 10s
    scheme: https
    authorization:
      type: Bearer
      credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
    kubernetes_sd_configs:
    - role: node
    relabel_configs:
    - regex: (.+)
      replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor
      source_labels:
      - __meta_kubernetes_node_name
      target_label: __metrics_path__
    - replacement: kubernetes.default.svc:443
      target_label: __address__
    metric_relabel_configs:
    - source_labels: [__name__]
      regex: 'container_cpu_usage_seconds_total|container_memory_working_set_bytes'
      action: keep
```

「*Amazon Managed Service for Prometheus ユーザーガイド*」で、「[Set up ingestion from a new Prometheus server using Helm](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-onboard-ingest-metrics-new-Prometheus.html)」に従った場合は、スクレイプ設定を更新できます。

**スクレイプ設定を更新するには**

1. ガイドの `my_prometheus_values_yaml` を編集し、サンプルスクレイプ設定を `server` ブロックに含めます。

1. 「*Amazon Managed Service for Prometheus ユーザーガイド*」の `prometheus-chart-name` および `prometheus-namespace` を使用して、次のコマンドを実行します。

```
helm upgrade prometheus-chart-name prometheus-community/prometheus -n prometheus-namespace -f my_prometheus_values_yaml
```

`scrape_interval` の詳細またはグローバル以外の scrape\_interval の使用方法については、Prometheus の「[<scrape\_config>](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config)」を参照してください。

または、Prometheus Receiver、Prometheus Remote Write Exporter、および AWS Sigv4 Authentication Extension を持つ AWS Distro for OpenTelemetry コレクターを使用して、Amazon Managed Service for Prometheus へのリモート書き込みアクセスを実現することもできます。

**注記**  
Prometheus エージェントを設定したら、 AWS マネージドコレクターとは異なり、エージェントを最新の状態に保ち、メトリクスを収集するために実行する必要があります。

## Amazon Managed Service for Prometheus のコストの見積もり
<a name="estimate-prometheus-costs"></a>

 AWS 料金計算ツールを使用して、分割コスト配分データに Amazon Managed Service for Prometheus を使用するコストを見積もることができます。

**見積りに Amazon Managed Service for Prometheus を設定するには**

1. [https://calculator.aws/\#/](https://calculator.aws/#/) で AWS 料金計算ツールを開きます。

1. [**Create estimate (見積りの作成)**] を選択します。

1. **[サービスの追加]**ページで、検索フィールドに「**Amazon Managed Service for Prometheus**」と入力し、**[設定]** を選択します。

1. **[Description]** (説明) の欄に見積りの説明を入力します。

1. **[Region]** (リージョン) を選択します。

1. **[インフラストラクチャの詳細を使用してコストを計算する]** を選択します。このオプションを使用すると、現在または提案されているインフラストラクチャの設定に基づいて、取り込み、ストレージ、クエリのサンプルコストを見積もることができます。

1. **[EC2 インスタンスの数]** には、一括決済ファミリー全体 (すべてのアカウントとリージョンを含む) のすべてのクラスターの EC2 インスタンスの合計数を入力します。を使用する場合は AWS Fargate、EC2 インスタンス数のプロキシとして Fargate タスクの数を使用します。

1. 分割コスト配分データには、`container_cpu_usage_seconds_total` と `container_memory_working_set_bytes` の 2 つのメトリクスが必要です。**[EC2 インスタンスあたりの Prometheus メトリクス]** には、「2」と入力します。

1. 分割コスト配分データは、スクレイプ間隔が 15 秒であることを示しています。**[メトリクス収集間隔 (秒)]** には、「15」と入力します。別の間隔 (30 秒など) を使用した場合は、設定した間隔に変更します。

1. 分割コスト配分データは、他のパラメータに特定の要件を課さないため、ビジネス要件に従って残りの入力パラメータに適切な値を入力します。

1. **[サービスを保存して追加]** を選択します。