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)
입니다. 그렇지 않은 경우
입니다. |
| 문자열 | 실패 이유입니다.
이(가)
일 때 작업에서 이 필드를 설정합니다. |
| 물체 | 전체 로그 분석 응답입니다. 결과 행은
에 있습니다. 열 정의는
에 있습니다. 보다 자세한 내용은 를 확인하시기 바랍니다. |
다음 예제는 지난 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