Azure Monitor ログのクエリ アクションは、Azure Monitor Log Analytics ワークスペースに対して KQL(Kusto Query Language) クエリを実行し、結果テーブルをワークフローに返します。
Azure Monitor ログのクエリ
このアクションを使用して、ログデータ — たとえば、アプリケーションのrequests、障害、カスタムログなど — をクエリし、結果に基づいて分岐または通知します。
重要
使用するAzure ADサービスプリンシパルには、ターゲットワークスペースのLog Analytics Readerロールが必要です。
このアクションで利用可能な入力:
入力 | タイプ | 説明 |
|---|---|---|
| 弦 | 必須。 AzureサービスプリンシパルのclientId(UUID形式)。シークレットとして渡します。 方法をご覧ください。 |
| 弦 | 必須。 Azure サービスプリンシパルの clientSecret です。シークレットとして渡してください。 方法をご覧ください。 |
| 弦 | 必須。 Azureテナント識別子(UUID形式)。シークレットとして渡すことができます。 |
| 弦 | 必須。 Log Analytics ワークスペース ID(GUID)。例:
。 |
| 弦 | 必須。 ワークスペースに対して実行するKQLクエリ。例:
。最大8,000文字。 |
| 弦 | オプション。 クエリの時間範囲を制限するISO-8601期間。たとえば、
(7日間)または
(1時間)です。省略した場合、クエリは時間制限なしで実行されます。 |
| リスト | オプション。 レスポンスから特定の値を抽出または名前変更するために使用されるセレクターのリスト。例:
。 |
このアクションに対して利用可能な出力は次のとおりです:
出力 | タイプ | 説明 |
|---|---|---|
| ブール値 | クエリ結果のステータス。呼び出しが成功した場合(HTTP 2xx)は
です。それ以外の場合は
です。 |
| 弦 | 失敗理由。
が
の場合、アクションはこのフィールドを設定します。 |
| オブジェクト | 完全なLog Analyticsレスポンス。結果行は
にあります。列の定義は
にあります。詳細については、 Azure Monitor Log Analytics APIリファレンス を参照してください。 |
以下の例では、過去25日間のAppRequestsテーブルにクエリを実行し、Slackチャンネルに概要を送信します。
name: query-azure-monitor-logs
steps: - name: query_app_requests type: action action: azure.monitor.queryLogs version: 1 inputs: clientId: ${{ :secrets:azure-client-id }} clientSecret: ${{ :secrets:azure-client-secret }} tenantId: ${{ :secrets:azure-tenant-id }} workspaceId: "78460d46-1c7c-494b-90b4-e21288a074d4" query: |- AppRequests | take 10 timespan: P25D selectors: - name: records expression: ".response.tables[0] as $t | ($t.columns | map(.name)) as $cols | $t.rows | map(. as $row | reduce range(0; ($cols | length)) as $i ({}; . + {($cols[$i]): $row[$i]}))" - name: send_slack_notification type: action action: newrelic.notification.sendSlack version: 1 inputs: destinationId: ${{ :secrets:slack-destination-id }} channel: ops-alerts text: ${{ "*AppRequests* (" + (.steps.query_app_requests.outputs.records | length | tostring) + " rows)\n\n" + (.steps.query_app_requests.outputs.records | map([(.OperationName // ""), (.ResultCode // ""), (.Url // ""), ((.DurationMs // 0) | tostring) + "ms"] | join(" | ")) | join("\n")) + "\n```" }} next: end