KQLの実行結果にリソースIDからリソース名を抽出して表示
KQL(Kusto Query Language)実行結果で、リソースIDからリソース名のみを抽出する方法です。
Log Analyticsワークスペースに収集したログをKQLで検索した際に、リソースIDだけがログに含まれるケースがあります。
場合によってはリソースIDではなく、リソース名だけが欲しいケースもあるかと思います。
アクテビティログを例にKQLでリソースIDからリソース名を抽出する方法について調べてみました。
リソースIDからリソース名の取得する場合にはextractとsplitを使っています。
KQLでリソースIDからリソース名を抽出する
アクテビティログの診断設定
アクテビティログをLog Analyticsワークスペースへ転送する為には診断設定を利用します。
その方法についてはこちらに纏めています。
アクテビティログにはリソースIDのみが含まれる
アクテビティログに含まれるのはリソースIDのみです。
リソース名は含まれません。
アクテビティログでは、_ResourceIdにリソースIDが出力されます。
※projectで表示項目を絞っています。
アクテビティログ表示例 | |
仮想マシン(Azure VM)作成時のアクテビティログ |
リソースIDの例
リソースIDはAzureのリソースを一意に特定するものです。
リソースIDにはサブスクリプションID、リソースグループ名が含まれます。
仮想マシン(Azure VM)のリソースIDの例 | ||
仮想マシン(Azure VM)のリソースIDの例です。
|
extractを使ってリソースIDからリソース名を抽出
extractを使うと正規表現を利用した文字列抽出が出来ます。
extendを利用して新しくResourceNameと言う名前で列追加しています。
追加したResourceName列にextractを使ってリソース名を出力しています。
※tolowerを使うと文字列を小文字に変換できます。リソースIDをすべて小文字に統一する為に利用しています。
extractを使った場合 | ||
|
||
※サンプルは仮想マシン(Azure VM)作成で絞り込みしています。
splitを使ってリソースIDからリソース名を抽出
split()を使うと指定した区切り記号で部分文字列を分割出来ます。
インデックスを指定すると配列内の特定の文字列を取得できます。
今回は”/”スラッシュでリソースIDを分割しています。
インデックスを指定してリソース名を取得しています。
※extendを利用してResourceNameと言う名前で列追加しています。
splitの例 | ||
|
||
※サンプルは仮想マシン(Azure VM)作成で絞り込みしています。
最後に
今回はKQLでリソースIDからリソース名を抽出する事を試してみました。
今後も色々試してみたいと思います。
初めてのKQLと言う内容で基本的な内容についてはこちらに纏めています。
併せて見て頂けると有難いです。
IPアドレスからロケーション情報を取得する方法についてはこちらに纏めています。