Azure Monitor에서 로그 검색 경고 문제 해결
이 문서에서는 Azure Monitor에서 로그 검색 경고와 관련된 일반적인 문제를 해결하는 방법을 설명합니다. 또한 로그 경고의 기능 및 구성과 관련된 일반적인 문제에 대한 해결 방법을 제공합니다.
설정된 빈도마다 Log Analytics 쿼리를 사용하여 리소스 로그를 평가하고 결과에 따라 경고를 실행하는 데 로그 경고를 사용할 수 있습니다. 규칙은 작업 그룹을 사용하여 하나 이상의 작업을 트리거할 수 있습니다. 로그 검색 경고의 기능과 용어에 관해 자세히 알아보려면 Azure Monitor의 로그 경고를 참조하세요.
참고 항목
이 문서에서는 경고 규칙이 트리거되어 Azure Portal에서 볼 수 있지만 알림이 전송되지 않는 사례는 다루지 않습니다. 다음과 같은 경우 경고 문제 해결을 참조하세요.
로그 검색 경고가 발생해야 하는 상황에서 발생하지 않음
로그 검색 경고가 발생했어야 할 때 발생하지 않은 경우 다음 항목을 확인하세요.
경고 규칙이 성능 상태가 저하되었거나 사용할 수 없는 상태인가요?
로그 검색 경고 규칙의 상태를 확인하세요.
포털에서 모니터를 선택한 다음 경고를 선택합니다.
상단 명령 모음에서 경고 규칙을 선택합니다. 페이지에는 모든 구독의 모든 경고 규칙이 표시됩니다.
모니터링하려는 로그 검색 경고 규칙을 선택합니다.
왼쪽 창의 도움말 아래에서 리소스 상태를 선택합니다.
자세한 내용은 로그 검색 경고 규칙 상태 모니터링을 참조하세요.
로그 수집 대기 시간을 확인하세요.
Azure Monitor는 전 세계에서 테라바이트 단위의 고객 로그를 처리하므로 로그 수집 대기 시간이 발생할 수 있습니다.
로그는 반 구조화된 데이터이며 근본적으로 메트릭보다 더 잠재적입니다. 발생한 경고에 4분 넘게 지연이 발생하는 경우 메트릭 경고를 사용하는 것이 좋습니다. 로그에 대한 메트릭 경고를 사용하여 로그에서 메트릭 저장소로 데이터를 보낼 수 있습니다.
대기 시간을 줄이기 위해 시스템은 경고 평가를 여러 번 다시 시도합니다. 데이터가 도착한 후에는 대부분의 경우에 로그 레코드 시간과 같지 않은 경고가 발생합니다.
동작이 음소거되었거나 경고 규칙이 자동으로 해결되도록 구성되었나요?
가장 흔한 문제 상황은 경고가 발생하지 않았다고 생각하지만 경고가 발생하지 않도록 규칙을 구성한 경우입니다. 다음 두 가지 항목을 모두 선택하지 않았는지 확인하려면 로그 검색 경고 규칙의 고급 옵션을 참조하세요.
- 음소거 작업 확인란: 설정 시간 동안 발생하는 경고 작업을 음소거할 수 있습니다.
- 자동으로 경고 해결: 충족되는 조건당 한 번만 발생하도록 경고를 구성합니다.
경고 규칙 리소스가 이동되었거나 삭제되었나요?
경고 규칙 대상 리소스가 이동하거나 이름이 바뀌거나 삭제되면 해당 리소스를 참조하는 모든 로그 경고 규칙이 중단됩니다. 이 문제를 해결하려면 범위에 유효한 대상 리소스를 사용하여 경고 규칙을 다시 만들어야 합니다.
경고 규칙이 시스템 할당 관리 ID를 사용하나요?
시스템 할당 관리 ID를 사용하여 로그 경고 규칙을 만들면 해당 ID는 권한 없이 만들어집니다. 규칙을 만든 후에는 쿼리하려는 데이터에 액세스할 수 있도록 규칙의 ID에 적절한 역할을 할당해야 합니다. 예를 들어, 관련 Log Analytics 작업 영역에 대한 읽기 권한자 역할을 부여하거나 관련 ADX 클러스터에 대한 읽기 권한자 역할 및 데이터베이스 뷰어 역할을 부여해야 할 수 있습니다. 로그 경고에서 관리 ID를 사용하는 방법에 대한 자세한 내용은 관리 ID를 참조하세요.
로그 검색 경고 규칙에서 사용하는 쿼리가 유효한가요?
로그 경고 규칙을 만들면 올바른 구문에 대해 쿼리의 유효성이 검사됩니다. 그러나 경우에 따라 로그 경고 규칙에 제공한 쿼리가 실패할 수 있습니다. 몇 가지 일반적인 이유는 다음과 같습니다.
- API를 통해 규칙을 만들고, 사용자가 유효성 검사를 건너뛰었습니다.
- 쿼리가 여러 리소스에서 실행되고 하나 이상의 리소스가 삭제되거나 이동되었습니다.
- 다음 이유로 인해 쿼리가 실패했습니다.
- 쿼리에 있는 테이블에 대한 데이터 흐름이 30일 넘게 중지되었습니다.
- 데이터 흐름이 시작되지 않아 사용자 지정 로그 테이블이 생성되지 않았습니다.
- 쿼리 언어의 변경 내용에 명령과 함수에 대한 수정된 형식이 포함되어 있어 이전에 제공된 쿼리가 더 이상 유효하지 않습니다.
Azure Resource Health는 로그 검색 경고 규칙을 포함하여 클라우드 리소스의 상태를 모니터링합니다. 로그 검색 경고 규칙이 정상이면 규칙이 실행되고 쿼리가 성공적으로 실행됩니다. 로그 검색 경고 규칙의 리소스 상태를 사용하여 로그 검색 경고 규칙에 영향을 주는 문제에 대해 알아볼 수 있습니다.
로그 검색 경고 규칙을 사용하지 않도록 설정했나요?
로그 검색 경고 규칙 쿼리를 1주일 동안 계속 평가하지 않으면 Azure Monitor에서 자동으로 사용하지 않도록 설정합니다.
또한 규칙을 사용하지 않도록 설정할 때 제출되는 활동 로그 이벤트의 예시를 제공합니다.
규칙을 사용하지 않도록 설정한 경우 활동 로그 예제
{
"caller": "Microsoft.Insights/ScheduledQueryRules",
"channels": "Operation",
"claims": {
"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/spn": "Microsoft.Insights/ScheduledQueryRules"
},
"correlationId": "abcdefg-4d12-1234-4256-21233554aff",
"description": "Alert: test-bad-alerts is disabled by the System due to : Alert has been failing consistently with the same exception for the past week",
"eventDataId": "f123e07-bf45-1234-4565-123a123455b",
"eventName": {
"value": "",
"localizedValue": ""
},
"category": {
"value": "Administrative",
"localizedValue": "Administrative"
},
"eventTimestamp": "2019-03-22T04:18:22.8569543Z",
"id": "/SUBSCRIPTIONS/<subscriptionId>/RESOURCEGROUPS/<ResourceGroup>/PROVIDERS/MICROSOFT.INSIGHTS/SCHEDULEDQUERYRULES/TEST-BAD-ALERTS",
"level": "Informational",
"operationId": "",
"operationName": {
"value": "Microsoft.Insights/ScheduledQueryRules/disable/action",
"localizedValue": "Microsoft.Insights/ScheduledQueryRules/disable/action"
},
"resourceGroupName": "<Resource Group>",
"resourceProviderName": {
"value": "MICROSOFT.INSIGHTS",
"localizedValue": "Microsoft Insights"
},
"resourceType": {
"value": "MICROSOFT.INSIGHTS/scheduledqueryrules",
"localizedValue": "MICROSOFT.INSIGHTS/scheduledqueryrules"
},
"resourceId": "/SUBSCRIPTIONS/<subscriptionId>/RESOURCEGROUPS/<ResourceGroup>/PROVIDERS/MICROSOFT.INSIGHTS/SCHEDULEDQUERYRULES/TEST-BAD-ALERTS",
"status": {
"value": "Succeeded",
"localizedValue": "Succeeded"
},
"subStatus": {
"value": "",
"localizedValue": ""
},
"submissionTimestamp": "2019-03-22T04:18:22.8569543Z",
"subscriptionId": "<SubscriptionId>",
"properties": {
"resourceId": "/SUBSCRIPTIONS/<subscriptionId>/RESOURCEGROUPS/<ResourceGroup>/PROVIDERS/MICROSOFT.INSIGHTS/SCHEDULEDQUERYRULES/TEST-BAD-ALERTS",
"subscriptionId": "<SubscriptionId>",
"resourceGroup": "<ResourceGroup>",
"eventDataId": "12e12345-12dd-1234-8e3e-12345b7a1234",
"eventTimeStamp": "03/22/2019 04:18:22",
"issueStartTime": "03/22/2019 04:18:22",
"operationName": "Microsoft.Insights/ScheduledQueryRules/disable/action",
"status": "Succeeded",
"reason": "Alert has been failing consistently with the same exception for the past week"
},
"relatedEvents": []
}
로그 검색 경고가 발생하면 안 되는 상황에서 발생함
구성된 Azure Monitor의 로그 경고 규칙이 예기치 않게 트리거될 수 있습니다. 다음 섹션에서는 몇 가지 일반적인 이유를 설명합니다.
대기 시간 문제로 인해 경고가 트리거되었나요?
Azure Monitor는 테라바이트 단위의 고객 로그를 전역적으로 처리하므로 로그 수집 대기 시간이 생길 수 있습니다. 거짓 경고를 방지하기 위한 기본 제공 기능이 있지만 매우 잠재적인 데이터(30분 이상) 및 대기 시간이 급증하는 데이터에서 계속 발생할 수 있습니다.
로그는 반 구조화된 데이터이며 근본적으로 메트릭보다 더 잠재적입니다. 발생한 경고에 너무 많은 실수가 발생하는 경우 메트릭 경고를 사용하는 것이 좋습니다. 로그에 대한 메트릭 경고를 사용하여 로그에서 메트릭 저장소로 데이터를 보낼 수 있습니다.
로그 검색 경고는 로그에서 특정 데이터를 검색하려고 할 때 가장 적합합니다. 가상 머신 하트비트에 대한 경고와 같이 로그의 데이터 부족을 감지하려고 하는 경우에는 덜 효과적입니다.
로그 검색 경고 규칙을 구성할 때 오류 메시지
특정 오류 메시지와 해결 방법은 다음 섹션을 참조하세요.
로그에 대한 권한이 필요하여 쿼리의 유효성을 검사할 수 없습니다.
경고 규칙 쿼리를 만들거나 편집할 때 이 오류 메시지가 표시되는 경우 대상 리소스 로그를 읽을 수 있는 권한이 있는지 확인하세요.
- 작업 영역 컨텍스트 액세스 모드에서 로그를 읽는 데 필요한 권한:
Microsoft.OperationalInsights/workspaces/query/read
. - 리소스 컨텍스트 액세스 모드에서 로그를 읽는 데 필요한 권한(작업 영역 기반 Application Insights 리소스 포함):
Microsoft.Insights/logs/tableName/read
권한에 관한 자세한 내용은 Log Analytics 작업 영역에 대한 액세스 관리를 참조하세요.
이 쿼리에는 1분 빈도가 지원되지 않습니다.
1분 경고 규칙 빈도 사용과 관련하여 몇 가지의 제한 사항이 있습니다. 경고 규칙의 빈도를 1분으로 설정 시에 쿼리 최적화를 위한 내부 조작을 수행합니다. 해당 조작에 지원되지 않는 작업이 포함된 경우에는 쿼리가 실패할 수 있습니다.
지원되지 않는 시나리오 목록은 이 메모를 참조하세요.
이름이 <>인 스칼라 식을 해결하지 못했습니다.
다음과 같은 경우 경고 규칙 쿼리를 만들거나 편집할 때 이 오류 메시지를 반환할 수 있습니다.
- 테이블 스키마에 존재하지 않는 열을 참조하고 있습니다.
- 쿼리의 이전 프로젝트 절에서 사용하지 않은 열을 참조하고 있습니다.
이를 완화하려면 이전 프로젝트 절에 열을 추가하거나 columnifexists 연산자를 사용할 수 있습니다.
ScheduledQueryRules API는 읽기 전용 OMS 경고에 대해 지원되지 않습니다.
이 오류 메시지는 Azure Portal을 사용하여 레거시 API 버전으로 만든 규칙을 업데이트하거나 삭제하려고 할 때 반환됩니다.
- Log Analytics REST API를 사용하여 프로그래밍 방식으로 규칙을 편집하거나 삭제하세요.
- 권장: Scheduled Query Rules API를 사용하도록 경고 규칙을 업그레이드하세요(레거시 API는 사용 중단 경로에 있음).
경고 규칙 서비스 제한에 도달했습니다.
구독당 로그 검색 경고 규칙 수 및 최대 리소스 제한에 대한 자세한 내용은 Azure Monitor 서비스 제한을 참조하세요. 사용 중인 총 로그 경고 규칙 수를 확인하여 현재 사용 중인 메트릭 경고 규칙 수를 확인하세요. 할당량 한도에 도달했다면 다음 단계를 통해 문제를 해결할 수 있습니다.
더 이상 사용되지 않는 로그 검색 경고 규칙을 삭제하거나 사용하지 않도록 설정합니다.
차원별로 분할을 사용하여 규칙 수를 줄이세요. 차원별로 분할을 사용하는 경우 하나의 규칙이 여러 리소스를 모니터링할 수 있습니다.
할당량 한도를 늘려야 하는 경우 지원 요청을 열고 다음 정보를 제공하세요.
- 할당량 제한을 늘려야 하는 구독 ID 및 리소스 ID
- 할당량 증가 이유
- 요청된 할당량 한도
ARG 및 ADX 쿼리에서 불완전한 시간 필터링
로그 검색 경고에서 ADX(Azure Data Explorer) 또는 ARG(Azure Resource Graph) 쿼리를 사용하는 경우 "집계 세분성" 설정이 쿼리에 시간 필터를 적용하지 않는 문제가 발생할 수 있습니다. 이로 인해 쿼리가 의도한 시간 범위 대신 30일을 모두 반환하므로 예기치 않은 결과와 잠재적 성능 문제가 발생할 수 있습니다.
이 문제를 해결하려면 ARG 및 ADX 쿼리에서 시간 필터를 명시적으로 적용해야 합니다. 확인 단계는 다음과 같습니다.
적절한 시간 필터링: 시간 범위 식별: 쿼리할 특정 시간 범위를 결정합니다. 예를 들어 지난 24시간 동안의 데이터를 쿼리하려면 쿼리에서 이 시간 범위를 지정해야 합니다.
쿼리 수정: ARG 또는 ADX 쿼리에 시간 필터를 추가하여 반환된 데이터를 원하는 시간 범위로 제한합니다. 다음은 쿼리를 수정하는 방법의 예입니다.
// Original query without time filter
resources
| where type == "microsoft.compute/virtualmachines"
// Modified query with time filter
resources
| where type == "microsoft.compute/virtualmachines"
| where timestamp >= ago(24h)
- 쿼리 테스트: 수정된 쿼리를 실행하여 지정된 시간 범위 내에서 예상 결과를 반환하는지 확인합니다.
- 경고 업데이트: 명시적 시간 필터와 함께 수정된 쿼리를 사용하도록 로그 검색 경고를 업데이트합니다. 이렇게 하면 경고가 올바른 데이터를 기반으로 하며 불필요한 기록 데이터가 포함되지 않습니다. ARG 및 ADX 쿼리에 명시적 시간 필터를 적용하면 과도한 데이터를 검색하는 문제를 방지하고 로그 검색 경고가 정확하고 효율적인지 확인할 수 있습니다.
다음 단계
- Azure의 로그 경고에 대해 알아봅니다.
- 로그 경고 구성에 대해 자세히 알아보세요.
- 로그 쿼리에 대해 자세히 알아봅니다.