はじめに
Log Analyticsのコストは見積もりづらく、実際に構築したら意外と高額になっていたりなんてことも発生するため
以下のDocsを参考しながら、どこにコストがかかっているかを調べ、実際にコスト削減に向けた手順を備忘のためにまとめる。
全体の利用量
Log Analyticsで取得しているデータは各テーブルに格納される。
テーブルごとに過去1カ月でどの程度のデータが出力されているかを確認する。
search *
| extend Type = $table
| where TimeGenerated > ago(31d)
| summarize AggregatedValue = count() by Type
| order by AggregatedValue
Azureの診断情報の多くが格納される AzureDiagnosticsテーブル
Azure VM(Windows)を構築し、Azure Monitor Agent経由でデータ収集している場合は
Eventテーブル や Security Eventテーブル あたりが上位にあがってくる。
テーブルごとの利用量
全体の利用量の中で特に格納される情報が多いテーブルについては、テーブルごとに細かく分析してみる。
以下は検出頻度が高いテーブルをサンプルで記載する。
Event
Event
| where TimeGenerated > ago(31d)
| summarize AggregatedValue = count() by EventID
| order by AggregatedValue
SecurityEvent
SecurityEvent
| where TimeGenerated > ago(31d)
| summarize AggregatedValue = count() by EventID
| order by AggregatedValue
AzureDiagnostics
AzureDiagnostics
| where TimeGenerated > ago(31d)
| summarize AggregatedValue = count() by ResourceId
| order by AggregatedValue
コストを削減する方法
各テーブルに格納されている情報が分かったところで実際にログを削減する方法を確認する。
保存期間を見直す
Log Analyticsのデータ保持期間を見直すことが一番手っ取り早い。
企業での利用では監査などの関係で長期にログを保存するケースが多い。
その場合、アーカイブ機能を利用して利用頻度の低いデータをアーカイブ化することでコストが削減できる。
例えば以下のような設定の場合は90日までが通常のログ検索、それ以降1年以内のログがアーカイブのログ検索で閲覧可能。
受信データをフィルタリングする
Log Analyticsワークスペースにデータを格納する前にデータの内容をフィルタリングする機能も存在する。
テーブルの中には変換ルールを設定できるものがあり、ここで取得するデータを絞り込むことが可能となる。
変換をサポートしているテーブルはこちら。
データを絞り込むことでコストの削減が可能となるが、変換後のデータが一定量を超えるとこれまた課金が発生するので注意。
(ログ データ インジェストと変換 を参照)
Azure Monitor Agentを導入している場合は、データ収集ルールを変更することで削減が可能。