Azure Monitor ログ クエリでの関数

関数は、コマンドのようにして他のログ クエリで使用できる、Azure Monitor 内のログ クエリです。 関数を使用すると、さまざまな顧客にソリューションを提供することができ、独自の環境でクエリ ロジックを再利用することもできます。 この記事では、関数の使用方法と独自の関数を作成する方法について説明します。

必要なアクセス許可

  • 関数を表示または使用するには、Log Analytics ワークスペースに対する Microsoft.OperationalInsights/workspaces/query/*/read アクセス許可が必要です。これは、たとえば、組み込みの Log Analytics 閲覧者ロールによって提供されます。

  • 関数を作成または編集するには、Log Analytics ワークスペースに対する microsoft.operationalinsights/workspaces/savedSearches/write アクセス許可が必要です。これは、たとえば、組み込みの Log Analytics 閲覧者ロールによって提供されます。

関数の種類

Azure Monitor には、次の 2 種類の関数があります。

  • ソリューション関数: 事前構築済み関数が Azure Monitor に組み込まれています。 これらの関数は、すべての Log Analytics ワークスペースで使用することができ、変更はできません。
  • ワークスペース関数: これらの関数は、特定の Log Analytics ワークスペースにインストールされます。 ユーザーが変更および制御できます。

ビュー関数

Log Analytics ワークスペースの左側のペインにある [関数] タブで、現在のワークスペース内のソリューション関数とワークスペース関数を表示できます。 [フィルター] を使用して、リストに含まれる関数をフィルター処理します。 [グループ化] を使用して、グループ化を変更します。 特定の関数を見つけるには、[検索] ボックスに文字列を入力します。 関数の上にカーソルを合わせると、説明やパラメーターなど、その関数に関する詳細が表示されます。

関数を表示している様子を示すスクリーンショット。

関数を使用する

クエリで関数を使用するには、コマンドで入力する場合と同様に、関数名とパラメーターの値を入力します。 関数の出力は、結果として返されるようにすることも、別のコマンドにパイプされるようにすることもできます。

現在のクエリに関数を追加するには、その名前をダブルクリックするか、その上にカーソルを合わせて [Use in editor](エディターで使用) を選択します。 ワークスペース内の関数は、クエリに入力するときに IntelliSense にも含まれます。

クエリにパラメーターが必要な場合は、構文 function_name(param1,param2,...) を使用して指定します。

関数を使用している様子を示すスクリーンショット。

関数を作成する

エディターで現在のクエリから関数を作成するには、[保存]>[関数として保存] の順に選択します。

関数を作成している様子を示すスクリーンショット。

Azure portal で Log Analytics を使用して関数を作成するには、[保存] を選択した後、次の表の情報を指定します。

設定 説明
関数名 関数の名前。 名前には、スペースや特殊文字を含めることはできません。 アンダースコア (_) はソリューション関数用に予約されているため、この文字を先頭に付けないでください。
従来のカテゴリ 関数のフィルター処理とグループ化に役立つ、ユーザーが定義したカテゴリ。
Save as computer group (コンピューター グループとして保存) クエリをコンピューター グループとして保存します。
パラメーター 使用時に値を必要とする関数内の各変数に対し、パラメーターを追加します。 詳細については、「関数のパラメーター」をご覧ください。

関数の詳細を示すスクリーンショット。

関数のパラメーター

関数にパラメーターを追加すると、関数の呼び出し時に特定の変数の値を指定できます。 このため、複数の異なるクエリで同じ関数を使用し、それぞれでパラメーターに異なる値を指定することができます。 パラメーターは、次のプロパティによって定義されます。

設定 説明
Type 値のデータ型。
名前 パラメーターの名前。 クエリではこの名前を使用しなければならず、パラメーター値で置き換えられます。
既定値 値が指定されない場合にパラメーターに使用される値。

パラメーターは、作成時に順序付けされます。 既定値を持たないパラメーターは、既定値を持つパラメーターの前に置かれます。

Note

クラシック Application Insights リソースでは、パラメーター化された関数はサポートされていません。 ワークスペースベースの Application Insights リソースがある場合は、Log Analytics ワークスペースからパラメーター化された関数を作成できます。 クラシック Application Insights リソースをワークスペース ベースのリソースに移行する方法については、「ワークスペースベースの Application Insights リソースに移行する」を参照してください。

関数コードを操作する

関数のコードを表示することで、その動作を理解したり、ワークスペース関数のコードを変更したりすることができます。 エディターで現在のクエリに関数コードを追加するには、 [Load the function code](関数コードの読み込み) を選択します。

空のクエリ、または既存のクエリの最初の行に関数コードを追加すると、関数名がタブに追加されます。ワークスペース関数では、関数の詳細を編集するためのオプションが有効になります。

関数コードを読み込んでいる様子を示すスクリーンショット。

関数を編集する

関数のプロパティまたはコードを編集するには、新しいクエリを作成します。 関数の名前にカーソルを合わせ、[関数コードを読み込む] を選択します。 コードに必要な変更を加え、[保存] を選択します。 次に、[関数の詳細を編集] を選択します。 関数のプロパティとパラメーターに必要な変更を加え、[保存] を選択します。

関数を編集している様子を示すスクリーンショット。

次のサンプル関数は、特定の日付以降で、特定のカテゴリに一致する、Azure アクティビティ ログ内のすべてのイベントを返します。

ハードコーディングされた値を使用して、クエリが期待どおりに動作することを確認するため、次のクエリから始めます。

AzureActivity
| where CategoryValue == "Administrative"
| where TimeGenerated > todatetime("2021/04/05 5:40:01.032 PM")

最初のクエリを示すスクリーンショット。

次に、ハードコーディングされた値をパラメーター名に置き換えます。 その後、[保存]>[関数として保存] の順に選択して、関数を保存します。

AzureActivity
| where CategoryValue == CategoryParam
| where TimeGenerated > DateParam

関数を保存している様子を示すスクリーンショット。

関数のプロパティに次の値を入力します。

プロパティ
関数名 AzureActivityByCategory
従来のカテゴリ デモ関数

関数を保存する前に、次のパラメーターを定義します。

名前 既定値
string CategoryParam "Administrative"
DATETIME DateParam

関数のプロパティを示すスクリーンショット。

新しいクエリを作成し、その上にカーソルを合わせて新しい関数を表示します。 パラメーターの順序をご覧ください。 関数を使用するときには、この順序で指定する必要があります。

詳細を表示している様子を示すスクリーンショット。

[エディターで使用する] を選択して、新しい関数をクエリに追加します。 次に、パラメーターの値を追加します。 CategoryParam の値は、既定値があるため、指定する必要はありません。

パラメーターの値を追加している様子を示すスクリーンショット。

次のステップ

Azure Monitor ログ クエリを記述する方法の詳細については、「文字列操作」をご覧ください。