初めてのAzure Log AnalyticsとKQL クエリ
Azure上のリソースのログを収集・分析するサービスとして、Log Analyticsがあります。
今回は初めてLog Analyticsを利用する場合を想定して、VM insightsのデータをサンプルとしてさまざまな操作手順を確認しました。
-
- Azure Log Analyticsの概要
- Log Analytics ワークスペースの作成や設定方法
- KQL(Kusto Query Language)クエリを使ったデータの絞り込み
- KQLでの日本時間表示、並び替え手順
※本記事では、Kusto Query LanguageをKQLとして表記しています。
- 1. Azure Log Analyticsの概要
- 2. Log Analytics ワークスペースのリソース作成手順
- 3. Log Analytics ワークスペースでログ検索する方法
- 3.1. VM Insightsについて
- 3.2. Log Analytics ワークスペースでKQLクエリを実行
- 3.3. 検索結果を絞り込みする場合はwhere演算子
- 3.4. 必要な列(項目)のみ出力する場合はproject演算子
- 3.5. 並び替え(ソート)にはsort演算子を使う
- 3.6. 検索対象時間の範囲を指定する場合はwhere演算子
- 3.7. 検索結果の表示件数を指定する場合は
- 3.8. TimeGeneratedを日本時間で表示する
- 3.9. 検索結果をグラフ表示する場合はrender 演算子
- 3.10. 検索結果をエクスポート(CSVでダウンロード)
- 3.11. リソースIDからリソース名を抽出する
- 4. 最後に
Azure Log Analyticsの概要
Azure Log Analyticsとは何?
Azure Log Analyticsを一言で表すと、Azure上のリソースのログを収集・分析する機能です。
Azure Monitor の Log Analytics の概要
Log AnalyticsはAzure Monitorの一部として提供されており、Azure Monitorのリソースデータを保存・分析するための領域をLog Analytics ワークスペースと呼びます。
-
- Log Analytics: Azure Monitor上のログ収集・分析機能
- Log Analytics ワークスペース: Log Analyticsのデータを収集・管理するためのAzureリソース
Azure Portalでは、KQL(Kusto Query Language)を利用して収集されたログデータの表示や分析が可能です。
また、クエリの実行結果をグラフ化してダッシュボードに表示することもできます。
診断設定やAzure Monitorエージェントを使ってログ収集される
Log Analyticsのデータ収集方法のひとつに、エージェントによる収集があります。
2022年9月現在、Log Analyticsに関連するエージェントは2種類存在します。
Log Analytics agent overview
Azure Monitor エージェントの概要
また、エージェントによる収集だけでなく、各Azureリソースの診断設定を通じてログを収集することも可能です。
※2022年9月時点で、Azure Monitorエージェントが推奨されています。
※2024年8月31日をもって従来のLog Analyticsエージェントは廃止され、Azure Monitorエージェントへの移行が必要となります。
※エージェントからLog Analytics ワークスペースへのデータ転送にはHTTPSが使用されます。ネットワークのアクセス許可設定が必要となります。
収集対象
Azure Log Analyticsでは、Azureリソースのメトリック、操作ログ、OSログなど、多種多様なログを収集できます。
具体的には、Azure ADのログやアクティビティログ、Windowsのイベントログ、IISのログ、LinuxのSyslog、CPU使用率などのメトリック情報も収集可能です。
Azure基盤やサーバ(仮想マシンやオンプレミスサーバ)からは、エージェントを通じてリソース情報や各種ログを収集できます。
診断設定を活用することで、Azureサービス(PaaS)のログやリソース情報も取得可能です。
また、Application GatewayのアクセスログやNSGフローログなど、ネットワーク関連のログも収集できます。
※Azure SentinelやNetwork Watcherのトラフィック分析などにもLog Analyticsが活用されています。
Application Gatewayのアクセスログの確認方法については、こちらで紹介しています。
Log Analyticsで発生する課金は?
Log Analyticsは、データ転送量に応じて課金が発生します。
デフォルトでは、データ保管期間は31日間まで無償です。
保管期間を延長した場合は、延長分のデータ容量に応じて追加課金されます。
East US 2リージョンの場合の価格は、以下の表のとおりです。(2022年9月現在)
項目 | 料金(East US 2の場合) | 備考 |
データ転送量 | ¥377.279/GB | |
データ保管 | 1GB あたり ¥16.404/月 | 31日まで無料です 32日以上保管する場合に発生する課金ん |
データ出力 | ¥13.670/GB | Log Analyticsで収集したデータをエクスポートする場合 |
※アーカイブ機能を利用することで、ログデータの保管コストを抑えることができます。
※データ出力に対して課金が発生する場合があります。
※Log AnalyticsでKQLクエリの実行結果をCSVなどのファイルとして手動でエクスポートする場合には課金は発生しません。
※Azure StorageやEvent Hubなどの宛先へ継続的にストリーミングでデータをエクスポートする場合には、エクスポートに対して課金が発生します。
Log Analytics ワークスペースのリソース作成手順
Log Analytics ワークスペースのリソース作成手順
Log Analytics ワークスペースのリソースを作成します。
設定項目は、リソースグループ、ワークスペース名、作成する地域(リージョン)です。
取得対象のAzureリソースと別のリージョンでも利用可能ですが、同じリージョンに配置することが推奨されます。
同じリージョンに配置することで、リージョン間のデータ転送コストや遅延を回避できます。
データ取り込み量や課金を確認する方法
Azure Portal上で、Log Analyticsワークスペースのデータ取り込み量や課金状況を確認できます。
使用量と推定コストを表示 | |
使用量と推定コストの画面では、過去30日間のデータ取り込み量と料金が表示されます。 ※今回は設定直後のため、1日分のみが表示されています。 |
![]() |
※1日あたり100GB以上利用する場合は、リソース予約(予約容量プラン)を利用することでコストを抑えることが可能です。
※コスト計算方法については、以下のサイトに記述があります。
データ取り込み量の日次上限設定手順
Log Analyticsワークスペースでは、データ取り込み量の上限を設定することができます。
上限は1日あたりの取り込み量で指定します。
上限に達すると、その日のログ取り込みが停止します。
取り込み停止後に発生したデータはワークスペースに保存されず、欠落しますので、上限設定を利用する際は十分に注意が必要です。
データ保有期間の設定手順
Log Analyticsワークスペースでは、データの保有期間を延長することができます。
デフォルトの保有期間は30日(実際の保有期間は31日)です。
記事記載時点では、最大730日(保有期間731日)まで延長が可能です。
保有期間を延長した場合、追加のストレージ課金が発生しますので注意が必要です。
データ保有期間 | |
使用量と推定コストのメニューに、データ保有期間の設定項目があります。 |
![]() |
デフォルトでは30日に設定されています。 |
![]() |
—広告—
Log Analytics ワークスペースでログ検索する方法
今回は、仮想マシンのVM insights(分析情報)で取得された値を例に、ログ検索を行っています。
利用するLog Analyticsワークスペースには、test-vm-01~03の仮想マシンのVM insights(分析情報)が収集されています。
VM Insightsについて
VM Insightsで取得されるデータについては、こちらで紹介しています。
Log Analytics ワークスペースでKQLクエリを実行
ログの検索にはKQL(Kusto Query Language)を使います。
Kusto 照会言語の概要
KQL quick reference
Log Analyticsワークスペースのリソースメニューからログを選択すると、検索を実行できます。
ログ検索結果の表示は最大30,000行までとなります。
また、出力結果には、クエリで取得した項目(カラム)のみが表示されます。
※画面上で表示されませんが、エクスポートやAPI経由で全件取得することも可能です。
検索結果を絞り込みする場合はwhere演算子
必要な情報に絞り込みを行います。
絞り込みにはwhere演算子を使用します。
絞り込み条件は、以下の通りにしています。
-
- 仮想マシンはtest-vm-01を対象とする
- メトリックはディスク空き容量率(FreeSpacePercentage)を対象とする
- ディスク領域はLinuxの"/"領域がマウントされているsda2を対象とする
Where句で絞り込みを行う | ||
仮想マシン名で絞り込みを行います。 例: 項目名には仮想マシン名が含まれるComputerを使用します。 |
|
|
where演算子はand条件も利用可能です。 例: 検索結果を確認すると、and条件で絞り込みができていることがわかります。 |
|
|
ディスク空き容量に関する情報に絞り込むため、where Name == “FreeSpacePercentage"をand条件としてクエリに追加します。 |
|
|
sda2に絞り込みます。 一致条件についてはこちらを参照願います。 |
|
※Computer列は仮想マシンのホスト名を示します。Azureポータル上のVM名と一致しない場合があります。
※仮想マシン名で絞りこみを行う場合、Resource列を利用する方法もあります。
※カラム名は、記事記載時点のものとなります。変更になっている可能性もありますので、確認しながら進めます。
必要な列(項目)のみ出力する場合はproject演算子
検索結果のすべての列(項目)が必ずしも必要とは限りません。
project演算子を使うことで、必要な情報だけに絞り込んだ見やすい結果を得ることができます。
project演算子で出力項目を選択 | ||
選択した列(項目)のみを出力する場合は、project 列名(項目名)となります。 |
|
並び替え(ソート)にはsort演算子を使う
検索結果時系列に並べたいなどの場合にはsort演算子を使います。
ソート順の設定は以下のようになります。
デフォルトではdesc(降順)です。
-
- asc : 昇順 (小さい値から大きい値へ、または過去から現在の時間へ)
- desc:降順 (大きい値から小さい値へ、または現在から過去の時間へ)
※sort 演算子とorder演算子は同等です。サンプルは、order演算子を利用しています。
order演算子で並び替え | ||
order by 並び替え項目で出力結果を並び替え(ソート)できます。TimeGeneratedで並び替えると、時間の降順で表示されていることが確認できます。 ※descがデフォルトのため、order by TimeGeneratedだけでも降順で結果が表示されます。 |
|
検索対象時間の範囲を指定する場合はwhere演算子
デフォルトの検索条件は過去24時間です。
検索対象時間の範囲を制限するには、where演算子を使用します。
-
- 検索時間制限の例
- where TimeGenerated > ago(時間)
- where TimeGenerated between (datetime(YYYY-MM-HHT hh:mm:ss.0000000Z) .. datetime(YYYY-MM-HHT hh:mm:ss.0000000Z))
- 検索時間制限の例
検索時間範囲を制限 | ||
where TimeGenerated >(または<等) ago(時間)で検索範囲を指定できます。 ※ago関数は、d(日)、h(時間)、m(分)、s(秒)などの単位で指定できます。 |
|
検索結果の表示件数を指定する場合は
検索結果の表示件数は指定できます。
※take 演算子とlimit演算子は同等です。サンプルは、limit演算子を利用しています。
検索結果表示件数を制限 | ||
limit 件数で表示件数を制限できます。 |
|
TimeGeneratedを日本時間で表示する
検索結果で表示される時刻(TimeGenerated)は、デフォルトではUTC表記です。
日本時間で表示したい場合は、extend演算子を使って変換できます。
Azure Portal上で現地時刻を選択することで、日本時間表記に切り替えることも可能です。
日本時間で表示 | ||
extend演算子を利用してLocalTimeGeneratedを定義します。 |
|
|
Azure Portalで現地時刻を選択すると、TimeGenerated(現地時刻)として表示されます。 |
検索結果をグラフ表示する場合はrender 演算子
検索結果をグラフで表示する場合は、render演算子を使用します。
render演算子をクエリの最後に追加することで、検索結果をグラフやチャート形式で表示できます。
様々なグラフ形式を指定することができます。
検索結果をダウンロード | ||
render演算子の後にグラフ形式を指定します。 |
|
検索結果をエクスポート(CSVでダウンロード)
Azure Portalでは、検索結果をCSV形式でダウンロードすることができます。
検索結果画面のエクスポート機能から、CSVファイルとして保存できます。
検索結果をダウンロード | |
エクスポートを選択すると、CSVやPower BIへのエクスポートオプションが表示されます。 CSVへのエクスポートでは、すべての列を含めるか、表示している検索結果の列のみを含めるかを選択できます。 |
![]() |
リソースIDからリソース名を抽出する
リソースIDからリソース名を抽出するKQLについては、こちらで紹介しています。
Logic Appsを利用して定期的にストレージアカウント(BLOBコンテナー)にログ検索結果を保管する方法については、こちらで紹介しています。
IPアドレスでの絞り込みする場合のKQLについては、こちらで紹介しています。
—広告—
最後に
初めてのLog Analyticsということで、Log Analyticsワークスペースの作成や設定を行いました。
KQL(Kusto Query Language)を利用することで、ログデータから目的に応じた情報を抽出できることが確認できました。
-
- 主に確認した実施内容
- 対象の絞り込み
- 必要な列(項目)のみを表示
- 並び変え
- 検索範囲の時間指定
- グラフ表示
- CSV出力
- 主に確認した実施内容
引き続き、いろいろ試してみたいと思います。
ログの転送状況の監視方法については、こちらで紹介しています。