タグ付けを使用したコストデータの管理

Cost Management Service 2021

リソースの編成およびタグを使用したコストの割り当て

概要

本ガイドでは、コスト管理でのタグ付けの仕組みについて説明し、タグおよびラベルを使ってコストデータを管理するためのストラテジーについて説明します。

第1章 タグ付けを使用したコストデータの管理

本ガイドでは、タグ付けがコスト管理でどのように機能するか、タグ付けを使ってリソースを最良に整理し、表示してコストを管理する方法を説明します。

本書の改善が提案されている場合やエラーが見つかった場合は、コスト管理コンポーネントの Cloud Software Services(cloud.redhat.com) に対して、http://bugzilla.redhat.com から Bugzilla レポートを送信してください。

第2章 タグ付けストラテジーの計画

2.1. タグを使用する理由

タグ(ラベルとも呼ばれる)は、組織が複数の方法で使用できるリソースに割り当てられるカスタムメタデータの文字列です。

コスト管理のコンテキストでは、タグを使用すると、費用データのさまざまな部分間を区別および割り当てることができます。これにより、ビジネスロジックとリソース間のギャップを埋めることができます。これにより、組織固有の情報を割り当て、後でダイジェスト情報を利用できます。

数多くのプロジェクトや技術サービス(環境、リージョン、コストセンターなど)がビジネスアプリケーションをサポートするため、タグはビジネス概念をマッピングして明確にするレポートを行うことができます。これにより、適切に割り当てられるタグを使用することで、ビジネスの概念別にグループ化されたコストを表示しやすくなります。タグは、クラウド内の階層を補完する場合や、クラスター(プロジェクトなど)に特定の階層が存在している特定の階層を補完する場合に使用する必要があります。

タグは、コスト管理よりも多くのアプリケーションで使用されることがあります。たとえば、ビジネス自動化、運用プロファイル、アクセスおよびセキュリティー制御などの特定の操作を定義することは可能で、それらを使用することが推奨されています。次に、これらのタグに基づいてポリシーを適用することができます。ただし、本書ではこれらのユースケースを考慮しません。クラウドプロバイダーは、リソースに関連するタグまたはラベルの数に制限を配置するため、コスト管理のためにタグ付けストラテジーを定義する前に、すべての用途を考慮する必要があります。

また、タグは、リソースをプロジェクトまたはサブプロジェクトに直接整理できない場合、リソースを小さなユニットに分割するために使用できます。たとえば、多くのサービスを実行して異なるビジネス機能を提供するようにする共有クラスターは、タグを使用してアプリケーションを区別せずに、アプリケーションをプロジェクトに分割することができます。さらに、AWS アカウントはプロジェクトに対して複数の異なるサービスを実行できます。また、これらのサービスは、(ロードバランサーまたは他の共有リソースなど)複数のアプリケーション間で共有されることがあります。

さらに、タグを使用すると、ソースの関係を特定し、同じ環境、コストセンター、またはチームでタグ付けされた複数のクラスター全体でアプリケーションを分類できます。そのため、開発、品質、または実稼働クラスターで実行する際にアプリケーションのコストを特定することができます。また、タグは、リソース間の直接リンクではない場合(RDS データベースとそれを使用する OpenShift プロジェクト間のリンクなど)に依存関係を特定するのに役立ちます。

2.2. タグ付けストラテジーについての考慮事項

タグ付けストラテジーを計画する際に、以下の考慮事項は、ソース用のコストを整理し、報告する方法を決定するのに役立ちます。

方法
リソースのタグを最初に割り当てる際に、Crawl(Walk)および Run ストラテジーを実装することがベストプラクティスです。組織の目的を達成するのに必要なタグの最小数を使用してください。次に、その基盤を経時的に構築します。組織がコスト管理をどのように活用するかを理解するため、タグ付けストラテジーの実装におけるスキルが向上します。
ビジネスからレポートへのマッピング

レポートするビジネスパースペクティブを定義します。たとえば、コスト管理のためのタクソノミーは、以下の異なるパースペクティブを考慮できます。

所有権と使用方法:

リソースの所有者とリソースの所有者を定義します。たとえば、リソースを要求したユーザーの一意識別子と、実際にリソースを使用しているユーザーの一意識別子。

テナンシー:

お使いの環境が共有されている場合は、どのグループや事業ユニットがリソースを要求したかを理解すると便利です。ユーザーが異なるグループの一部である場合は、1 つのグループを選択する必要があります。コストの報告については、コストのセンターを使用してこれを実行できますが、部署、プロジェクト、またはパートナー企業も適切な候補となります。

location:

ソフトウェアをグローバルにデプロイした組織では、クラウドプロバイダーはリソースが実行されているリージョンをすでに特定しますが、プライベートクラウドは異なる場合があります。

環境またはステージ:

リソースを作成または実行する環境に応じて、異なるコストの意思決定を行うことができるように、開発と実稼働を区別する場合があります。開発パイプラインに、開発、テスト、ステージング、事前実稼働および実稼働環境などのステージがすでに含まれる場合、これは適切な候補となります。

アプリケーション/プロジェクト/サービス/イベント:

ご使用の環境には、イベントの一時的なリソースのグループなどのサービスが提供されます(例: 顧客中心な競合)。アプリケーションバージョンを含めることもできます。

ラベルの標準化

一貫性は、正確なコストレポートの結果を提供するタグ付けストラテジーの最も重要な要素です。

タグ付けが必要なリソース、必須なタグ、およびオプションのタグを定義する明確なタグ付けポリシーを作成し、解釈する部屋がないことを確認します。

リスト間で値を選択する必要がある場合は、これらの値が定義され、一貫性があり、簡単にアクセス可能となるか、またはそのリストがユーザーに提示されていることを確認します。たとえば、「開発」キーで開発を定義する場合には、「Dev」、「DEV」、または「R&D」などのバリエーションも使用して、リソースを「開発」として識別します。

ソース上のすべての要素をタグ付けします(手動または自動化経由)。

タグ付けされていないリソースは報告できないため、できるだけ多くの要素をタグとして報告することはできず、人的エラーを防ぐために自動化を使用することが理想的です。ソースには、タグ付けに使用できるさまざまな自動化機能があります。

  • Azure では、Azure Policies を使用して、ルールと規則のタグ付けを実施し、期待値に準拠しないリソースのデプロイを避けることができます。プロビジョニング時に必要なタグを自動的に適用するポリシーや、日付に事前定義された形式を有効にするポリシーや、一部のリソースタイプで必須タグの一部が必要となるポリシーを作成できます。
  • AWS では、同じ場合に IAM ポリシーを使用できます。さらに、Ansible などの自動化ツールを使用して、プロビジョニング中に必要なタグを追加し、すべてのリソースが適切にタグ付けされるようにすることができます。
  • OpenShift Container Platform にはラベルリングを自動化する方法がありません。
タグを頻繁に確認し、必要に応じて改良します。

タグ付けスキームを後で調整する必要がある場合でも、タグを定義し、コスト管理で早期に使用してください。

作成されたレポートを、直接ビジネスの所有者とステークホルダーで確認し、タグが希望するレポートを生成し、タグ付けストラテジーを数週ごとにレビューして最適化できるようにします。

タグの用語の選択
  • メタデータにアクセスせずにリソースを特定できる名前でリソースに名前を付け、メタデータを追加して継続します。クラウドの多くは、適切に実行するためのガイドがあります。リンクについては 5章関連情報 を参照してください。
  • リソースをキーと値にマップします。キーはパースペクティブにマップしますが、値はキーごとに許可される異なるオプションを定義します。値は Null になることがあります。
注記

すべてのソースが同じ識別子を許可し、異なる制限があるわけではありません。ソース別の制限については、「ソースタイプ別のタグ指定」 を参照してください。

第3章 コスト管理でのタグおよびラベルの設定

コスト管理がタグを使用してコストデータを自動的に編成するには、各ソースでタグを設定する必要があります。

ソースをコスト管理に追加した後に、以下を行います。

  1. 各ソースのタグまたはラベルリソースです。「ソースでのタグの設定」 を参照してください。
  2. (オプション)OpenShift タグをグループ化して、各ソースのコストデータビューをさらに整理できるようにします。「OpenShift タグのグループ化の有効化」 を参照してください。
  3. コストデータのビューを最適化するために、タグを改善して追加します。「タグ付けストラテジーについての考慮事項」 を参照してください。

3.1. コスト管理の関連付けのタグ

AWS および Azure および OpenShift のタグは、key:value ペアで構成されます。key:value ペアが一致すると、AWS/Azure および OpenShift 費用はコスト管理に自動的に関連付けられます。コスト管理でのタグの一致は、大文字と小文字が区別されません。たとえば、AWS リソースがタグ付けされた APP と、タグ付けする OpenShift リソースには一致します

表3.1 例: タグの一致

ソースおよびリソースタイプキー

AWS リソース(RDS)

APP

コスト管理

OpenShift Pod

app

cost-management

AWS リソースタグが複数の OpenShift プロジェクトに一致する場合、そのリソースのコストおよび使用状況は一致するプロジェクト間で均等に分割されます。

これは、インスタンス ID ノード関係で一致する AWS コンピュートリソースの場合ではないことに注意してください。この場合、コストおよび使用状況は、OpenShift クラスター内のプロジェクトのリソース消費についての情報を使用してダウンします。

デフォルトでは、コスト管理は、Amazon EC2 インスタンス ID または Azure 仮想マシンインスタンス ID を、そのインスタンスで実行されている OpenShift Container Platform ノードに関連付けることで、AWS のコンピュート使用量およびコストを追跡します。

注記

現時点では、Google Cloud Platform で実行される OpenShift Container Platform リソースはコスト管理で自動的に関連付けられません。この機能はまもなく利用可能になります。

3.1.1. コスト管理のタグマッチング階層

AWS または Azure インスタンスで実行されている OpenShift リソースを特定するには、コスト管理は以下の順序でソース間のタグと一致します。

  1. ダイレクトリソースマッチング(AWS EC2 インスタンス ID または Azure 仮想マシンインスタンス ID)
  2. 特殊な OpenShift タグ
  3. カスタムタグ

3.1.1.1. ダイレクトリソース一致(インスタンス ID)

ソースは、これらの識別子を自動的に適用します。このようなタグ付け形式は、Azure または AWS インスタンスと OpenShift ノード間の直接リンクを提供します。

AWS は、すべての EC2 インスタンスを割り当てます(例: i-01f44b3d90ef90055)。OpenShift ノードは、クラスターが AWS リソース識別子を使用して実行されている AWS EC2 インスタンスに直接照合されます。OpenShift はコスト管理(Prometheus データから生成される)のコスト管理でレポートされます。これには、ノードのこの識別子が含まれます。Azure と同様に、各仮想マシンインスタンス ID はコスト管理のために OpenShift レポートに含まれています。

3.1.1.2. 特殊な OpenShift タグ

コストを OpenShift に関連付けるために使用できる 3 つの特殊なケース AWS タグがあります。

  • openshift_cluster
  • openshift_node
  • openshift_project

これらのタグの優先順位はカスタムタグよりも優先されます。特に、同じ AWS インスタンスで実行される異なる OpenShift クラスターのコストが区別されます。

このタグ付け方法を使用して OpenShift クラスターを識別するには、AWS インスタンスにキー openshift_cluster のタグを付け、OpenShift ソース名を値として提供します。以下の例では、コスト管理アプリケーションの OpenShift ソースの名前は dev-cluster です。

表3.2 例: 特殊な OpenShift タグ

ソースおよびリソースタイプキー

AWS リソース(RDS)

openshift_cluster

dev-cluster

OpenShift クラスター

必要なタグはありません。これは、コスト管理の OpenShift ソースの名前が dev-cluster の場合に一致します。

必要なタグはありません。

3.1.1.3. カスタムタグ

任意の key:value の組み合わせをタグとして使用し、コスト管理は同一のタグキーと値を関連付けます。コストは、タグキー、アカウント、サービス、リージョン別にグループ化することができます。これにより、そのタグのコストの確認や課金が可能になります。

表3.3 例: カスタムタグ

ソースおよびリソースタイプキー

AWS リソース(RDS)

team

engineering

OpenShift Pod

team

engineering

3.2. ソースでのタグの設定

どのタグのコスト管理インポートを制御するには、ソースで表示するタグをアクティブ化または有効化します。

3.2.1. AWS リソースへのタグの追加

Amazon は、EC2 インスタンスリソース識別子(例: i-PEER9)などの特定の識別子を自動的に作成します。この数字は、タグと同様のコスト管理を使用します

独自のタグを個別のリソースレベルで追加することもできます。コスト管理アプリケーションにエクスポートするには、コストおよび Usage レポートについて、これらのタグをアクティブ化する必要があります。

以下の手順を使用して、コスト管理の AWS タグを設定します。

手順

  1. タグを作成し、AWS リソースにこれを適用します。

    手順については、AWS ドキュメントの「User-Defined Cost Allocation Tags 」を参照してください。

  2. Cost and Usage Report を使用して、コスト管理アプリケーションが収集するタグをアクティベートします。AWS Billing コンソールで、Costing Tags エリアからアクティブ化するタグを選択します。

    手順は、AWS ドキュメントの「Activating the AWS-Generated Cost Allocation Tags 」を参照してください。

3.2.2. タグの Azure リソースへの追加

Azure ソースを追加すると、仮想マシンインスタンスの識別子が自動的に作成されます。このインスタンスの識別子は、Azure リソースを関連する OpenShift リソースに関連付けるためのタグと同様に使用します。

個別のリソースレベルで Azure に独自のタグを追加することもできます。

Azure ドキュメントの手順に従い、コスト管理に Azure タグを作成し、適用します。タグを使用して Azure リソースおよび管理階層を整理します

3.2.3. Google Cloud リソースへのタグの追加

カスタムラベルは、仮想マシンインスタンス、イメージ、および永続ディスクなどの Google クラウドリソースに適用できます。これらのラベルは、BigQuery エクスポートに自動的に追加され、コスト管理に送信されます。

手順

3.2.4. OpenShift namespace でのラベルの表示

OpenShift と同等の AWS または Azure タグは、キーと値のペアで構成されます。コスト管理は、Prometheus メトリクスおよび Cost Management Metrics Operator を使用して、ノード、Pod、および永続ボリューム(または永続ボリューム要求)から OpenShift タグデータを収集します。

利用可能なタグを表示するには、OpenShift Web コンソールのリソースに移動します。割り当てられたラベルは Labels 見出し(例: openshift.io/cluster-monitoring=true )の下に一覧表示されます。

3.2.4.1. OpenShift タグのグループ化の有効化

デフォルトでは、OpenShift の詳細ページのコスト管理グループ OpenShift コストデータをクラスター、ノード、およびプロジェクト別に実行します。タグキーによるデータのグループ化は、ビューをさらにカスタマイズするのに役立ちます。

タグキーでコストデータをグループ化するには、cloud.redhat.com アプリケーション設定でタグキーを有効にする必要があります。

前提条件

手順

OpenShift タグキーをグループ化できるようにするには、以下を実行します。

  1. configuration gear (設定をクリックして、Applications > コスト管理に移動します
  2. Enable OpenShift labels をクリックします。
  3. 利用可能なタグリストからコスト管理アプリケーションで、グループ化するキーを選択し、矢印を使用してタグを Enabled Tags 一覧に移動します。
  4. 送信 をクリックして変更を保存します。

検証手順

有効なタグキーは、View by list で、OpenShift の詳細管理のコスト管理エリアからコストをグループ化できるようになりましたたとえば、View by: Tag を選択した場合は以下のようになります。

cost tag key

3.2.5. コスト管理でのタグの無効化

すべてのクラウドプロバイダータグは、デフォルトでコスト管理でアクティベートされます。リソースタグが多すぎると、コスト管理のパフォーマンスに影響する可能性があります。不要なタグを使用すると、タグをグループ化し、key:value ペアを照合する際に、コストをより複雑にすることができます。そのため、Red Hat は、これらの潜在的な問題を軽減するためにアクティブに使用していないタグを無効にすることを推奨します。

タグを無効にし、パフォーマンスを強化するには、以下の手順に従います。

手順

  1. https://cloud.redhat.com/settings/applications/cost-management に移動します。

    このページから、クラウドプロバイダータグは、利用可能なタグとレポートのタグ (OpenShift Container Platform のレポート の利用可能なラベルおよび ラベル )の 2 つのボックスにソートされます。

    Reporting ボックスの Tags には、現在アクティブなタグが含まれます。

  2. Tags for Reporting ボックスで、無効にするタグの名前をクリックします。
  3. < arrow をクリックしてタグを Available tags ボックスに移動します。
  4. Save をクリックします。

    このタグは、コスト管理アプリケーションに対して非アクティブになりました。

  5. 追加タグにこれらの手順を繰り返します。または、<< ダブル矢印を使用してすべてのタグを移動するか、報告ボックスの Tags に戻って再度それらを有効にできます。

第4章 コストデータの表示およびエクスポート

4.1. コストデータビューのフィルタリング

タグを使用すると、コストデータのビューをカスタマイズできます。特定のリソースがコストが増加したり、データが異常に見える理由を調査するために、タイプ(例: プロジェクト、ノード、クラスター)またはラベルでリソースを表示できます。

この例は、クラスター内の各 OpenShift プロジェクトの量を確認する方法を説明します。

前提条件

手順

  1. OpenShift の詳細メニューから 、フィルターボタンをクリックして、タグを選択します
  2. Choose key ドロップダウンリストで、フィルタリングするキーを選択します。たとえば、環境タグを使用してクラスターを表示する environment を選択します。タグキーを選択すると、別のドロップダウンが表示され、フィルタリングする値を選択するようになります。
  3. Choose value ドロップダウンリストで、フィルターに使用する値を 1 つ以上選択します。たとえば、選択したqe および dev は、これらのタグを持つ OpenShift プロジェクトのコストデータを表示します。
  4. 各プロジェクトの詳細情報を表示するには、以下を実行します。

    • 各リソースの矢印アイコンをクリックし、リソースが属するクラスター、CPU およびメモリーの使用状況、制限、および要求などの詳細情報を表示します。
    • more options (他のオプション)をクリックして、より多くの表示オプションを表示します。

      • View price list をクリックし、OpenShift メトリクスに適用されているレートを表示して、コストを計算します。
      • View history data をクリックして、日常の使用比較ビューを開きます。これにより、そのリソースの使用状況、要求、および制限を比較します。
      • View all projects または View all tags をクリックして、関連するリソースおよびメタデータを表示します。
  5. Clear all filters をクリックして OpenShift details ビューをリセットします。

4.2. タグカテゴリーによるコストデータのグループ化

タグカテゴリー別にリソースをグループ化して、コストデータをさらに調べることができます。

グループ化とフィルタリングは、コストや問題の根本的な原因を特定する、またはコストセンターや特定の環境など、残りを独立して機能する環境の一部を調べるのに役立ちます。

これにより、環境の残りの部分に関する情報を非表示にし、コストデータでの不要な複雑さを回避し、必要な情報を検索できるようになります。この情報は、他のデータで非表示にできます。

この例は、OpenShift Container Platform でラボ環境を実行している人物プロバイダーに、タググループを使用して学生およびコースでコストの情報をフィルターできるかを示しています。

前提条件

手順

  1. Group cost by: フィールドの OpenShift の詳細ページから、コストをグループ化するタグキーを選択します。この場合は Tag Key:user を選択し、student ユーザーがグループ化した結果を表示します。
  2. フィルターエリアで Tag を選択します。
  3. Choose key 一覧で、タグキーユーザーを選択します
  4. Choose value ドロップダウンリストで、course_id と course_type の値をチェックして、コース X とコースのコストを受講した生数を特定します。
  5. 各リソースの詳細情報(例: コース X のコストがどの程度か)を表示するには、以下を実行します。

    • 各リソースの矢印アイコンをクリックし、リソースが属するクラスター、CPU およびメモリーの使用状況、制限、および要求などの詳細情報を表示します。
    • View Historical Data をクリックして、日常の使用状況比較ビューを開きます。このビューでは、リソースの使用状況、要求、および制限を月ごとに比較します。
    • more options (他のオプション)をクリックして、より多くの表示オプションを表示します。

      • View history data をクリックして、日常の使用比較ビューを開きます。これにより、そのリソースの使用状況、要求、および制限を比較します。
      • Export data をクリックして、レポート用の .csv ファイルを作成します。日次または月単位のアグリゲートを指定し、Generate and download をクリックします。
  6. Clear all filters をクリックして OpenShift details ビューをリセットします。

4.3. レポートツールへのコストデータのエクスポート

タグを使用すると、コストデータのビューをカスタマイズできます。これは、特定のリソースにコストが増加したり、データの検索に異常が発生した理由について調査する場合に便利です。

以下の例では、特定の OpenShift リソースのデータを表示し、データを必要なレポーティングツールにエクスポートする方法を説明します。

前提条件

手順

  1. OpenShift の詳細メニューから 、フィルターボタンをクリックして、タグを選択します
  2. Choose key ドロップダウンリストで、フィルタリングするキーを選択します。たとえば、version を選択します。タグキーを選択すると、別のドロップダウンが表示され、フィルタリングする値を選択するようになります。
  3. Choose value ドロップダウンリストで、フィルターに使用する値を 1 つ以上選択します。たとえば、選択したqe および dev は、これらのタグを持つ OpenShift リソースのコストデータを表示します。
  4. リソースに関するデータをエクスポートするには、データをエクスポートする各リソースの横にあるチェックボックスにチェックを入れます。エクスポート をクリックしてエクスポートオプションダイアログを開きます。
  5. 日次または月単位のアグリゲートを指定し、Generate and download をクリックします。

CSV ファイルはローカルシステムにダウンロードされ、必要なレポートツールでこれを使用できます。

注記

また、各リソースの more options (より多くのオプション)> Export data メニューからデータを.csv ファイルとしてエクスポートすることもできます。

Clear all filters をクリックして OpenShift details ビューをリセットします。

第5章 関連情報

5.1. ソースタイプ別のタグ指定

タグ付け標準はソースタイプによって異なります。ソース全体で同じタグ/ラベルを使用するには、異なるプロバイダー全体で最も一般的なすべての制約を使用する必要があります。

以下の表は、AWS、Azure、および OpenShift Container Platform 4 でのタグ付けとラベルの基準をまとめています。

表5.1 ソースによるタグ付けの指定

基準AWSAzureRed Hat OpenShift

名前

タグ

タグ

ラベル

形式

キー & 値

名前と値

key & value Keys: [prefix/]name Prefix: must be a DNS subdomain

空の値を許可します

Yes

キーごとの一意のラベル

Yes

大文字と小文字を区別します

No

リソース別の制限

50

50(ストレージの 15)

該当なし

キーの長さ

128

512(ストレージの場合は128)

253(prefix) / 63(name)

値の長さ

256

256

63

許可される文字

UTF-8 で表す文字、数字、およびスペースは + - = . _ : / @

タグ名には、<、>、%、&、\、?、/ の文字を含めることはできません。

名前にセグメントが必要で、63 文字以下である必要があります。先頭に英数字([a-z0-9A-Z])、ハイフン(-)、アンダースコア(_)、ドット(.)、および英数字を使用し、

制限

プレフィックス「aws:」が予約されています。EC2 に適用されるタグは任意の文字を使用できます。すべてのリソースタイプがタグをサポートしている訳ではありません。

すべてのリソースタイプがタグをサポートしている訳ではありません。一般的な仮想マシンはタグをサポートしません。リソースグループに適用されるタグは、リソースによって継承されません。

プレフィックス kubernetes.io/ および k8s.io/ は予約されています。すべてのリソースタイプがタグをサポートしている訳ではありません。

備考

コストおよび使用状況のファイルおよび請求レポートに含まれるタグキーを選択する必要があります。

JSON 文字列を使用してキーの制限を高くすることができます。

プレフィックスを省略すると、ラベルキーはユーザーにプライベートであると見なされます。

5.2. 関連資料

以下のリンクでは、各ソースタイプのタグ付けに関する詳細なガイダンスを提供します。

AWS:

OpenShift:

Microsoft Azure: