LogAnalytics - Kusto Query (KQL)クエリーでJSONを抽出する方法
5836 ワード
はじめに
Azure環境を触りだして、LogAnalyticsを使ってイベントをフィルターする際に、JSONが含まれているレコードを条件にしたい場合の方法についてまとめてみました。
サンプル例
- AWS CloudTrailのログサンプル
- コンソールログインでフィルタ
- JSONで出力される以下の"Success"のみを条件に絞りたい
{"ConsoleLogin":"Success"}
{"ConsoleLogin":"Success"}
KustoクエリーのJSON抽出方法
以下の2通りが機能として提供されています。
-
- パス式を使用している JSON テキストから、指定された要素を取得する方法
- 一つのデータのみをjson bodyから抽出する場合に使える。逆に複数のデータを抽出する場合は使えない。
- メリットとしてはシンプル、型変換ができる
- 構文
- extractjson(Jsonpath ,データソース)
-
- JSON テキストより、jsonをparseして読み込ませて、複数のデータを抽出する
- イメージは Python の json.loadと覚えておけば良さそう
- 一度読み込ませることで、複数のデータを抽出できる
- 構文
- parse_json(json)
- JSON テキストより、jsonをparseして読み込ませて、複数のデータを抽出する
やってみる
1. extractjsonパターン
AWSCloudTrail
| where TimeGenerated > ago(7d)
| where EventName == "ConsoleLogin" // CloudTrailのイベントを絞る
| extend extractjson_result = extractjson("$.ConsoleLogin", ResponseElements) // ResponseElementsからConsoleLoginを抽出する
| project TimeGenerated,EventName,UserIdentityUserName,ResponseElements,extractjson_result // 出力
結果
- ResponseElementsが元データ
- extractjsonで抽出したデータを "extractjson_result" フィールドで表示
2. parse_jsonパターン
AWSCloudTrail
| where TimeGenerated > ago(7d)
| where EventName == "ConsoleLogin" // CloudTrail のイベントを絞る
| extend d=parse_json(ResponseElements) // parse_json で読み込み
| extend parsejson_result = d["ConsoleLogin"] // 正規化されたJSONを抽出する
| project TimeGenerated,EventName,UserIdentityUserName,ResponseElements,parsejson_result // 出力
結果
- 一度、parse_jsonでjson.loadしているのがポイント
- 正規化することで、複数のjson抽出するので、複数を抽出するのであればこちらがお勧め
用途例
- 通常のケースは parse_json() の方が利用用途が多そう
- Python等慣れている方はjson.loadの考え方がしっくりくるので後者かと
- extractjsonは型変換が出来るので、用途的にはそちらかも
最後に
- まだ Azure Monitor / LogAnalytics を使い始めたばかりですが、他にも気になる点があれば投稿していきたいと思います。
- まだ Azure Monitor / LogAnalytics を使い始めたばかりですが、他にも気になる点があれば投稿していきたいと思います。
Author And Source
この問題について(LogAnalytics - Kusto Query (KQL)クエリーでJSONを抽出する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/hisnakad/items/2bec48a3b45857670d34著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .