Azure Monitor ログ クエリでの関数
関数は、コマンドのようにして他のログ クエリで使用できる、Azure Monitor 内のログ クエリです。 関数を使用すると、さまざまな顧客にソリューションを提供することができ、独自の環境でクエリ ロジックを再利用することもできます。 この記事では、関数の使用方法と独自の関数を作成する方法について説明します。
必要なアクセス許可
アクション | 必要なアクセス許可 |
---|---|
関数の表示または使用 | たとえば、Log Analytics 閲覧者組み込みロールによって提供される、Log Analytics ワークスペースに対する Microsoft.OperationalInsights/workspaces/query/*/read 権限。 |
関数の作成または編集 | たとえば、Log Analytics 共同作成者組み込みロールによって提供される、Log Analytics ワークスペースに対する microsoft.operationalinsights/workspaces/savedSearches/write 権限。 |
関数の種類
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 | 値のデータ型。 |
名前 | パラメーターの名前。 クエリではこの名前を使用しなければならず、パラメーター値で置き換えられます。 |
既定値 | 値が指定されない場合にパラメーターに使用される値。 |
パラメーターは、作成時に順序付けされます。 既定値を持たないパラメーターは、既定値を持つパラメーターの前に置かれます。
関数コードを操作する
関数のコードを表示することで、その動作を理解したり、ワークスペース関数のコードを変更したりすることができます。 エディターで現在のクエリに関数コードを追加するには、 [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 ログ クエリを記述する方法の詳細については、「文字列操作」をご覧ください。