次の方法で共有


Azure Monitor ログ クエリでの関数

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

必要なアクセス許可

アクション 必要なアクセス許可
関数の表示または使用 Microsoft.OperationalInsights/workspaces/query/*/read たとえば、Log Analytics のワークスペースに対する権限は、Log Analytics 閲覧者の組み込みロールによって提供されます。
関数の作成または編集 microsoft.operationalinsights/workspaces/savedSearches/write Log Analytics ワークスペースへの権限については、例えば、Log Analytics Contributor 組み込みロールによって提供されます。

関数の種類

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

  • ソリューション関数: 事前構築済み関数は Azure Monitor に含まれています。 これらの関数は、すべての Log Analytics ワークスペースで使用することができ、変更はできません。

  • ワークスペース関数: これらの関数は、特定の Log Analytics ワークスペースにインストールされます。 ユーザーが変更および制御できます。

ビュー関数

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

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

関数を使用する

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

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

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

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

関数を作成する

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

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

Azure portal で [ 保存] を選択し、次の表に情報を入力して、Log Analytics を使用して関数を作成します。

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

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

関数のパラメーター

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

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

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

関数コードを操作する

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

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

関数コードの読み込みを示すスクリーンショット。

関数を編集する

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

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

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

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

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

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

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

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

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

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

プロパティ
関数名 Azure アクティビティカテゴリ別
従来のカテゴリ デモ関数

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

タイプ 名前 既定値
ひも カテゴリーパラメータ "管理"
DATETIME DateParam

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

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

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

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

パラメーターの値の追加を示すスクリーンショット。

次のステップ

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