FlexReports では、請求書のデータをオンデマンドで、またあらゆる変数にわたって柔軟に分析できます。次のようなメリットがあります。
現在、FlexReport にさらに多くのパースペクティブを追加することは AWS のコストと使用状況レポート データセットでは可能です。この機能は、順次、他のクラウド プラットフォームのデータセットで使用できるようになる予定です。
コスト履歴レポートや FlexReport などのコストベースのインタラクティブなレポートは、これらのレポートのためにデータを準備する方法によって、使用するディメンションに応じて異なる場合があります。そのため、レポートの生成方法、パースペクティブの設定方法、利用可能なディメンジョンに違いが生じます。詳細については、VMware Aria Cost ナレッジベースの記事を参照してください。
FlexReport のデータ ソースは、Amazon のコストと使用状況レポート (CUR)、Azure エンタープライズ契約 (EA)、GCP BigQuery 請求エクスポート、Alibaba Cloud 請求書、Kubernetes コンテナの使用量、および Kubernetes ノードの使用量です。また、FlexReports で AWS、Azure、GCP のコストのアノマリ データを使用することもできます。
注FlexReport は、13 か月間の履歴データをサポートします。
プラットフォームが提供するテンプレートを使用して、新しい FlexReports を構成できます。これらのテンプレートには、特定のレポートを生成するための事前構成済みの設定があり、テンプレートをベースとして使用して新しいカスタム レポートを作成できます。
FlexReport テンプレートを使用するには、次の手順を実行します。
FlexReport は FlexReport を開き、レポートの編集 を選択して、いつでも編集できます。
カスタム FlexReport を作成するときに、次のオプションを定義できます。
パースペクティブ名ではピリオドと空白はサポートされておらず、表示されるレポートのディメンションから削除されます。
パースペクティブを削除または名前変更すると、対応する保存済み FlexReport が失敗します。保存されたレポートからパースペクティブを削除して、失敗したレポートを更新します。
[レポートのプレビュー] セクションには、[レポート構成] セクションでの選択内容に基づいてレポート構造が表示されます。レポート プレビューを使用して、レポートが正しく設定されていることを確認します。
- レポート クエリを作成または変更する場合は、選択したすべての列にエイリアスを含めます。例:SELECT
timeInterval_Month
ASMonth
。これは、既存のすべてのレポートと新しいレポートに適用されます。サブスクリプション(デフォルトは メジャー および ディメンション)を持つ既存のすべてのレポートのカスタム クエリは、エイリアスを含めるようにすでに変更されています。クエリにエイリアスを含めない場合、レポートにエラーが表示されます。- エイリアスには、アンダースコア (_) 以外の特殊文字を含めることはできません。
FlexReports にサブスクライブして、E メールで通常のレポートを受信するか、レポートを S3 バケットに配信します。FlexReport にサブスクライブするには、次の手順を実行します。
リソース タグの使用および命名については、次の点を考慮してください。
チャートを使用して、FlexReport データを CSV ファイルにエクスポートせずに可視化します。
FlexReport > チャート ビュー ページで、チャート タイプ、X 軸/Y 軸 および カテゴリ フィールドを変更し、フィルタ を編集できます。ドリルダウンして、よりきめ細かい詳細なデータを表示することもできます。
FlexReports の可視化には、次のメリットがあります。
FlexReport は、13 か月間の履歴データをサポートします。
新しい FlexReport を編集または作成するときに、グラフのプレビュー セクションで次のグラフ パラメータを構成します。
注:ディメンションとメジャーを区別できないカスタム SQL シナリオでは、グラフ座標に適切な値を選択します。
次に示すのは、以下のパラメータで構成された FlexReport の チャート プレビュー の例です。
カテゴリ:なし
カテゴリ を選択すると、グラフに詳細を重ねることができます。たとえば、所有者 に基づくパースペクティブなどです。
チャート プレビュー はデータセット全体を表すものではありません。完全に生成されたレポートから最大 100 行のデータのみが考慮されます。レポートを保存して実行すると、FlexReport には完全なデータが表示されます。
FlexReport のグラフを作成した後、レポート > FlexReports でレポート名をクリックすると、レポート内のグラフを表示できます。
レポート名の下のタイムスタンプは、レポートが最後に実行された日時を示します。
グラフの下の表には、適用されたフィルタに対応するすべての列の集計データが表示されます。すべての列を表示 チェックボックスをクリックして、レポートのすべてのデータ列を表示します。表の右上にある検索オプションを使用して、すべての列で特定のデータをフィルタリングできます。
さらに任意の列を並べ替えたり、このデータ テーブルにフィルタを適用したりできます。
FlexReport にドリルダウンすると、レポートの最初の 100 行のみが表示され、徐々に増加します。ただし、レポート データのフィルタリングまたは並べ替えは、100 行だけでなくデータセット全体で実行されます。これは、グラフの下のレポート表形式ビューにも適用されます。
フィルタ をクリックして、グラフ座標の選択したディメンションとメジャーを表示します。すべて表示 をクリックして、使用可能なすべてのディメンションとメジャーを表示します。その後、グラフの座標としてこれらのいずれかを選択して適用できます。
デュアル Y 軸を使用すると、さまざまなデータセットのデータをまとめて可視化できます。これは、大きさが異なる 2 つの異なるデータセット間の相関を示し、データをより簡単に解釈するのに役立ちます。
次のレポートの例に示すように、各データセットには個別の軸があります。
この例では、SUM_lineitem_UnblendedCost
は チャート タイプ で表され、SUM_lineitem_Unblendedrate
と SUM_pricing_publicOnDemandCost
は チャート タイプのデュアル Y 軸 で表されます。
FlexReport グラフ ビューには、前回レポートが実行された時刻に基づいてデータが表示されます。ライブ モード に切り替えると、利用可能な最新データとともにレポートを表示できます。ライブ モードでは、レポートの更新または保存は行われず、現在のデータでのみ更新されます。使用可能なグラフ パラメータまたはフィルタは変更できますが、すでに構成されているレポートを実行するよりも応答が遅くなる場合があります。
ライブ モード を有効にするには、FlexReport > グラフ ビュー ページの右上隅にあるトグルを選択します。
レポートへのリンクを共有するには、FlexReport を開き、共有 をクリックします。
凡例をフィルタリングすることで、データが制限されたグラフ ビューを共有できます。凡例を選択または選択解除すると、共有リンクには選択した凡例のデータのみが表示されます。
デフォルトでは、管理者またはパワー ユーザーのロールのユーザーは、FlexReports を作成、読み取り、更新、および削除できます。このユーザーは、任意の組織単位に属することができます。FlexOrgs の組織階層の詳細については、組織階層の構造を参照してください。
標準ロールのユーザーは、デフォルトでは、レポートの表示のみが許可されます。ただし、すべての FlexReport 権限を持つカスタム ロールを作成できます。
FlexReports 権限を選択するには、セットアップ > 管理 > ロール の順に移動します。ロール エディタの 権限 セクションで、FlexReports を展開し、必要な権限を有効または無効にします。
FlexReport は、FlexReport の read
権限を持つロールに割り当てられたユーザーにのみ表示されます。許可されていないユーザーが FlexReport にアクセスしようとすると、次のエラー メッセージが表示されます:User is not authorized to perform this action, insufficient Role Privileges for FlexReports
FlexReport データセット レベルの権限(きめ細かい権限)を使用すると、チーム内で異なったアクセス権を付与したり、各 FlexReport データセットでアクションを実行するために必要なアクセス権のみをユーザーに付与したりできます。現在、これらのきめ細かい権限は、AWS のコストと使用状況レポート、Azure エンタープライズ契約、GCP BigQuery 請求エクスポート、Alibaba Cloud 請求書 で使用でき、適切なユーザーの適切なアクセスを確保するために FlexOrg によって FlexReport データセット がサポートされています。
きめ細かい権限を選択するには、セットアップ > 管理 > ロール の順に移動します。ロール エディタの 権限 セクションで、FlexReports > データ ソース を展開し、必要な権限を有効または無効にします。
きめ細かい権限は GraphQL API を使用して割り当てることもできます。詳細については、createRoleDocument API を参照してください。
FlexReport で Azure コスト管理(ベータ版)データセットを使用するには、Azure ポータルで Azure エンタープライズ契約 (EA) を構成し、CloudHealth ポータルで登録リーダー ロールを構成してあることを確認します。詳細については、「Enterprise Agreement Azure アカウントの構成」を参照してください。
Azure コスト管理(ベータ版)データセットは、次の Azure 契約をサポートします。
次のクエリを使用して、サポートされている Azure 契約タイプの生コストを抽出できます。
{
"sqlStatement": "SELECT timeInterval_Month AS Month, SUM(CostInReportingCurrency) AS SUM_CostInReportingCurrency, AccountType AS AccountType, MetricType AS MetricType FROM AZURE_COST_USAGE GROUP BY timeInterval_Month, AccountType, MetricType",
"needBackLinkingForTags": true,
"dataGranularity": "MONTHLY",
"timeRange": {
"last": 1,
"excludeCurrent": false
},
"limit": -1
}
たとえば、当月と先月のコスト データを表示する場合は、次のメジャーとディメンションを使用して FlexReport を作成できます。
メジャー - CostInReportingCurrency
– Azure 契約タイプのレポート通貨で計算されたコスト。
ディメンション - MetricType
- 表示される Azure コストが実費か償却かを示します。AccountType
- それぞれのコストが属する Azure 契約を示します。
- 現在、Azure コスト管理データセットはパブリック ベータ版であり、当月および過去数か月のコスト データのみをサポートしています。データセットは、データセット内でサポートされているすべての Azure 請求タイプについて、13 か月分のコスト データをまもなくサポートする予定です。
- Savings Plan のコスト データを表示するには、アカウント ディメンションで
benefitId
およびbenefitName
を選択します。
前提条件
レポート ステータスがアクティブな動作中のクラスタがあり、VMware Aria Cost が環境のメトリックを収集していることを確認します。VMware Aria Cost コレクタを展開する方法の詳細については、「VMware Aria Cost での Kubernetes の使用開始」を参照してください。
Kubernetes 使用量管理は、次のデータセットをサポートします。
時間単位のコンテナ使用量を取得するには
FlexReport > 新しいレポート ページで、データソース を Kubernetes コンテナの使用量 に変更します。[レポート クエリ] セクションを展開し、編集 をクリックします。クエリ エディタでクエリを更新し、適用 をクリックします。
{
"sqlStatement": "SELECT timeInterval_Hour AS Hour, timeInterval_Day AS Day, TimeInterval_Month AS Month, ClusterName as Cluster_Name, ContainerImage as Container_Image, ContainerName as Container_Name, AssetId as asset_id, AssetTypeId as asset_type_id, WorkloadName as Workload_Name, WorkloadType as Workload_Type, NamespaceName as Namespace_Name, CloudProviderId as Cloud_Provider_ID, CloudAccountId as Cloud_Account_ID, SUM(SumOfCpuResourcesRequested) AS CPU_Requests, SUM(SumOfCpuResourcesLimits) AS CPU_Limits, SUM(SumOfAverageCpuUsed) AS CPU_Usage_Average, SUM(SumOfMaxCpuUsed) AS CPU_Usage_Max, SUM(SumOfMinCpuUsed) AS CPU_Usage_Min, SUM(SumOfMemoryResourcesRequested) AS Memory_Requests_GB, SUM(SumOfMemoryResourcesLimits) AS Memory_Limits_GB, SUM(SumOfAverageMemoryUsed) AS Memory_Usage_Average_GB, SUM(SumOfMaxMemoryUsed) AS Memory_Usage_Max_GB, SUM(SumOfMinMemoryUsed) AS Memory_Usage_Min_GB FROM K8S_CONTAINERS_USAGE GROUP BY timeInterval_Hour, timeInterval_Day, timeInterval_Month, ClusterName, AssetId, AssetTypeId, ContainerImage, ContainerName, WorkloadName, WorkloadType, NamespaceName, CloudProviderId, CloudAccountId",
"needBackLinkingForTags": false,
"dataGranularity": "HOURLY",
"timeRange": {
"last": 192,
"excludeCurrent": false
},
"limit": -1
}
時間単位のノード使用量を取得するには
FlexReport > 新しいレポート ページで、データソース を Kubernetes ノードの使用量 に変更します。レポート クエリ セクションを展開し、編集 をクリックします。クエリ エディタでクエリを更新し、適用 をクリックします。
{
"sqlStatement": "SELECT timeInterval_Hour AS Hour, timeInterval_Day AS Day, TimeInterval_Month AS Month, ClusterName as Cluster_Name, NodeName as Node_Name, AssetId as asset_id, AssetTypeId as asset_type_id, CloudProviderId as Cloud_Provider_ID, CloudAccountId as Cloud_Account_ID, SUM(AllocatableCpu) AS CPU_Allocatable, SUM(Allocatablememory) AS Memory_Allocatable_GB, SUM(SumOfCpuResourcesRequested) AS CPU_Requests, SUM(SumOfCpuResourcesLimits) AS CPU_Limits, SUM(SumOfAverageCpuUsed) AS CPU_Usage_Average, SUM(SumOfMaxCpuUsed) AS CPU_Usage_Max, SUM(SumOfMinCpuUsed) AS CPU_Usage_Min, SUM(SumOfMemoryResourcesRequested) AS Memory_Requests_GB, SUM(SumOfMemoryResourcesLimits) AS Memory_Limits_GB, SUM(SumOfAverageMemoryUsed) AS Memory_Usage_Average_GB, SUM(SumOfMaxMemoryUsed) AS Memory_Usage_Max_GB, SUM(SumOfMinMemoryUsed) AS Memory_Usage_Min_GB FROM K8S_NODES_USAGE GROUP BY timeInterval_Hour, timeInterval_Day,timeInterval_Month, AssetId, AssetTypeId, ClusterName, NodeName, CloudProviderId, CloudAccountId",
"needBackLinkingForTags": false,
"dataGranularity": "HOURLY",
"timeRange": {
"last": 192,
"excludeCurrent": false
},
"limit": -1
}
FlexReports でサポートされる SQL 関数と機能のリスト
FlexReports でサポートされている SQL 機能は、次のとおりです。
次のセクションでは、これらの SQL 関数を使用する例をいくつか示します。
SELECT sum(lineItem_UnblendedCost) as cost FROM AWS_CUR where resourcetags_user_env = 'dev'
SELECT count(*) as count FROM AWS_CUR where resourcetags_user_env = 'dev'
SELECT max(lineItem/UnblendedCost) as maxCost FROM AWS_CUR where resourcetags_user_env = 'dev'
SELECT min(lineItem/UnblendedCost) as minCost FROM AWS_CUR where resourcetags_user_env = 'dev'
SELECT avg(lineItem/UnblendedCost) as cost FROM AWS_CUR where resourcetags_user_env = 'dev'
SELECT lineitem/resourceid, lineItem/UnblendedCost AS cost FROM AWS_CUR where resourcetags_
SELECT timeInterval_Month AS Month, SUM(lineItem_UnblendedCost) AS \"SUM(lineItem_UnblendedCost)\", LAG(SUM(lineItem_UnblendedCost), 1) over (partition by lineItem_ResourceId order by timeInterval_Month) as Prev_Month_Cost, SUM(lineItem_UnblendedCost) - LAG(SUM(lineItem_UnblendedCost), 1) over (partition by lineItem_ResourceId order by timeInterval_Month) as Delta_Cost, bill_PayerAccountId AS Bill_PayerAccountId, lineItem_ResourceId AS LineItem_ResourceId FROM AWS_CUR WHERE (lineItem_ResourceId LIKE '%cht%') GROUP BY timeInterval_Month, bill_PayerAccountId, lineItem_ResourceId ORDER BY timeInterval_Month DESC, lineItem_ResourceId DESC
SELECT COALESCE(product_productFamily, product_ProductName) AS product FROM AWS_CUR
SELECT trim(product_ProductName) AS product FROM AWS_CUR
SELECT timeInterval_Month AS Month, bill_BillingPeriodStartDate AS Bill_BillingPeriodStartDate, DATE(FROM_ISO8601_TIMESTAMP(bill_BillingPeriodStartDate)) AS Formatted_BillingPeriodStartDate, bill_BillingPeriodEndDate AS Bill_BillingPeriodEndDate, DATE(FROM_ISO8601_TIMESTAMP(bill_BillingPeriodEndDate)) AS Formatted_BillingPeriodEndDate FROM AWS_CUR
条件付き集計は、特定の条件セットに基づいて結果セットを計算する機能です。
次に、ピボットのユースケースに条件付き集計を使用する例を示します。
SELECT lineItem_ResourceId AS \"S3 Bucket\" , SUM( CASE WHEN lineItem_Operation LIKE '%StandardStorage%' THEN cast(lineItem_UnblendedCost as DECIMAL(18,3)) END) AS \"Standard Storeage Cost\",SUM( CASE WHEN lineItem_Operation LIKE '%StandardStorage%' THEN cast(lineItem_UsageAmount AS DECIMAL(18,3)) END) AS \"Standard Storage Usage\" ,SUM( CASE WHEN lineItem_Operation LIKE '%GetObject%' THEN cast(lineItem_UsageAmount AS DECIMAL(18,3)) END) AS \"GetObject Usage\", SUM( CASE WHEN lineItem_Operation LIKE '%GetObject%' THEN cast(lineItem_UnblendedCost as DECIMAL(18,3)) END) AS \"GetObject Cost\" ,SUM( CASE WHEN lineItem_Operation LIKE '%PutObject%' THEN cast(lineItem_UnblendedCost as DECIMAL(18,3)) END) AS \"PutObject Cost\",SUM( CASE WHEN lineItem_Operation LIKE '%PutObject%' THEN cast(lineItem_UsageAmount AS DECIMAL(18,3)) END) AS \"PutObject Usage\" ,SUM( CASE WHEN lineItem_Operation LIKE '%GlacierStorage%' THEN cast(lineItem_UnblendedCost as DECIMAL(18,3)) END) AS \"GlacierStorage Cost\",SUM( CASE WHEN lineItem_Operation LIKE '%GlacierStorage%' THEN cast(lineItem_UsageAmount AS DECIMAL(18,3)) END) AS \"GlacierStorage Usage\" FROM AWS_CUR WHERE (lineItem_ProductCode LIKE '%AmazonS3%') AND (lineItem_ResourceId IS NOT NULL) GROUP BY lineItem_ResourceId
SELECT lineItem_ResourceId as ResourceId, split_part(lineItem_ResourceId, ':',6) AS "SQS Queue Name", SUM(lineItem_UnblendedCost) AS "SUM(lineItem_UnblendedCost)" FROM AWS_CUR WHERE (product_ProductName LIKE '%Amazon Simple Queue Service%') GROUP BY product_productFamily, lineItem_ResourceId, split_part(lineItem_ResourceId, ':',6) ORDER BY SUM(lineItem_UnblendedCost) DESC
このトピックでは、FlexReports を使用して GCP データセットと GCP コスト履歴を比較する方法について説明します。
FlexReport GCP データセットと GCP コスト履歴 v2 を請求アカウント レベルで比較するクエリのフィルタの推奨事項は次のとおりです。
Cost_Type LIKE '%regular%'
Project_Id IS NOT NULL
{
"sqlStatement": "SELECT timeInterval_Month AS Month, SUM(Cost) AS \"SUM(Cost)\", Billing_Account_Id AS Billing_Account_Id FROM GCP_BILLING_EXPORT WHERE (Cost_Type LIKE '%regular%') AND (Project_Id IS NOT NULL) GROUP BY timeInterval_Month, Billing_Account_Id",
"dataGranularity": "MONTHLY",
"needBackLinkingForTags": false,
"timeRange": {
"from": "2021-04",
"to": "2021-05"
}
}
GCP は、Cost_Type
で丸め誤差を引き起こす可能性がある明細項目のコストを修正します。丸め誤差に対処するため、クエリには %regular%
に設定された Cost_Type
フィルタが含まれています。
FlexReport では、project_id
が null の明細項目に関連付けられているコストはすでに処理されています。ただし、これらの明細項目はデータセットから削除されません。総再割り当てコストを表示するには、gcp/project_id IS NOT NULL
フィルタを使用します。この場合、FlexReport データセットの追加の明細項目は考慮されません。