

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

# 分割コスト配分データを理解する
<a name="split-cost-allocation-data"></a>

コストと使用状況レポート (AWS CUR) を使用して、Amazon ECS と Amazon EKS コンテナのコストを追跡できます。分割コスト配分データを使用すると、コンテナワークロードが共有のコンピューティングリソースとメモリリソースをどのように消費しているかに基づいて、コンテナコストを個々のビジネスユニットやチームに割り当てることができます。分割コスト配分データは、新しいコンテナレベルのリソース (ECS タスクと Kubernetes ポッド) のコストと使用状況データを AWS CUR に導入します。以前は、 AWS CUR は EC2 インスタンスレベルでのみコストをサポートしていました。分割コスト配分データでは、各コンテナの EC2 インスタンスのリソース消費量を調べてコンテナレベルのコストを生成し、インスタンスの償却コストと、インスタンス上で実行されたコンテナが消費する CPU およびメモリリソースの割合に基づいてコストを生成します。

Amazon EKS で使用される高速コンピューティングインスタンスの場合、分割コスト配分データには、CPU とメモリに加えて、特殊なプロセッサへのリソース割り当てが含まれます。これには、NVIDIA および AMD GPUs、 AWS Trainium、および AWS Inferentia アクセラレーターが含まれます。この機能は Amazon EKS 環境でのみ使用でき、これらの高速コンピューティングリソースのポッドレベルのリソース予約データを提供します。これにより、AI/ML アプリケーションやその他の計算負荷の高いタスクなど、これらの特殊なプロセッサを使用するワークロードのコストを追跡して割り当てることができます。高速コンピューティングインスタンスの最新のリストについては、「[高速コンピューティング](https://aws.amazon.com/ec2/instance-types/#Accelerated_Computing)」を参照してください。

分割コスト配分データでは、CUR 内のコンテナ化されたリソース ID (ECS タスクと Kubernetes ポッド) AWS ごとに新しい使用状況レコードと新しいコストメトリクス列が導入されます。詳細については、「[明細の分割の詳細](https://docs.aws.amazon.com/cur/latest/userguide/split-line-item-columns.html)」を参照してください。

分割コスト配分データを CUR AWS に含めると、CPU とメモリのコストを反映するために、ECS タスクと Kubernetes ポッドごとに 1 時間あたり 2 つの新しい使用状況レコードが追加されます。1 日あたりの CUR AWS の新しい明細項目の数を見積もるには、次の式を使用します。

ECS の場合: `(number of tasks * average task lifetime * 2) * 24`

EKS の場合: `(number of pods * average pod lifetime * 2) * 24`

例えば、10 個の EC2 インスタンスからなるクラスターで 1 時間に 1,000 件のポッドが実行されており、そのポッドの有効期間が 1 時間未満の場合、

`(1000 * 1 * 2) * 24 = 48,000 new usage records in AWS CUR`

高速コンピューティングインスタンスを使用する場合、他の測定オプションが有効になっていても、デフォルトのリソースリクエストでアクセラレーター、CPU、メモリのコストが計算されます。1 日あたりの CUR AWS の新しい明細項目の数を見積もるには、次の式を使用します。

高速コンピューティングを使用する EKS の場合: `(number of pods * average pod lifetime * 3) * 24`

例えば、10 個の EC2 インスタンスからなるクラスターで 1 時間に 1,000 件のポッドが実行されており、各ポッドの有効期間が 1 時間未満の場合: `(1000 * 1 * 3) * 24 = 72,000 new usage records in AWS CUR`

**注記**  
ECS の場合: AWS コスト配分タグについては、コストと使用状況レポートに Amazon ECS 管理タグまたはユーザー追加タグを使用できます。これらのタグは、すべての新しい ECS 分割コスト配分データ使用レコードに適用されます。詳細については、[[課金用の ECS リソースのタグ付け](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html#tag-resources-for-billing)]を参照してください。  
EKS の場合: 分割コスト配分データは、一部の Kubernetes 属性に新しいコスト配分タグを作成します。これらのタグには、`aws:eks:cluster-name`、`aws:eks:deployment`、`aws:eks:namespace`、`aws:eks:node`、`aws:eks:workload-name`、`aws:eks:workload-type` が含まれます。  
`aws:eks:cluster-name`、`aws:eks:namespace`、`aws:eks:node` には、クラスター、名前空間、ノードの名前が遡及的に入力されます。
`aws:eks:workload-type` は、ポッドを管理するワークロードが 1 つだけあり、組み込みワークロードの 1 つである場合にのみ入力されます。ワークロードタイプには `ReplicaSet`、`StatefulSet`、`Job`、`DaemonSet`、`ReplicationController` のいずれかが含まれ、`aws:eks:workload-name` にはワークロードの名前が含まれます。詳細については、「*Kubernetes ドキュメント*」の「[ワークロード](https://kubernetes.io/docs/concepts/workloads/)」を参照してください。
`aws:eks:deployment` はワークロードタイプ `ReplicaSet` にのみ入力されます。`ReplicaSet` を作成するのはデプロイです。
これらのタグは、すべての新しい EKS 分割コスト配分データ使用レコードに適用されます。これらのタグは、デフォルトでコスト配分が有効になっています。`aws:eks:cluster-name` タグを以前に使用および無効にした場合、分割コスト配分データはこの設定を保持し、タグを有効にしません。これは、[[コスト配分タグ]](https://console.aws.amazon.com/billing/home#/tags) コンソールページから有効にできます。

# 分割コスト配分データを有効にする
<a name="enabling-split-cost-allocation-data"></a>

**注記**  
分割コスト配分データは Cost Explorer では使用できません。従来のコストと使用状況レポート (CUR)、およびデータエクスポートを備えたコストと使用状況レポート 2.0 (CUR 2.0) で使用できます。

コスト管理の設定でコスト配分データを分割するよう選択することが前提条件です。

**コスト配分データの分割をオプトインするには**

1. [https://console.aws.amazon.com/costmanagement/](https://console.aws.amazon.com/costmanagement/) で Billing and Cost Management コンソールを開きます

1. ナビゲーションペインで [**コスト管理の設定**] を選択します。

1. **[全般]** の **[コスト配分データの分割]** セクションで、次のいずれかを選択します。
   + Amazon ECS にのみオプトインする場合は **[Amazon Elastic Container Service (Amazon ECS)]**。
   + Amazon EKS にのみオプトインする場合は **[Amazon Elastic Kubernetes Service (Amazon EKS)]**。Amazon EKS の場合は、次のいずれかを選択します。
     + **リソースリクエスト**: Amazon EC2 は Kubernetes ポッド CPU とメモリリソースによってのみ割り当てられます。これにより、アプリケーションチームは必要なもののみをプロビジョニングできます。
     + **Amazon Managed Service for Prometheus**: Kubernetes ポッドの CPU とメモリのリソース要求と実際の使用率のいずれか高い方に基づいて Amazon EC2 のコストが割り当てられます。これにより、各アプリケーションチームが使用した分だけ支払うことになります。Amazon Managed Service for Prometheus のセットアップの詳細については、「*Amazon Managed Service for Prometheus ユーザーガイド*」の「[Setting up](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-setting-up.html)」を参照してください。

       前提条件: ですべての機能を有効にする必要があります AWS Organizations。詳細については、「*Organizations ユーザーガイド*」の「[組織内のすべての機能の有効化](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_support-all-features.html)」を参照してください。
     + **Amazon CloudWatch Container Insights**: これにより、共有 EC2 インスタンスを使用して複数のアプリケーションコンテナを実行しているクラスターのコストをより詳細に可視化できるため、EKS クラスターの共有コストのコスト配分が向上します。

**注記**  
通常のアカウントと支払者アカウントのみが AWS Cost Management 設定にアクセスでき、コスト配分データの分割をオプトインできます。オプトインすると、メンバーアカウントはコストと使用状況レポートのデータを表示できます。
リソースリクエストを選択すると、メモリと CPU リクエストで設定されたポッドのみが分割コスト配分データに使用されます。使用をリクエストしていないポッドには、分割コストデータが表示されません。
Amazon Managed Service for Prometheus を選択した場合は、 AWS Organizations のすべての機能を有効にする必要があります。詳細については、「[組織内のすべての機能の有効化](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_org_support-all-features.html)」を参照してください。さらに、分割コスト配分データでは、サービスにリンクされたロールで使用する新しいポリシーが作成されます。これで、分割コスト配分データによって使用または管理される AWS サービスやリソースにアクセスできるようになります。
高速コンピューティングインスタンスでは、[リソースリクエスト] オプションのみがサポートされています。これらのインスタンスでは、Amazon Managed Service for Prometheus も Amazon CloudWatch Container Insights もサポートされていません。高速コンピューティングインスタンスを使用する場合、他の測定オプションが有効になっている場合でも、システムはデフォルトでリソースリクエストになり、アクセラレーター、CPU、メモリのコストを計算します。

オプトインすると、レポート作成のステップ 1 でコンテナレベルのリソースのコストと使用状況データをレポートに含めるか、後でレポートの詳細を編集してレポートに含めるかを選択できます。

**コストと使用状況のデータをレポートに含めるには**

1. [https://console.aws.amazon.com/costmanagement/](https://console.aws.amazon.com/costmanagement/) で請求およびコスト管理コンソールを開きます

1. ナビゲーションペインの **[レガシーページ]** で **[コストと使用状況レポート]** を選択します。

1. 新しいレポートを作成するか、既存のレポートを編集するかにかかわらず、[**レポートの詳細を指定**] ページの [**レポートコンテンツ**] で [**コスト配分データの分割**] を選択します。

**注記**  
CUR API または AWS Command Line Interface (CLI) AWS を使用して、分割コスト配分データの設定を管理することもできます。

分割コスト配分データにより、一括決済ファミリー全体 (支払いアカウントと連結アカウント) のすべての Amazon ECS と Amazon EKS のコンテナオブジェクトのコストを可視化できます。分割コスト配分データを有効にすると、タスクとコンテナが自動的にスキャンされます。コンテナワークロードのテレメトリ使用状況データを取り込み、当月の詳細なコストデータを準備します。

**注記**  
CUR にデータが表示されるまでに最大 24 AWS 時間かかる場合があります。

Billing and Cost Management 管理コンソールページへのアクセス権の管理の詳細については、「[アクセス権限の管理の概要](https://docs.aws.amazon.com/cost-management/latest/userguide/control-access-billing.html)」を参照してください。

Cost Explorer AWS Cost Management の設定とアクセスの制御については、[Cost Explorer へのアクセスの制御](https://docs.aws.amazon.com/cost-management/latest/userguide/ce-access.html)」を参照してください。 Cost Explorer

# 分割コスト配分データの例
<a name="example-split-cost-allocation-data"></a>

次の例の目的は、個々の Amazon ECS サービス、Amazon ECS クラスター内のタスク、Amazon EKS クラスター内の Kubernetes 名前空間とポッドのコストを計算することによって、分割コスト割り当てデータがどのように計算されるかを示すことです。例全体で使用されている料金は、説明のみを目的としています。

**注記**  
この例では、Amazon EKS クラスターで実行されている Kubernetes 名前空間とポッドを示しています。その後、Amazon ECS クラスターで実行されている Amazon ECS サービスとタスクに同じコストモデルを適用できます。

1 時間あたりの使用量は以下のとおりです。
+ 2 つの名前空間と 4 つのポッドで構成される単一インスタンス (m5.xlarge) 共有クラスターで、1 時間稼働します。
+ インスタンス構成は 4 vCPU と 16 GB です。
+ インスタンスの償却コストは 1 時間あたり 1 USD です。

分割コスト配分データでは、CPU とメモリの相対的な単位重量を 9:1 の比率で計算しています。これは、の vCPU 1 時間あたりの料金と 1 時間あたり GB あたりの料金から算出されます。[AWS Fargate](https://aws.amazon.com/fargate/pricing/)

## ステップ 1: CPU とメモリの単価を計算する
<a name="example-step1"></a>

`Unit-cost-per-resource = Hourly-instance-cost/((Memory-weight * Memory-available) + (CPU-weight * CPU-available))`

= 1ドル/ ((1 \$1 16GB) \$1 (9 \$1 4vCPU)) = 0.02 ドル

`Cost-per-vCPU-hour = CPU-weight * Unit-cost-per-resource`

= 9 \$1 0.02 ドル = 0.17 ドル

`Cost-per-GB-hour = Memory-weight * Unit-cost-per-resource`

= 1 \$1 0.02 ドル = 0.02 ドル


****  

| Instance | Instance type | vCPU-available | Memory-available | Amortized-cost-per-hour | Cost-per-vCPU-hour | Cost-per-GB-hour | 
| --- | --- | --- | --- | --- | --- | --- | 
| Instance1 | m5.xlarge | 4 | 16 | 1 USD | 0.17 USD | 0.02 USD | 

## ステップ 2: 割り当てられた容量とインスタンスの未使用容量を計算する
<a name="example-step2"></a>
+ 割り当て済み容量:親 EC2 インスタンスから Kubernetes ポッドに割り当てられたメモリと vCPU。使用済み容量とリザーブドキャパシティの最大値として定義されます。
**注記**  
メモリまたは vCPU の使用状況データがない場合は、代わりに予約データが使用されます。詳細については、「[Amazon ECS 使用状況レポート](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/usage-reports.html)」または「[Amazon EKS コストモニタリング](https://docs.aws.amazon.com/eks/latest/userguide/cost-monitoring.html)」を参照してください。
+ インスタンスの未使用容量: vCPU とメモリの未使用容量。

`Pod1-Allocated-vCPU = Max (1 vCPU, 0.1 vCPU)` = 1 vCPU

`Pod1-Allocated-memory = Max (4 GB, 3 GB)` = 4 GB

`Instance-Unused-vCPU = Max (CPU-available - SUM(Allocated-vCPU), 0)`= 最大値 (4 — 4.9、0) = 0

`Instance-Unused-memory = Max (Memory-available - SUM(Allocated-memory), 0)`= 最大 (16 — 14、0) = 2 GB

この例では、インスタンスの CPU がサブスクリプションを超えています。これは、予約されたものよりも多くの vCPU を使用した Pod2 に起因します。


****  

| Pod name | Namespace | Reserved-vCPU | Used-vCPU | Allocated-vCPU | Reserved-memory | Used-memory | Allocated-memory | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Pod1 | Namespace1 | 1 | 0.1 | 1 | 4 | 3 | 4 | 
| Pod2 | Namespace2 | 1 | 1.9 | 1.9 | 4 | 6 | 6 | 
| Pod3 | Namespace1 | 1 | 0.5 | 1 | 2 | 2 | 2 | 
| Pod4 | Namespace2 | 1 | 0.5 | 1 | 2 | 2 | 2 | 
| Unused | Unused |  |  | 0 |  |  | 2 | 
|  |  |  |  | 4.9 |  |  | 16 | 

## ステップ 3: 分割使用率を計算する
<a name="example-step3"></a>
+ 分割使用率: EC2 インスタンスで使用可能な CPU またはメモリ全体に対する Kubernetes ポッドが使用している CPU またはメモリの割合。
+ 未使用率: EC2 インスタンスで使用されている CPU またはメモリ全体の (つまり、インスタンスの未使用の CPU またはメモリは考慮されていない) に対する Kubernetes ポッドが使用している CPU またはメモリの割合。

`Pod1-vCPU-split-usage-ratio = Allocated-vCPU / Total-vCPU`

= 1 vCPU/4.9vCPU = 0.204

`Pod1-Memory-split-usage-ratio = Allocated-GB / Total-GB`

= 4 ギガバイト/ 16ギガバイト = 0.250

`Pod1-vCPU-unused-ratio = Pod1-vCPU-split-usage-ratio / (Total-CPU-split-usage-ratio – Instance-unused-CPU)` (インスタンス未使用 CPU が 0 の場合は 0 に設定)

= 0 (インスタンス未使用 CPU は 0 なので)

`Pod1-Memory-unused-ratio = Pod1-Memory-split-usage-ratio / (Total-Memory-split-usage-ratio – Instance-unused-memory)` (インスタンス未使用メモリが 0 の場合は 0 に設定)

= 0.250/(1-0.125) = 0.286


****  

| Pod name | Namespace | vCPU-split-usage-ratio | vCPU-unused-ratio | Memory-split-usage-ratio | Memory-unused-ratio | 
| --- | --- | --- | --- | --- | --- | 
| Pod1 | Namespace1 | 0.204 | 0 | 0.250 | 0.286 | 
| Pod2 | Namespace2 | 0.388 | 0 | 0.375 | 0.429 | 
| Pod3 | Namespace1 | 0.204 | 0 | 0.125 | 0.143 | 
| Pod4 | Namespace2 | 0.204 | 0 | 0.125 | 0.143 | 
| Unused | Unused | 0 |  | 0.125 |  | 
|  |  | 1 |  | 1 |  | 

## ステップ 4: 分割コストと未使用コストの計算
<a name="example-step4"></a>
+ 分割コスト: Kubernetes ポッドによって割り当てられた CPU とメモリの使用量に基づく EC2 インスタンスコストの従量課金制コスト配分。
+ 未使用インスタンスコスト: インスタンス上の未使用の CPU またはメモリリソースのコスト。

`Pod1-Split-cost = (Pod1-vCPU-split-usage-ratio * vCPU-available * Cost-per-vCPU-hour) + (Pod1-Memory-split-usage-ratio * Memory-available * Cost-per-GB-hour)`

= (0.204 \$1 4 vCPU \$1 0.17 ドル) \$1 (0.25 \$1 16GB \$1 0.02 ドル) = 0.22 ドル

`Pod1-Unused-cost = (Pod1-vCPU-unused-ratio * Instance-vCPU-unused-ratio * vCPU-available * Cost-per-VCPU-hour) + (Pod1-Memory-unused-ratio * Instance-Memory-unused ratio * Memory-available * Cost-per-GB-hour)`

= (0 \$1 0 \$1 4 \$1 0.17 ドル) \$1 (0.286 \$1 0.125 \$1 16 \$1 0.02 ドル) = 0.01 ドル

`Pod1-Total-split-cost = Pod1-Split-cost + Pod1-Unused-cost`

= 0.23 ドル


****  

| Pod name | Namespace | Split-cost | Unused-cost | Total-split-cost | 
| --- | --- | --- | --- | --- | 
| Pod1 | Namespace1 | 0.22 USD | 0.01 USD | 0.23 USD | 
| Pod2 | Namespace2 | 0.38 USD | 0.02 USD | 0.40 USD | 
| Pod3 | Namespace1 | 0.18 USD | 0.01 USD | 0.19 USD | 
| Pod4 | Namespace2 | 0.18 USD | 0.01 USD | 0.19 USD | 
| Unused | Unused | 0.04 USD |  |  | 
|  |  | 1 USD | 0.04 USD | 1 USD | 

サービスのコストは、各名前空間に関連するポッドのコストの合計です。

Namespace1 の合計コスト = \$10.23 \$1 \$10.19 = \$10.42

Namespace2 の合計コスト = \$10.40 \$1 \$10.19 = \$10.59

## サンプル AWS CUR
<a name="example-savingsplan"></a>

請求期間中の EC2 インスタンスの使用量全体をカバーするSavings Plans をご利用の場合、償却コストは savingsPlan/SavingsPlanEffectiveCost を使用して計算されます。

![\[Table showing EC2 instance usage details with Savings Plans and cost breakdown.\]](http://docs.aws.amazon.com/ja_jp/cur/latest/userguide/images/savings-plan-entire-usage.png)


請求期間内の EC2 インスタンスの一部使用分をカバーするSavings Plans があり、残りの EC2 インスタンスの使用量がオンデマンド料金で請求される場合、EC2 インスタンスの償却費用は savingsPlan/SavingsPlanEffectiveCost (SavingsPlanCoveredUsage の場合) \$1 lineItem/UnblendedCost (オンデマンド使用の場合) を使用して計算されます。

![\[Table showing EC2 instance usage details, costs, and savings plan information.\]](http://docs.aws.amazon.com/ja_jp/cur/latest/userguide/images/savings-plan-partial-usage.png)


# 高速インスタンスの分割コスト配分データの例
<a name="example-accelerated-instances"></a>

次の例の目的は、Amazon EKS クラスター内の Kubernetes 名前空間とポッドのコストを計算することによって、分割コスト割り当てデータがどのように計算されるかを示すことです。例全体で使用されている料金は、説明のみを目的としています。

1 時間あたりの使用量は以下のとおりです。
+ 2 つの名前空間で 4 つのポッドを実行している単一の EC2 インスタンス。各名前空間のコストを把握できます。
+ EC2 インスタンスは p3.16xlarge で、8 GPU、64 vCPU、488 GB の RAM を備えています。
+ インスタンスの償却コストは 1 時間あたり 10 USD です。

分割コスト配分データは、GPU:(CPU: メモリ) の相対比率 9:1 に基づいてリソースあたりのコストを正規化します。これは、GPU の単位のコストが CPU とメモリの単位の 9 倍であることを意味します。CPU とメモリには 9:1 の重みが割り当てられます。非高速 EC2 インスタンスの場合、CPU:メモリの重みがデフォルトで 9:1 である、現在のデフォルトの動作が採用されます。

## ステップ 1: 単価を計算する
<a name="w2aac32c21c13c31c11"></a>

EC2 インスタンスの CPU リソースとメモリリソースに基づき、上記の比率を使用して、分割コスト配分データでは、最初に GPU あたりの単価、1 時間あたりの vCPU、1 時間あたりの GB を計算します。

`GPU-Weight =9`

`GPU+Memory-Weight =1`

`CPU-Weight=1*.9=.9`

`Memory-Weight=1*0.1=0.1`

`Hourly-Instance-Cost=$10`

`GPU-Available=8`

`Memory-Available=488`

`CPU-Available=64`

`UnitCostPerResource = Hourly-Instance-Cost/(( GPU-Weight * GPU-Available) + (Memory-Weight * Memory-Available) + (CPU-Weight * CPU-Available)) = $10/((9*8gpu)+ (0.1 * 488GB) + (.9 * 64vcpu)) = $0.056`

`Cost-per-GPU-Hour = GPU-Weight * UnitCostPerResource = 9 * $0.056 = $0.504`

`Cost-per-vcpu-Hour = CPU-Weight * UnitCostPerResource = .9 * $0.056 = $0.05`

`Cost-per-GB-Hour = Memory-Weight * UnitCostPerResource = .1 * $0.056 = $0.00506`


**表 1: 単価の計算**  

| インスタンス | インスタンスタイプ | 利用可能な vCPU | 利用可能な GPU | \$1\$1 | 利用可能なメモリ | 1 時間あたりの償却コスト | vCPU 1 時間あたりのコスト | GPU 1 時間あたりのコスト | GB 1 時間あたりのコスト | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| インスタンス 1 | p3.16xlarge | 64 | 8 |  | 488 | 10 USD | 0.05 USD | 0.50 USD | 0.005 | 

## ステップ 2: 割り当てられた容量と未使用の容量を計算する
<a name="w2aac32c21c13c31c13"></a>

割り当てられた容量  
親 EC2 インスタンスから Kubernetes ポッドに割り当てられたGPU、vCPU、メモリ。予約済みまたは使用済みの最大の容量として定義されます。

インスタンスの未使用の容量  
GPU、vCPU、メモリの未使用の容量

`Pod1-Allocated-GPU = Max (1 GPU, 1 GPU) = 1 GPU`

`Pod1-Allocated-vcpu = Max (16 vcpu, 4 vcpu) = 16 vcpu`

`Pod1-Allocated-Memory = Max (100 GB, 60 GB) = 100 GB`

`Instance-Unused-GPU = Max (GPU-Available - SUM(Allocated-vcpu), 0)`

`= Max (8 – 8, 0) = 0`

`Instance-Unused-vcpu = Max (CPU-Available - SUM(Allocated-vcpu), 0)`

`= Max (16 – 18, 0) = 0`

`Instance-Unused-Memory = Max (Memory-Available - SUM(Allocated-Memory), 0)`

`= Max (488 – 440, 0) = 48 GB`

この例では、インスタンスの CPU がサブスクリプションを超えています。これは、予約されたものよりも多くの GPU と vCPU を使用した Pod 2 に起因します。


**表 2: 割り当て済みキャパシティと未使用のキャパシティの計算**  

| ポッド名 | 名前空間 | 予約済み vCPU | 使用済み vCPU | 割り当て済み vCPU | 予約済み GPU | 使用済み GPU | 割り当て済み GPU | 予約されているメモリ | 使用済みメモリ | 割り当て済みメモリ | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| Pod 1 | 名前空間 1 | 16 | 4 | 16 | 1 | 1 | 1 | 100 | 60 | 100 | 
| Pod 2 | 名前空間 2 | 16 | 18 | 18 | 2 | 3 | 3 | 100 | 140 | 140 | 
| Pod 3 | 名前空間 1 | 16 | 4 | 16 | 2 | 1 | 2 | 100 | 60 | 100 | 
| ポッド 4 | 名前空間 2 | 16 | 4 | 16 | 2 | 2 | 2 | 100 | 40 | 100 | 
| 未使用 | 未使用 | 0 | 34 | 0 | 1 | 1 | 0 | 88 | 188 | 48 | 
| \$1\$1\$1 |  | 64 | 32 | 66 | 8 | 8 | 8 | 488 | 488 | 488 | 

## ステップ 3: 分割使用率と使用率を計算する
<a name="w2aac32c21c13c31c15"></a>

分割使用率  
EC2 インスタンスで使用可能な CPU またはメモリ全体と比較した、Kubernetes ポッドが使用している CPU またはメモリの割合。

未使用率  
EC2 インスタンスで使用されている CPU またはメモリ全体の (つまり、インスタンスの未使用の CPU またはメモリは考慮されていません) に対する Kubernetes ポッドが使用している CPU またはメモリの割合。

EC2 インスタンスで使用可能な CPU またはメモリ全体と比較した、Kubernetes ポッドが使用している CPU またはメモリの割合。

`Pod1-GPU-Utilization-Ratio = Allocated-GPU / Total-GPU`

`= 1 gpu / 8 gpu = 0.125`

`Pod1-vcpu-Utilization-Ratio = Allocated-vcpu / Total-vcpu`

`= 16 vcpu / 66 vcpu = 0.24`

`Pod1-Memory-Utilization-Ratio = Allocated-GB / Total-GB`

`= 100 GB/ 488GB = 0.205`

`Pod1-GPU-Split-Ratio = Pod1-GPU-Utilization-Ratio / (Total-GPU-Utilization-Ratio – Instance-Unused-GPU). Set to 0 if Instance-Unused-GPU = 0`

`= 0 since Instance-Unused-GPU is 0`

`Pod1-vcpu-Split-Ratio = Pod1-CPU-Utilization-Ratio / (Total-CPU-Utilization-Ratio – Instance-Unused-CPU). Set to 0 if Instance-Unused-CPU = 0`

`= 0 since Instance-Unused-CPU is 0`

`Pod1-Memory-Split-Ratio = Pod-Memory-Utilization-Ratio / (Total-Utilization-Ratio – Instance-Unused-Memory). Set to 0 if Instance-Unused-Memory = 0`

`= 0.204/ (1-0.102) = 0.227`


**表 3: 使用率の計算**  

| ポッド名 | 名前空間 | vCPU 使用率 | vCPU 分割率 | vCPU 使用率 | vCPU 分割率 | メモリ使用率 | メモリ分割率 | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| Pod 1 | 名前空間 1 | 0.242 | 0 | 0.125 | 0 | 0.205 | 0.227 | 
| Pod 2 | 名前空間 2 | 0.277 | 0 | 0.375 | 0 | 0.287 | 0.318 | 
| Pod 3 | 名前空間 1 | 0.242 | 0 | 0.25 | 0 | 0.205 | 0.227 | 
| ポッド 4 | 名前空間 2 | 0.242 | 0 | 0.25 | 0 | 0.205 | 0.227 | 
| 未使用 | 未使用 | 0 |  |  |  | 0.098 |  | 
|  |  | 1 | 0 | 1 | 0 | 1 | 1 | 

## ステップ 4: 分割コストと未使用コストの計算
<a name="w2aac32c21c13c31c17"></a>

分割コスト  
Kubernetes ポッドによって割り当てられた CPU とメモリの使用量に基づく EC2 インスタンスコストの従量課金制コスト配分。

未使用インスタンスのコスト  
インスタンス上の未使用の CPU リソースまたはメモリリソースのコスト。

`Pod1-Split-Cost = (Pod1-GPU-Utilization-Ratio * GPU-Available * Cost per GPU-Hour) + (Pod1-vcpu-Utilization-Ratio * vcpu-Available * Cost per vcpu-Hour) + (Pod1-Memory-Utilization-Ratio * Memory-Available * Cost per GB-Hour)`

`= (.125*8gpu*$0.504) + (0.242 * 64 vcpu * $0.05) + (0.204 * 488GB * $0.00506) = 0.504+ 0.774 + 0.503 = $1.85`

`Pod1-Unused-Cost = (GPU-Split-Ratio * Unused-Cost) + (vcpu-Split-Ratio * Unused-Cost) + (Memory-Split-Ratio * Unused-Cost)`

`= (0*0*8*$0.504) + (0 * $0.05) + (0.227 *.102*488GB*$.00506) = $0.06`

`Pod1-Total-Split-Cost = Pod1-Split-Cost + Pod1-Unused-Cost = $1.85 + $0.06 = $1.91`

[注意: 未使用コスト = 未使用使用率 \$1 合計リソース数 \$1 リソースの時間単位のコスト]


**表 4 - クラスター内で実行されているすべてのポッドについて 1 時間ごとに計算された分割コストと未使用コストの概要**  

| ポッド名 | 名前空間 | 分割コスト | 未使用コスト | 合計コスト | 
| --- | --- | --- | --- | --- | 
| Pod 1 | 名前空間 1 | 1.85 USD | 0.06 USD | 1.91 USD | 
| Pod 2 | 名前空間 2 | 3.18 USD | 0.09 USD | 3.26 USD | 
| Pod 3 | 名前空間 1 | 2.35 USD | 0.06 USD | 2.41 USD | 
| ポッド 4 | 名前空間 2 | 2.35 USD | 0.06 USD | 2.41 USD | 
| Total |  |  |  | 10 USD | 

# EKS でのコスト配分に Kubernetes ラベルを使用する
<a name="split-cost-allocation-data-kubernetes-labels"></a>

分割コスト配分データは、Amazon EKS クラスターのコスト配分タグとして Kubernetes ラベルをサポートします。これらのラベルはユーザー定義のコスト配分タグとして自動的にインポートされますが、管理アカウントレベルでのアクティブ化が必要です。アクティブ化したら、これらのラベルを使用して、コストセンター、アプリケーション、ビジネスユニット、環境などのカスタム属性を利用して、コストと使用状況レポート (CUR) でポッドレベルのコストに属性を付けることができます。

この機能は、組織がチーム、プロジェクト、または部門間で共有 EKS 環境のコストを正確に追跡して割り当てるのに役立ちます。Kubernetes ラベルを使用すると、特定のビジネス要件と組織設計に基づいて Kubernetes コストを割り当てることができます。

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

分割コスト配分データで Kubernetes ラベルを使用するための前提条件は次のとおりです。
+ Billing AWS and Cost Management コンソールで分割コスト配分データを有効にする必要があります。これは、管理アカウントレベルで有効にする必要があります。詳細については、「[分割コスト配分データを有効にする](https://docs.aws.amazon.com/cur/latest/userguide/enabling-split-cost-allocation-data.html)」を参照してください。
+ 分割コスト配分データを追跡する EKS クラスターが必要です。新しいクラスターを作成するか、既存のクラスターを使用できます。詳細については、「*Amazon EKS ユーザーガイド*」の「[Amazon EKS クラスターを作成する](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html)」を参照してください。
+ EKS クラスターのポッドにラベルを割り当てる必要があります。Kubernetes でラベルを作成する方法の詳細については、「*Kubernetes ドキュメント*」の[「ラベル (Labels) とセレクター (Selectors)](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/)」を参照してください。

## EKS での Kubernetes ラベルの操作
<a name="work-with-kubernetes-labels"></a>

分割コスト配分データは、ポッドあたり最大 50 個の Kubernetes ラベルをサポートし、コスト配分タグとしてインポートされる前にアルファベット順にソートされます。最初の 50 個を超えるラベルは自動的に破棄されます。50 個のラベルの上限に達した後に新しいコスト配分タグを追加する必要がある場合は、まず既存のラベルを削除し、アルファベット順にソートしたときに新しいラベルが最初の 50 個以内に収まるようにする必要があります。

**注記**  
一部の AWS マネージドサービスでは、EKS ポッドにラベルが自動的に追加されます。これらのラベルは、ポッドあたりの 50 個のラベルの上限にカウントされ、コスト配分タグページに表示されます。  
Kubernetes ラベルにはサイズの制限はありませんが、コスト配分タグには特定の文字数制限があります。タグキーは 128 文字、タグ値は 256 文字です。これらの文字数制限を超えるラベルは破棄され、コスト配分タグとして表示されません。コスト配分を目的とする場合は、これらの文字数制限に従うラベルを作成することをお勧めします。

インポートした Kubernetes ラベルはコスト配分タグとして表示され、支払者アカウントレベルでアクティブ化する必要があります。コスト配分タグとアクティブ化の詳細については、「[ユーザー定義のコスト配分タグの使用](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/custom-tags.html)」を参照してください。適用されるコスト配分タグの上限は、リソースあたり 50 個のユーザー定義タグと、支払者アカウントごとに 500 個のユーザー定義タグです。システムによって生成されたタグは、これらの上限にはカウントされません。

**注記**  
ユーザー定義のタグを作成してリソースに適用した後、タグキーがコスト配分タグページに表示されるまでに最大で 24 時間かかる場合があります。タグをアクティブ化すると、タグがアクティブになるまでにさらに 24 時間かかることがあります。

## Kubernetes ラベルとコスト配分タグの管理
<a name="manage-kubernetes-labels"></a>

EKS で Kubernetes ラベルを追加、削除、編集したり、関連するコスト配分タグを非アクティブ化したりできます。以下に、各操作で予想される動作を示します。

**新しいパネルを追加する**

ポッドに新しい Kubernetes ラベルを追加できます。ラベルの上限である 50 個に達していない場合、新しいラベルをインポートし、コスト配分タグとして提供して、アクティブ化できます。ただし、上限の 50 個に達した場合、新しいラベルは最初の 50 個のラベルのアルファベット順に収まってもインポートされません。新しいラベルをインポートするには、まず既存のコスト配分タグを非アクティブ化する必要があります。

**ラベルの編集**

Kubernetes では、ラベルキーを編集することはできません。ラベルキーを変更するには、そのキーを削除して新しいラベルを追加する必要があります。ただし、次の CUR に反映されるラベル値を編集することはできます。

**ラベルの削除**

EKS ポッドからラベルを削除できます。ラベルを削除しても、関連するコスト配分タグは自動的に非アクティブ化されないことに注意してください。分割コスト配分データは、コスト配分タグを明示的に非アクティブ化するまで CUR に入力され続けます。

**コスト配分タグを非アクティブ化する**

Kubernetes ラベルから作成されたコスト配分タグを非アクティブ化できます。非アクティブ化すると、データはそれぞれの列に入力されなくなり、列は翌月の CUR から削除されます。

## コスト配分用の Kubernetes ラベルを管理するためのベストプラクティス
<a name="best-practices-kubernetes-labels"></a>

Kubernetes ラベルは、共有コスト配分のモデリングに大きな柔軟性を提供します。この機能の可能性を最大化するには、以下のベストプラクティスに従ってコスト管理アプローチを最適化することをお勧めします。

ラベルの上限について

ポッドあたり 50 個のラベルの上限は、アルファベット順のソートに基づいています。コスト配分用にインポートされるのは、アルファベット順に並べられた最初の 50 個のラベルのみです。重要なラベルが確実に含まれるようにするには、ラベルがアルファベット順にソートされたときに重要なラベルが最初の 50 個以内に表示されるように、ラベルの命名を慎重に計画してください。

**文字数制限に従う**

AWS コスト配分タグには次の文字制限があります。
+ タグキー: 128 文字
+ タグ値: 256 文字

Kubernetes では長いラベルを使用できますが、これらの上限を超えるラベルはインポートされません。コスト配分の追跡を成功させるために、これらの上限内でラベルを設計します。

**容量があるときに新しいラベルを追加する**

ポッドが 50 個のラベルの上限に達しているときに、新しいコスト配分ラベルを追加する必要がある場合は、次の手順に従います。

1. 既存のラベルを確認し、非アクティブ化するコスト配分タグを特定します。

1. 選択したタグを非アクティブ化します。

1. 新しいコスト配分ラベルを追加します。

1. 新しいラベルがアルファベット順にソートされた最初の 50 個のラベル内にあることを確認します。

**注記**  
コスト配分には、アルファベット順にソートされた最初の 50 個のラベルのみが使用されます。

# 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 を使用するための前提条件:
+ Billing AWS 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\$1WORKSPACE\$1ARN>* を 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\$1interval の使用方法については、Prometheus の「[<scrape\$1config>](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/\$1/](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. **[サービスを保存して追加]** を選択します。

# Amazon CloudWatch Container Insights での分割コスト配分データの使用
<a name="split-cost-allocation-data-cloudwatch"></a>

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

分割コスト配分データにオプトインし、EKS クラスターで EKS オブザーバビリティアドオンを使用して CloudWatch エージェントを設定すると、分割コスト配分データは `ContainerInsights` 名前空間で 2 つの必須メトリクス `(pod_cpu_usage_total` と `pod_memory_working_set`) の受信を開始し、自動的に使用します。EKS の完全なコンテナメトリクスセットを表示するには、「*Amazon CloudWatch ユーザーガイド*」の「[Amazon EKS および Kubernetes Container Insights のメトリクス](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-metrics-EKS.html)」を参照してください。

以下のセクションでは、EKS クラスターから正しいメトリクスを分割コスト配分データに送信する方法について説明します。

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

分割コスト配分データで Amazon CloudWatch Container Insights を使用するための前提条件は次のとおりです。
+ Billing AWS and Cost Management コンソールで分割コスト配分データを有効にする必要があります。詳細については、「[分割コスト配分データを有効にする](https://docs.aws.amazon.com/cur/latest/userguide/enabling-split-cost-allocation-data.html)」を参照してください。
+ 分割コスト配分データを追跡する EKS クラスターが必要です。新しいクラスターを作成するか、既存のクラスターを使用できます。詳細については、「*Amazon EKS ユーザーガイド*」の「[Amazon EKS クラスターを作成する](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html)」を参照してください。

## EKS メトリクスを転送するように Amazon CloudWatch Container Insights を設定する
<a name="forward-eks-metrics-cloudwatch"></a>

EKS メトリクスを転送するには、CloudWatch エージェントを設定して構成する必要があります。[Amazon CloudWatch Observability EKS アドオンまたは Amazon CloudWatch Observability Helm チャート](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Observability-EKS-addon.html)を使用して、Amazon EKS クラスターに CloudWatch エージェントと Fluent Bit エージェントをインストールできます。CloudWatch エージェントをインストールして設定する方法については「*Amazon CloudWatch ユーザーガイド*」の「[Amazon CloudWatch Observability EKS のクイックスタート](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-setup-EKS-addon.html)」を参照してください。

CloudWatch エージェントと EKS アドオンに必要な最小バージョンは次のとおりです。
+ CloudWatch エージェントバージョン: v1.300045.0
+ CloudWatch Observability EKS アドオンバージョン: v2.0.1-eksbuild.1

## Amazon CloudWatch のコストを見積もる
<a name="estimate-cloudwatch-costs"></a>

分割コスト配分データで Amazon CloudWatch Container Insights を使用する機能を有効にすると、Amazon CloudWatch Container Insights に `pod_cpu_usage_total` と `pod_memory_working_set` の 2 つの新しいメトリクスが追加されます。詳細については「*Amazon CloudWatch ユーザーガイド*」の「[Amazon EKS および Kubernetes Container Insights のメトリクス](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-metrics-EKS.html)」を参照してください。

**機能に関連するコストを理解するには**

1. [https://aws.amazon.com/cloudwatch/pricing/](https://aws.amazon.com/cloudwatch/pricing/) で Amazon CloudWatch 料金表を開きます。

1. 「**有料利用枠**」セクションに移動します。

1. **[Container Insights]** タブを選択します。

1. コストの詳細な計算については、「**料金の例**」セクションに移動し、「**例 13 - Amazon EKS および Kubernetes 用 Container Insights**」を参照してください。