Azure Monitor ログのコストの計算とオプション

ほとんどの Azure Monitor 実装に対する最も重要な料金は、通常、Log Analytics ワークスペース内のデータの取り込みと保有に関するものです。 Azure Monitor のいくつかの機能には直接コストはかかりませんが、収集されるワークスペース データに追加されます。 この記事では、Log Analytics ワークスペースと Application Insights リソースに対するデータ料金の計算方法と、コストに影響するさまざまな構成オプションについて説明します。

ヒント

Azure Monitor のコストを削減するための戦略については、「コストの最適化と Azure Monitor」を参照してください。

価格モデル

Log Analytics の既定の料金は、取り込まれたデータ ボリュームとデータ保有期間に基づく従量課金制モデルです。 各 Log Analytics ワークスペースは個々のサービスとして課金され、Azure サブスクリプションの課金内容に加えられます。 Log Analytics の価格 は地域ごとに設定されます。 データ インジェストの量は、次に大きく依存する可能性があります。

  • 有効にされている管理ソリューションのセットとその構成。
  • 監視対象リソースの数と種類。
  • 各監視対象リソースから収集されたデータの型。

Azure Monitor の課金メーター名の一覧については、こちらを参照してください。

データ サイズの計算

データ ボリュームは、格納するデータのサイズとして測定され、GB (10^9 バイト) 単位で測定されます。 単一レコードのデータ サイズは、そのレコードの Log Analytics ワークスペースに格納されている列の文字列表記から計算されます。 データがエージェントから送信されるか、取り込みプロセス中に追加されるかは関係ありません。 この計算には、ログ インジェスト API によって追加されたカスタム列、変換、またはデータが収集されてワークスペースに格納されるときに追加されるカスタム フィールドが含まれます。

注意

この課金対象データ量計算は、通常、入ってくる JavaScript Object Notation パッケージ イベント全体のサイズよりもずっと小さくなります。 すべてのイベントの種類で平均して、課金されるサイズは受信データ サイズより約 25% 小さくなります。 小さなイベントの場合、最大 50% になる可能性があります。 この割合には、課金から除外された標準列の影響が含まれます。 コストを見積もり、他の価格モデルと比較する際には、課金対象データ サイズのこの計算について理解することが不可欠です。

除外される列

次の標準列は、すべてのテーブルに共通であり、レコード サイズの計算から除外されます。 Log Analytics に格納されている他のすべての列は、レコード サイズの計算に含まれます。 標準列は次のとおりです。

  • _ResourceId
  • _SubscriptionId
  • _ItemId
  • _IsBillable
  • _BilledSize
  • Type

除外されるテーブル

AzureActivityHeartbeatUsageOperation などの一部のテーブルに対しては、データ インジェスト料金は一切かかりません。 この情報は常に _IsBillable 列によって示されます。これは、レコードがデータのインジェスト、保持、アーカイブの課金から除外されたかどうかを示します。

その他のソリューションとサービスの料金

一部のソリューションには、無料データ取り込みに関するより具体的なポリシーがあります。 たとえば、Azure Migrate の場合、サーバー評価の最初の 180 日間は依存関係視覚化データが無料になります。 Microsoft Defender for CloudMicrosoft Sentinel構成管理などのサービスには、独自の価格モデルがあります。

固有の課金計算については、さまざまなサービスとソリューションのドキュメントを参照してください。

コミットメント レベル

従量課金制モデルに加えて、Log Analytics には "コミットメント レベル" があります。これにより、従量課金制の料金と比較して 30% も節約できます。 コミットメント レベルの価格を使用すると、従量課金制の価格より低い価格でワークスペースに対するデータ インジェストを 100 GB/日から購入することを確約できます。 コミットメント レベルを超える使用量 (超過分) については、現在のコミットメント レベルで提供されている同じ GB あたりの価格で請求されます。 (超過分は、同じコミットメント レベルの課金メーターを使用して課金されます。たとえば、ワークスペースが 200 GB/日のコミットメント レベルにあり、1 日に 300 GB を取り込む場合、その使用量は 200 GB/日コミットメント レベルの 1.5 ユニットとして課金されます)。コミットメント レベルには、コミットメント レベルが選択された時点から 31 日間のコミットメント期間があります。

  • コミットメント期間中に、より高いコミットメント レベルに変更できます。これにより、31 日間のコミットメント期間が再開されます。 コミットメント期間が終了するまで、従量課金制やより低いコミットメント レベルに戻すことはできません。
  • コミットメント期間が終了すると、ワークスペースは選択したコミットメント レベルを保持し、ワークスペースは従量課金制または低いコミットメント レベルにいつでも移動できます。
  • ワークスペースが誤ってコミットメント レベルに移動した場合は、Microsoft サポートに連絡してコミットメント期間をリセットし、従量課金制価格レベルに戻すことができます。

コミットメント レベルの課金は、 1 日単位でワークスペースごとに行われます。 ワークスペースが専用クラスターの一部である場合は、クラスターの課金が行われます。 次の「専用クラスター」セクションを参照してください。 コミットメント レベルとその価格の一覧については、「Azure Monitor の価格」を参照してください。

Azure コミットメント割引 (Microsoft Enterprise Agreement から受け取った割引など) は、従量課金制の価格と同様に、Azure Monitor ログのコミットメント レベルの価格に適用されます。 割引は、使用量がワークスペースごとまたは専用クラスターごとに課金されるかにかかわらず、適用されます。

ヒント

各 Log Analytics ワークスペースの [使用とコストの見積もり] メニュー項目には、各コミットメント レベルでのデータ インジェスト料金の見積もりが表示され、データ インジェスト パターンに最適なコミットメント レベルを選択するのに役立ちます。 この情報を定期的に確認して、別のレベルに移行することで料金を下げられるかどうかを判断します。 このビューの詳細については、「使用量と推定コスト」を参照してください。 実際の料金を確認するには、Azure Cost Management = Billing を使用します。

Dedicated クラスター

Azure Monitor ログ専用クラスターは、単一のマネージド Azure Data Explorer クラスター内のワークスペースのコレクションです。 専用クラスターでは、カスタマー マネージド キーなどの高度な機能がサポートされ、ワークスペースと同じコミットメント レベルの価格モデルが使用されますが、コミットメント レベルは少なくとも 100 GB/日である必要があります。 コミットメント レベルを超える使用量 (超過分) については、現在のコミットメント レベルで提供されている同じ GB あたりの価格で請求されます。 クラスターの従量課金制オプションはありません。

このクラスターのコミットメント レベルには、コミットメント レベルが上がった後に 31 日間のコミットメント期間があります。 コミットメント期間中は、コミットメント レベルを下げることはできませんが、上げることはいつでも可能です。 ワークスペースがクラスターに関連付けられている場合、それらのワークスペースのデータ インジェストの課金は、構成されているコミットメント レベルを使用してクラスター レベルで行われます。

クラスターの作成時に指定するクラスターには、2 つの課金モードがあります。

  • クラスター (既定) : 取り込まれたデータの課金は、クラスター レベルで行われます。 クラスターに関連付けられている各ワークスペースが取り込んだデータ量が集計され、クラスターの日次請求が計算されます。 Microsoft Defender for Cloud からのノードごとの割り当ては、クラスター内の全ワークスペースのデータ集計前に、ワークスペース レベルで適用されます。

  • ワークスペース: クラスターのコミットメント レベルのコストは、(各ワークスペースの Microsoft Defender for Cloud からのノードごとの割り当てを考慮した後) 各ワークスペースのデータ インジェスト量に応じて、クラスター内のワークスペースに比例して割り当てられます。

    クラスターに 1 日で取り込まれたデータ量合計がコミットメント レベルより少ない場合、各ワークスペースにはコミットメント レベルの一部を課金することで、その取り込まれたデータが有効な GB 単位のコミットメント レベル レートで課金されます。 その後、コミットメント レベルの未使用部分はクラスター リソースに課金されます。

    1 日の間にクラスターに取り込まれたデータ ボリュームの合計がコミットメント レベルよりも多い場合は、ワークスペースごとに、その日に取り込まれたデータの割合に基づいてコミットメント レベルの割合で課金され、コミットメント レベルを超えて取り込まれたデータの割合についてワークスペースごとに課金されます。 1 日の間にワークスペースに取り込まれたデータ ボリュームの合計がコミットメント レベルを超えている場合、クラスター リソースには何も課金されません。

クラスター課金オプションでは、データ保有はワークスペースごとに課金されます。 クラスターが作成されると、ワークスペースがそのクラスターに関連付けられるかどうかに関係なく、クラスターの課金が開始されます。

ワークスペースをクラスターにリンクすると、価格レベルがクラスターに変更され、取り込みはクラスターのコミットメント レベルに基づいて課金されます。 クラスターに関連付けられたワークスペースには、独自の価格レベルはなくなります。 ワークスペースはいつでもクラスターからリンク解除できます。その場合、価格レベルが GB 単位に変更される場合があります。

リンクされたワークスペースで従来のノードごとの価格レベルが使用されている場合、クラスターのコミットメント レベルに対するデータ インジェストに基づいて課金され、ノードごとには課金されなくなります。 Microsoft Defender for Cloud からのノードごとのデータ割り当ては、引き続き行われます。

クラスターが削除された場合、クラスターが 31 日間のコミットメント期間内であっても、クラスターの課金は停止します。

専用クラスターを作成し、その課金の種類を指定する方法の詳細については、「専用クラスターを作成する」を参照してください。

基本ログ

基本ログを使用するようにLog Analytics ワークスペース内の特定のテーブルを構成することができます。 これらのテーブル内のデータでは取り込み料金が大幅に削減され、保有期間が限られています。 これらのテーブルに対する検索には料金がかかります。 基本ログは、分析やアラートではなく、デバッグ、トラブルシューティングおよび監査に使用する大量の詳細ログ用です。

基本ログに対する検索料金は、検索の実行時にスキャンされるデータの GB に基づくものです。

基本ログの詳細 (構成方法やそのデータに対するクエリの実行方法を含む) については、「Azure Monitor での基本ログの構成」を参照してください。

ログ データの保有とアーカイブ

データ インジェストに加え、各 Log Analytics ワークスペースでのデータの保有には料金がかかります。 ワークスペース全体または各テーブルの保有期間を設定できます。 この期間が経過すると、データは削除またはアーカイブされます。 アーカイブされたログのデータ保有料金は下がり、それらに対する検索に料金がかかります。 アーカイブ ログを使用して、コンプライアンスや不定期の調査のために格納する必要があるデータのコストを減らします。

カスタム テーブルを削除しても、そのテーブルに関連付けられているデータは削除されないため、データ保持とアーカイブの料金は引き続き適用されます。

これらの設定の構成方法やアーカイブ データへのアクセス方法など、データの保有とアーカイブの詳細については、「データ保持ポリシーとアーカイブ ポリシーを Azure Monitor ログで構成する」を参照してください。

Note

Log Analytics 消去機能を使用して Log Analytics ワークスペースからデータを削除しても、保持コストには影響しません。 保持コストを削減するには、"ワークスペースまたは特定のテーブルの保持期間を短くします。"

検索ジョブ

アーカイブされたログに対する検索では、検索ジョブが使用されます。 検索ジョブは、詳細な分析のために、ワークスペース内の新しい検索テーブルにレコードをフェッチする非同期クエリです。 検索ジョブは、検索を実行するためにアクセスされる各日にスキャンされるデータの GB 数によって課金されます。

ログ データの復元

古いまたはアーカイブされたログに対して、完全な分析クエリ機能を使用して集中的にクエリを実行する必要がある状況では、データ復元機能が強力なツールとなります。 復元操作により、高パフォーマンスのクエリのために、テーブル内の特定の時間範囲のデータがホット キャッシュで使用できるようになります。 完了したら、後でデータを破棄できます。 ログ データの復元は、復元されたデータの量と、復元がアクティブな状態に保たれる時間によって課金されます。 データ復元に対して課金される最小値は 2 TB および 12 時間です。 2 TB を超えるか、期間が 12 時間を超える復元データは、日割り計算で課金されます。

ログ データのエクスポート

Log Analytics ワークスペースでデータ エクスポートを使用すると、Azure Monitor パイプラインに届く際に、ワークスペース内の選択されたテーブルごとにデータを Azure Storage アカウントまたは Azure Event Hubs に連続してエクスポートできます。 データ エクスポートの使用料金は、エクスポートされるデータの量に基づきます。 エクスポートされるデータのサイズは、エクスポートされる JSON 形式データのバイト数です。

Application Insights の課金

ワークスペースベースの Application Insights リソースでは Log Analytics ワークスペースにデータが格納されるため、Application Insights データが配置されているワークスペースによって、データ インジェストとデータ保持に対する課金が行われます。 このため、Log Analytics 価格モデルのすべてのオプション ( コミットメント レベルを含む) と従量課金制を使用できます。

ヒント

Application Insights テーブルの保持設定を調整しますか? ワークスペース ベースのコンポーネントのテーブル名が変更されました。「Application Insights テーブルの構造」を参照してください

従来の Application Insights リソースのデータ インジェストとデータ保持では、ワークスペースベースのリソースと同じ従量課金制の料金に従いますが、コミットメント レベルを使用することはできません。

ping テストと複数ステップ テストからのテレメトリについては、アプリの他のテレメトリのデータ使用量と同じ料金が請求されます。 Web テストの使用およびカスタム メトリック ディメンションに対するアラートの有効化は、引き続き Application Insights を通じて報告されます。 Live Metrics Stream を使用するためのデータ ボリューム料金はありません。

Application Insights の早期導入者が使用できる従来のレベルに関する詳細は、「Application Insights の従来のエンタープライズ (ノードごとの) 価格レベル」を参照してください。

Microsoft Sentinel を含むワークスペース

Log Analytics ワークスペースで Microsoft Sentinel が有効になっている場合、そのワークスペースで収集されるすべてのデータには、Log Analytics の料金とともに Microsoft Sentinel の料金が適用されます。 このため、運用データに対して Microsoft Sentinel の料金が発生しないように、セキュリティおよび運用データを異なるワークスペースに分割することがよくあります。

シナリオによっては、このデータを組み合わせることでコストを削減できます。 通常、この状況は、それぞれがコミットメント レベルに達するのに十分なセキュリティおよび運用データを収集していないものの、まとめられたデータがコミットメント レベルに達するのに十分な場合に発生します。 詳細とコストの計算例については、「Microsoft Sentinel ワークスペース アーキテクチャを設計する」の「SOC と SOC 以外のデータをまとめる」を参照してください。

Microsoft Defender for Cloud を含むワークスペース

Microsoft Defender for Servers (Defender for Cloud の一部) は、監視対象サービスの数で課金されます。 これにより、次のセキュリティ データ型のサブセットに適用される、サーバーあたり 500 MB/日 のデータ割り当てが提供されます。

ワークスペースが従来のノードごとの価格レベルである場合、Defender for Cloud と Log Analytics の割り当てが結合されて、取り込まれたすべての課金対象データにまとめて適用されます。 Microsoft Sentinel のお客様がメリットを得る方法の詳細については、Microsoft Sentinel の価格ページを参照してください。

監視対象サーバーの数は、1 時間単位の細分性で計算されます。 各監視対象サーバーからの毎日のデータ割り当ては、ワークスペース レベルで集計されます。 ワークスペースが従来の Per Node 価格レベルである場合、Microsoft Defender for Cloud と Log Analytics の割り当てが結合されて、取り込まれたすべての課金対象データにまとめて適用されます。

レガシ価格レベル

2018 年 4 月 2 日に Log Analytics ワークスペースまたは Application Insights リソースが含まれていたか、2019 年 2 月 1 日より前に開始され、まだアクティブな Enterprise Agreement にリンクされているサブスクリプションでは、以下のレガシ価格レベルを引き続き利用できます。

  • スタンドアロン (GB あたり)
  • ノードあたり (Operations Management Suite [OMS])

従来の無料試用版価格レベルへのアクセスは、2022 年 7 月 1 日に制限されました。 スタンドアロンおよびノードごとの価格レベルの価格情報については、こちらを参照してください。

これらのレガシ レベルを含む Azure Monitor の課金メーター名の一覧については、こちらを参照してください。

重要

レガシ価格レベルでは、コスト効率の高い基本ログとしてデータを取り込む機能などの、Log Analytics の最新機能の一部へのアクセスはサポートされていません。

無料試用版の価格レベル

無料試用版価格レベルのワークスペースでは、毎日のデータ インジェストの上限が 500 MB になります (Microsoft Defender for Cloud によって収集されるセキュリティ データ型を除く)。 データ保持は 7 日間に制限されます。 無料試用版価格レベルは、評価目的の使用のみを意図しており、本番ワークロード用の使用は想定していません。 無料試用版レベルに対して、SLA は提供されません。

注意

2022 年 7 月 1 日までは、レガシの無料試用版の価格レベルで新しいワークスペースを作成する (または既存のワークスペースを移動してくる) ことができました。

スタンドアロンの価格レベル

スタンドアロン価格レベルでの使用量は、取り込まれたデータ ボリューム単位で請求されます。 これは Log Analytics サービスで報告され、メーターには "分析対象データ" という名前が付けられます。スタンドアロン価格レベルのワークスペースには、30 日から 730 日までのユーザーが構成可能なリテンション期間があります。 スタンドアロンの価格レベルのワークスペースでは、基本ログの使用はサポートされていません。

ノードごとの価格レベル

ノードごとの価格レベルは、1 時間単位の細分性で監視対象の VM (ノード) ごとに課金されます。 監視対象のノードごとに、ワークスペースには 1 日あたり 500 MB の課金されないデータが割り当てられます。 この割り当ては、1 時間ごとの細分性で計算され、毎日ワークスペース レベルで集計されます。 集計される 1 日のデータ割り当てを超えて取り込まれたデータは、データ超過分として GB 単位で課金されます。 ノードごとの価格レベルは、レガシ価格レベルの要件を満たす既存のサブスクリプションでのみ使用できるレガシ レベルです。

請求書では、ワークスペースがノードごとの価格レベルの場合、サービスはログ分析の利用状況の洞察と分析になります。 ノードごとの価格レベルのワークスペースには、30 日から 730 日までのユーザーが構成可能なリテンション期間が含まれています。 ノードの価格レベルのワークスペースでは、基本ログの使用はサポートされていません。 使用量は、次の 3 つのメーターで報告されます。

  • ノード: ノード月の単位での監視対象ノード (VM) 数に対応した使用量です。
  • ノードごとのデータの超過分: 集計されたデータの割り当てを超える取り込まれたデータの GB 数です。
  • ノードごとに含まれるデータ: 集計されたデータの割り当ての範囲に含まれる取り込まれたデータ量です。 このメーターは、すべての価格レベルにワークスペースが存在する場合に、Microsoft Defender for Cloud によって提供される範囲のデータ量を示すためにも使用されます。

ヒント

ワークスペースでノードごとの価格レベルにアクセスできるが、従量課金制レベルよりもコストが低いかどうかを知りたい場合は、次のクエリを使用して推奨内容を確認してください。

Standard価格レベルとPremium価格レベル

2016 年 10 月 1 日以降、ワークスペースを Standard または Premium 価格レベルで作成したり、Standard または Premium の価格レベルに移動したりすることはできません。 これらの価格レベルに既に存在するワークスペースは引き続き使用できますが、ワークスペースをこれらのレベルから移動した場合、元に戻すことはできません。 Standard と Premium の価格レベルのデータ保有は、それぞれ 30 日と 365 日に固定されています。 これらの価格レベルのワークスペースでは、基本ログとデータ アーカイブの使用はサポートされていません。 これらの従来のレベルでの Azure 請求書のデータ インジェストのメーターは、"分析対象データ" と呼ばれています。

レガシ価格レベルを使用する Microsoft Defender for Cloud

次の考慮事項は、従来の Log Analytics レベルと、Microsoft Defender for Cloud の使用量に対する課金方法に関連しています。

  • ワークスペースが従来の Standard レベルまたは Premium レベルの場合、Microsoft Defender for Cloud はノードごとではなく Log Analytics データ インジェストに対してのみ課金されます。
  • ワークスペースが従来の Per Node レベルの場合、Microsoft Defender for Cloud は、現在の Microsoft Defender for Cloud のノードベースの価格モデルを使用して課金されます。
  • 他の価格レベル (コミットメント レベルを含む) では、2017 年 6 月 19 日より前に Microsoft Defender for Cloud が有効になっている場合、Microsoft Defender for Cloud は Log Analytics データ インジェストに対してのみ課金されます。 それ以外の場合、Microsoft Defender for Cloud は、現在の Microsoft Defender for Cloud のノードベースの価格モデルを使用して課金されます。

価格レベルの制限に関する詳細は、「Azure サブスクリプションとサービスの制限、クォータ、制約」にあります。

レガシ価格レベルには、リージョンベースの価格はありません。

Note

OMS E1 Suite、OMS E2 Suite、または OMS Add-On for System Center のいずれかを購入することによって得られる資格を使用するには、OMS Log Analytics のノード単位の価格レベルを選択します。

ノードごとのレガシ価格レベルを評価する

多くの場合、ノードごとのレガシ価格レベルにアクセスできるワークスペースで、そのレベルの方が適しているのか、または現在の従量課金制またはコミットメント レベルの方が適しているのかを判断するのは容易ではありません。 ノードごとの価格レベルでの監視対象ノードあたりの固定費とそれに含まれる 500 MB/ノード/日のデータ割り当てと、従量課金制 (GB 単位) レベルでの取り込まれたデータに対して支払うコストとの間のトレードオフを理解する必要があります。

次のクエリを使用して、ワークスペースの使用パターンに基づいて最適な価格レベルを推奨します。 このクエリは、監視対象ノードと、過去 7 日間にワークスペースに取り込まれたデータを調べます。 各日でどの価格レベルが最適であるかが評価されます。 このクエリを使用するには、次を指定する必要があります。

  • ワークスペースが Microsoft Defender for Cloud を使用するかどうかを、workspaceHasSecurityCentertrue または false に設定して指定する。
  • 特定の割引がある場合は価格を更新する。
  • さかのぼって分析する日数を指定するには、daysToEvaluate を設定します。 このオプションは、クエリで 7 日間のデータの検索に時間がかかりすぎている場合に便利です。
// Set these parameters before running query
// For pay-as-you-go (per-GB) and commitment tier pricing details, see https://azure.microsoft.com/pricing/details/monitor/.
// You can see your per-node costs in your Azure usage and charge data. For more information, see https://learn.microsoft.com/azure/cost-management-billing/understand/download-azure-daily-usage.  
let workspaceHasSecurityCenter = true;
let daysToEvaluate = 7;
let PerNodePrice = 15.; // Monthly price per monitored node
let PerNodeOveragePrice = 2.30; // Price per GB for data overage in the Per Node pricing tier
let PerGBPrice = 2.30; // Enter the pay-as-you-go price for your workspace's region (from https://azure.microsoft.com/pricing/details/monitor/)
let CommitmentTier100Price = 196.; // Enter your price for the 100 GB/day commitment tier
let CommitmentTier200Price = 368.; // Enter your price for the 200 GB/day commitment tier
let CommitmentTier300Price = 540.; // Enter your price for the 300 GB/day commitment tier
let CommitmentTier400Price = 704.; // Enter your price for the 400 GB/day commitment tier
let CommitmentTier500Price = 865.; // Enter your price for the 500 GB/day commitment tier
let CommitmentTier1000Price = 1700.; // Enter your price for the 1000 GB/day commitment tier
let CommitmentTier2000Price = 3320.; // Enter your price for the 2000 GB/day commitment tier
let CommitmentTier5000Price = 8050.; // Enter your price for the 5000 GB/day commitment tier
// ---------------------------------------
let SecurityDataTypes=dynamic(["SecurityAlert", "SecurityBaseline", "SecurityBaselineSummary", "SecurityDetection", "SecurityEvent", "WindowsFirewall", "MaliciousIPCommunication", "LinuxAuditLog", "SysmonEvent", "ProtectionStatus", "WindowsEvent", "Update", "UpdateSummary"]);
let StartDate = startofday(datetime_add("Day",-1*daysToEvaluate,now()));
let EndDate = startofday(now());
union * 
| where TimeGenerated >= StartDate and TimeGenerated < EndDate
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| where computerName != ""
| summarize nodesPerHour = dcount(computerName) by bin(TimeGenerated, 1h)  
| summarize nodesPerDay = sum(nodesPerHour)/24.  by day=bin(TimeGenerated, 1d)  
| join kind=leftouter (
    Heartbeat 
    | where TimeGenerated >= StartDate and TimeGenerated < EndDate
    | where Computer != ""
    | summarize ASCnodesPerHour = dcount(Computer) by bin(TimeGenerated, 1h) 
    | extend ASCnodesPerHour = iff(workspaceHasSecurityCenter, ASCnodesPerHour, 0)
    | summarize ASCnodesPerDay = sum(ASCnodesPerHour)/24.  by day=bin(TimeGenerated, 1d)   
) on day
| join (
    Usage 
    | where TimeGenerated >= StartDate and TimeGenerated < EndDate
    | where IsBillable == true
    | extend NonSecurityData = iff(DataType !in (SecurityDataTypes), Quantity, 0.)
    | extend SecurityData = iff(DataType in (SecurityDataTypes), Quantity, 0.)
    | summarize DataGB=sum(Quantity)/1000., NonSecurityDataGB=sum(NonSecurityData)/1000., SecurityDataGB=sum(SecurityData)/1000. by day=bin(StartTime, 1d)  
) on day
| extend AvgGbPerNode =  NonSecurityDataGB / nodesPerDay
| extend OverageGB = iff(workspaceHasSecurityCenter, 
             max_of(DataGB - 0.5*nodesPerDay - 0.5*ASCnodesPerDay, 0.), 
             max_of(DataGB - 0.5*nodesPerDay, 0.))
| extend PerNodeDailyCost = nodesPerDay * PerNodePrice / 31. + OverageGB * PerNodeOveragePrice
| extend billableGB = iff(workspaceHasSecurityCenter,
             (NonSecurityDataGB + max_of(SecurityDataGB - 0.5*ASCnodesPerDay, 0.)), DataGB )
| extend PerGBDailyCost = billableGB * PerGBPrice
| extend CommitmentTier100DailyCost = CommitmentTier100Price + max_of(billableGB - 100, 0.)* CommitmentTier100Price/100.
| extend CommitmentTier200DailyCost = CommitmentTier200Price + max_of(billableGB - 200, 0.)* CommitmentTier200Price/200.
| extend CommitmentTier300DailyCost = CommitmentTier300Price + max_of(billableGB - 300, 0.)* CommitmentTier300Price/300.
| extend CommitmentTier400DailyCost = CommitmentTier400Price + max_of(billableGB - 400, 0.)* CommitmentTier400Price/400.
| extend CommitmentTier500DailyCost = CommitmentTier500Price + max_of(billableGB - 500, 0.)* CommitmentTier500Price/500.
| extend CommitmentTier1000DailyCost = CommitmentTier1000Price + max_of(billableGB - 1000, 0.)* CommitmentTier1000Price/1000.
| extend CommitmentTier2000DailyCost = CommitmentTier2000Price + max_of(billableGB - 2000, 0.)* CommitmentTier2000Price/2000.
| extend CommitmentTier5000DailyCost = CommitmentTier5000Price + max_of(billableGB - 5000, 0.)* CommitmentTier5000Price/5000.
| extend MinCost = min_of(
    PerNodeDailyCost,PerGBDailyCost,CommitmentTier100DailyCost,CommitmentTier200DailyCost,
    CommitmentTier300DailyCost, CommitmentTier400DailyCost, CommitmentTier500DailyCost, CommitmentTier1000DailyCost, CommitmentTier2000DailyCost, CommitmentTier5000DailyCost)
| extend Recommendation = case(
    MinCost == PerNodeDailyCost, "Per node tier",
    MinCost == PerGBDailyCost, "Pay-as-you-go tier",
    MinCost == CommitmentTier100DailyCost, "Commitment tier (100 GB/day)",
    MinCost == CommitmentTier200DailyCost, "Commitment tier (200 GB/day)",
    MinCost == CommitmentTier300DailyCost, "Commitment tier (300 GB/day)",
    MinCost == CommitmentTier400DailyCost, "Commitment tier (400 GB/day)",
    MinCost == CommitmentTier500DailyCost, "Commitment tier (500 GB/day)",
    MinCost == CommitmentTier1000DailyCost, "Commitment tier (1000 GB/day)",
    MinCost == CommitmentTier2000DailyCost, "Commitment tier (2000 GB/day)",
    MinCost == CommitmentTier5000DailyCost, "Commitment tier (5000 GB/day)",
    "Error"
)
| project day, nodesPerDay, ASCnodesPerDay, NonSecurityDataGB, SecurityDataGB, OverageGB, AvgGbPerNode, PerGBDailyCost, PerNodeDailyCost, 
    CommitmentTier100DailyCost, CommitmentTier200DailyCost, CommitmentTier300DailyCost, CommitmentTier400DailyCost, CommitmentTier500DailyCost, CommitmentTier1000DailyCost, CommitmentTier2000DailyCost, CommitmentTier5000DailyCost, Recommendation 
| sort by day asc
//| project day, Recommendation // Comment this line to see details
| sort by day asc

このクエリは、使用量の計算方法を正確に複製するものではなく、ほとんどの場合、価格レベルの推奨を提供するために使用されます。

Note

OMS E1 Suite、OMS E2 Suite、または OMS Add-On for System Center のいずれかを購入することによって得られる資格を使用するには、OMS Log Analytics のノード単位の価格レベルを選択します。

次のステップ