로그 검색 경고 규칙 만들기 또는 편집
이 문서에서는 Azure Monitor에서 새 로그 검색 경고 규칙을 만들거나 기존 로그 검색 경고 규칙을 편집하는 방법을 보여줍니다. 경고에 대한 자세한 내용은 경고 개요를 참조하세요.
경고 규칙은 모니터링할 리소스, 리소스의 모니터링 데이터 및 경고를 트리거하려는 조건을 결합합니다. 그런 다음, 작업 그룹 및 경고 처리 규칙을 정의하여 경고가 트리거될 때 발생하는 작업을 결정할 수 있습니다.
이러한 경고 규칙에 의해 트리거된 경고에는 공통 경고 스키마를 사용하는 페이로드가 포함되어 있습니다.
필수 조건
경고 규칙을 만들거나 편집하려면 다음 권한이 있어야 합니다.
- 경고 규칙의 대상 리소스에 대한 읽기 권한.
- 경고 규칙이 만들어지는 리소스 그룹에 대한 쓰기 권한. Azure Portal에서 경고 규칙을 만드는 경우 경고 규칙은 기본적으로 대상 리소스가 있는 동일한 리소스 그룹에 만들어집니다.
- 경고 규칙에 연결된 모든 작업 그룹에 대한 읽기 권한(해당하는 경우).
Azure Portal에서 경고 규칙 마법사에 액세스
경고 규칙을 만들거나 편집하는 방법에는 여러 가지가 있습니다.
포털 홈페이지에서 경고 규칙 만들기 또는 편집
- Azure Portal에서 모니터를 선택합니다.
- 왼쪽 창에서 경고를 선택합니다.
- + 만들기>경고 규칙을 선택합니다.
특정 리소스에서 경고 규칙 만들기 또는 편집
- Azure Portal에서 리소스로 이동합니다.
- 왼쪽 창에서 경고를 선택합니다.
- + 만들기>경고 규칙을 선택합니다.
- 경고 규칙의 범위는 선택한 리소스로 설정됩니다. 경고 규칙의 조건을 계속 설정합니다.
기존 경고 규칙 편집
Azure Portal 홈페이지 또는 특정 리소스의 왼쪽 창에서 경고를 선택합니다.
경고 규칙을 선택합니다.
편집하려는 경고 규칙을 선택한 다음 편집을 선택합니다.
설정을 편집하려면 경고 규칙에 대한 탭을 선택합니다.
경고 규칙의 범위 구성
리소스 선택 창에서 경고 규칙의 범위를 설정합니다. 구독, 리소스 종류 또는 리소스 위치별로 필터링할 수 있습니다.
적용을 선택합니다.
경고 규칙 조건 구성
조건 탭에서 신호 이름 필드를 선택할 때 사용자 지정 로그 검색을 선택합니다. 또는 조건에 다른 신호를 선택하려면 모든 신호 보기를 선택합니다.
(선택 사항) 이전 단계에서 모든 신호 보기를 선택한 경우 신호 선택 창을 사용하여 신호 이름을 검색하거나 신호 목록을 필터링합니다. 필터 기준:
- 신호 유형: 로그 검색을 선택합니다.
- 신호 원본: 사용자 지정 로그 검색 및 로그(저장된 쿼리) 신호를 보내는 서비스입니다. 신호 이름을 선택한 다음 적용을 선택합니다.
로그 창에서 경고를 만들려는 로그 이벤트를 반환하는 쿼리를 작성합니다. 미리 정의된 경고 규칙 쿼리 중 하나를 사용하려면 로그 창 옆에 있는 스키마 및 필터 창을 확장합니다. 그런 다음 쿼리 탭을 선택하고 쿼리 중 하나를 선택합니다.
로그 검색 경고 규칙 쿼리에 대한 다음 제한 사항에 유의하세요.
- 로그 검색 경고 규칙 쿼리는
bag_unpack()
,pivot()
및narrow()
를 지원하지 않습니다. - 로그 검색 경고 규칙 쿼리는 시간 범위 리터럴이 있는 ago()만 지원합니다.
AggregatedValue
는 예약어입니다. 로그 검색 경고 규칙의 쿼리에서는 사용할 수 없습니다.- 로그 검색 경고 규칙 속성의 모든 데이터를 합친 크기는 64KB를 초과할 수 없습니다.
- 로그 검색 경고에 대한 KQL 쿼리에 사용자 지정 함수를 정의할 때는 상대 시간 절(예: now())을 포함하는 함수 코드에 주의해야 합니다. 로그 검색 경고 KQL 쿼리 자체 내에 정의되지 않은 상대 시간 절이 있는 사용자 지정 함수로 인해 쿼리 결과에 불일치가 발생할 수 있으며, 이는 경고 평가의 정확도 및 안정성에 영향을 미칠 수 있습니다. 따라서
- 정확하고 시기 적절한 경고를 보장하려면 항상 로그 검색 경고 KQL 쿼리 내에서 직접 상대 시간 절을 정의합니다.
- 함수 내에 시간 범위가 필요한 경우, 이러한 범위는 매개 변수로 전달하고 함수에서 매개 변수로서 사용되어야 합니다.
- 로그 검색 경고 규칙 쿼리는
(선택 사항) Azure Data Explorer 또는 Azure Resource Graph 클러스터를 쿼리하는 경우 Log Analytics 작업 영역은 이벤트 타임스탬프가 있는 열을 자동으로 식별할 수 없습니다. 쿼리에 시간 범위 필터를 추가하는 것이 좋습니다. 예시:
adx('https://help.kusto.windows.net/Samples').table | where MyTS >= ago(5m) and MyTS <= now()
arg("").Resources | where type =~ 'Microsoft.Compute/virtualMachines' | project _ResourceId=tolower(id), tags
샘플 로그 검색 경고 쿼리는 Azure Data Explorer와 Resource Graph에 사용할 수 있습니다.
정부 클라우드에서는 서비스 간 쿼리가 지원되지 않습니다. 제한 사항에 대한 자세한 내용은 서비스 간 쿼리 제한 및 Azure Resource Graph 테이블을 Log Analytics 작업 영역과 결합을 참조하세요.
실행을 선택하여 경고를 실행합니다.
미리 보기 섹션에는 쿼리 결과가 표시됩니다. 쿼리 편집이 끝나면 경고 편집 계속을 선택합니다.
조건 탭이 열리고 로그 쿼리가 채워집니다. 기본적으로 규칙은 지난 5분 동안의 결과 수를 계산합니다. 시스템에서 요약된 쿼리 결과가 검색되면 해당 정보로 규칙이 자동으로 업데이트됩니다.
측정 섹션에서 다음 필드에 대한 값을 선택합니다.
필드 설명 측정값 로그 검색 경고는 다양한 모니터링 시나리오에 사용할 수 있는 두 가지를 측정할 수 있습니다.
테이블 행: 반환된 행 수를 사용하여 Windows 이벤트 로그, Syslog, 애플리케이션 예외와 같은 이벤트 작업을 수행할 수 있습니다.
숫자 열 계산: 숫자 열에 기반한 계산을 사용하여 원하는 수의 리소스를 포함할 수 있습니다. 예를 들어, CPU 백분율이 있습니다.집계 유형 집계 세분성을 사용하여 하나의 숫자 값으로 집계하기 위해 여러 레코드에서 수행되는 계산입니다. 예를 들면 합계, 평균, 최솟값, 최댓값입니다. 집계 세분성 여러 레코드를 하나의 숫자 값으로 집계하는 간격입니다. (선택 사항) 차원으로 분할 섹션에서 차원을 사용하여 실행된 경고에 대한 컨텍스트를 제공할 수 있습니다.
차원은 추가 데이터가 포함된 쿼리 결과의 열입니다. 차원을 사용하는 경우 경고 규칙은 쿼리 결과를 차원 값별로 그룹화하고 각 그룹의 결과를 별도로 평가합니다. 조건이 충족되면 규칙은 해당 그룹에 대해 경고를 발생시킵니다. 경고 페이로드에는 경고를 트리거한 조합이 포함됩니다.
경고 규칙당 최대 6개의 차원을 적용할 수 있습니다. 차원은 문자열 또는 숫자 열만 될 수 있습니다. 숫자 또는 문자열 형식이 아닌 열을 차원으로 사용하려면 쿼리에서 해당 열을 문자열 또는 숫자 값으로 변환해야 합니다. 차원 값을 두 개 이상 선택하면 조합의 결과인 각 시계열이 자체 경고를 트리거하고 별도로 요금이 청구됩니다.
예시:
- 차원을 사용하여 웹 사이트나 앱을 실행하는 여러 인스턴스의 CPU 사용량을 모니터링할 수 있습니다. 각 인스턴스는 개별적으로 모니터링되며, CPU 사용량이 구성된 값을 초과하는 각 인스턴스에 대해 알림이 전송됩니다.
- 범위 내 여러 리소스에 조건을 적용하려는 경우 차원별로 분할하지 않기로 결정할 수 있습니다. 예를 들어, 리소스 그룹 범위에 있는 최소 5대의 컴퓨터에서 구성된 값보다 CPU 사용량이 높은 경우 경고를 발생시키려는 경우 차원을 사용하지 않습니다.
일반적으로 경고 규칙 범위가 작업 영역인 경우 작업 영역에서 경고가 실행됩니다. 영향을 받는 각 Azure 리소스에 대해 별도의 경고를 원하는 경우 다음을 수행할 수 있습니다.
Azure Resource Manager Azure 리소스 ID 열을 차원으로 사용합니다. 이 옵션을 사용하면 Azure 리소스 ID 열을 차원으로 사용하여 작업 영역에서 경고가 발생합니다.
경고를 Azure 리소스 ID 속성에서 차원으로 지정합니다. 이 옵션은 쿼리가 경고의 대상을 반환하는 리소스를 만듭니다. 그런 다음 작업 영역이 아니라, 가상 머신 또는 스토리지 계정과 같은 쿼리가 반환하는 리소스에서 경고가 발생합니다.
이 옵션을 사용하면 작업 영역이 둘 이상의 구독에 있는 리소스에서 데이터를 가져오는 경우 경고 규칙 구독이 아닌 구독의 리소스에 대한 경고가 트리거될 수 있습니다.
다음 필드에 대한 값을 선택합니다.
필드 설명 차원 이름 차원은 숫자 또는 문자열 열일 수 있습니다. 차원은 특정 시계열을 모니터링하고 발생한 경고에 대한 컨텍스트를 제공하는 데 사용됩니다. Operator 차원 이름 및 값에 사용되는 연산자입니다. 차원 값 차원 값은 지난 48시간 동안의 데이터를 기준으로 합니다. 사용자 지정 값 추가를 선택하여 사용자 지정 차원 값을 추가합니다. 모든 미래 값 포함 선택한 차원에 추가되는 향후 값을 포함하려면 이 필드를 선택합니다. 경고 논리 섹션에서 이러한 필드의 값을 선택합니다.
필드 설명 Operator 쿼리 결과는 숫자로 변환됩니다. 이 필드에서 임계값과 숫자를 비교하는 데 사용할 연산자를 선택합니다. 임계값 임계값에 대한 숫자 값입니다. 평가 빈도 쿼리가 실행되는 빈도입니다. 1분부터 1일(24시간)까지 원하는 시간으로 설정할 수 있습니다. 참고 항목
빈도는 매일 경고가 실행되는 특정 시간이 아닙니다. 경고 규칙이 얼마나 자주 실행되는지를 나타냅니다.
경고 규칙에 1분 빈도를 사용할 때는 몇 가지 제한 사항이 있습니다. 경고 규칙의 빈도를 1분으로 설정 시에 쿼리 최적화를 위한 내부 조작을 수행합니다. 해당 조작에 지원되지 않는 작업이 포함된 경우에는 쿼리가 실패할 수 있습니다. 쿼리가 지원되지 않는 가장 흔한 이유는 다음과 같습니다.
- 쿼리에
search
,union
또는take
(제한) 작업이 포함됩니다. - 쿼리에
ingestion_time()
함수가 포함됩니다. - 쿼리가
adx
패턴을 사용합니다. - 해당 쿼리는 다른 테이블을 호출하는 함수를 호출합니다.
샘플 로그 검색 경고 쿼리는 Azure Data Explorer와 Resource Graph에 사용할 수 있습니다.
- 쿼리에
(선택 사항) 고급 옵션 섹션에서는 경고를 트리거하는 데 필요한 오류 수와 경고 평가 기간을 지정할 수 있습니다. 예를 들어 집계 세분성을 5분으로 설정하는 경우 마지막 1시간 동안 세 번의 오류(15분)가 발생한 경우에만 경고를 트리거하도록 지정할 수 있습니다. 애플리케이션의 비즈니스 정책이 이 설정을 결정합니다.
경고를 트리거할 위반 횟수에서 이러한 필드에 대한 값을 선택합니다.
필드 설명 위반 수 경고를 트리거한 위반 수입니다. 평가 기간 위반 수가 발생한 기간입니다. 쿼리 시간 범위 재정의 경고 평가 기간을 쿼리 시간 범위와 다르게 하려면 여기에 시간 범위를 입력합니다.
경고 시간 범위는 최대 2일로 제한됩니다. 쿼리에 시간 범위가 2일보다 긴ago
명령이 포함되어 있어도 최대 2일의 시간 범위가 적용됩니다. 예를 들어 쿼리 텍스트에ago(7d)
가 포함되어 있더라도 쿼리는 최대 2일의 데이터만 검색합니다. 쿼리에 경고 평가보다 더 많은 데이터가 필요한 경우 시간 범위를 수동으로 변경할 수 있습니다. 쿼리에ago
명령이 포함된 경우 자동으로 2일(48시간)로 변경됩니다.참고 항목
사용자 또는 사용자의 관리자가 Log Analytics 작업 영역에 대한 Azure 로그 검색 경고는 고객 관리형 키를 사용해야 함 Azure Policy를 할당한 경우 작업 영역 연결된 스토리지 확인을 선택해야 합니다. 그렇지 않으면 정책 요구 사항을 충족하지 않기 때문에 규칙 만들기가 실패합니다.
미리 보기 차트는 시간에 따른 쿼리 평가 결과를 보여줍니다. 차트 기간을 변경하거나 차원별로 고유한 경고 분할로 인해 발생한 다른 시계열을 선택할 수 있습니다.
완료를 선택합니다. 경고 규칙 조건을 구성한 후에 경고 규칙 세부 정보를 구성하여 경고 만들기를 완료하거나 필요에 따라 경고 규칙에 작업 및 태그를 추가할 수도 있습니다.
경고 규칙 작업 구성
작업 탭에서 필요에 따라 경고 규칙에 대한 작업 그룹을 선택하거나 만들 수 있습니다.
경고 규칙 세부 정보 구성
세부 정보 탭의 프로젝트 세부 정보 아래에서 구독 및 리소스 그룹 값을 선택합니다.
경고 규칙 세부 정보에서:
심각도 값을 선택합니다.
경고 규칙 이름 및 경고 규칙 설명 값을 입력합니다.
참고 항목
ID를 사용하는 규칙은 경고 규칙 이름 값에 세미콜론(;) 문자를 사용할 수 없습니다.
지역 값을 선택합니다.
로그 검색 경고 규칙이 로그 쿼리를 보낼 때 인증에 사용하는 ID를 ID 섹션에서 선택합니다.
ID를 선택할 때 다음 사항에 유의하세요.
- 쿼리를 Azure Data Explorer 또는 Resource Graph에 보내는 경우에는 관리 ID가 필요합니다.
- 경고 규칙과 연결된 권한을 보거나 편집할 수 있으려면 관리 ID를 사용합니다.
- 관리 ID를 사용하지 않는 경우, 경고 규칙 권한은 규칙이 마지막으로 편집된 당시 규칙을 편집한 마지막 사용자의 권한을 기반으로 합니다.
- 관리 ID를 사용하면 규칙을 마지막으로 편집한 사용자에게 규칙 범위에 추가된 모든 리소스에 대한 권한이 없어 규칙이 예상대로 작동하지 않는 경우를 방지할 수 있습니다.
규칙과 연결된 ID에는 다음 역할이 있어야 합니다.
- 쿼리가 Log Analytics 작업 영역에 액세스하려는 경우, 쿼리가 액세스하는 모든 작업 영역에 대한 읽기 권한자 역할을 ID에 할당해야 합니다. 리소스 중심 로그 검색 경고를 만드는 경우 경고 규칙은 여러 작업 영역에 액세스할 수도 있으며 ID에는 모든 작업 영역에 대한 읽기 권한자 역할이 있어야 합니다.
- Azure Data Explorer 또는 Resource Graph 클러스터를 쿼리하는 경우 쿼리가 액세스하는 모든 데이터 원본에 대한 읽기 권한자 역할을 추가해야 합니다. 예를 들어 쿼리가 리소스 중심인 경우 해당 리소스에 대한 읽기 권한자 역할이 필요합니다.
- 쿼리가 원격 Azure Data Explorer 클러스터에 액세스하는 경우 ID를 할당해야 합니다.
- 쿼리가 액세스하는 모든 데이터 원본에 대한 읽기 권한자 역할입니다. 예를 들어 쿼리가
adx()
함수를 사용하여 원격 Azure Data Explorer 클러스터를 호출하는 경우 해당 Azure Data Explorer 클러스터에 대한 읽기 권한자 역할이 필요합니다. - 쿼리가 액세스하는 모든 데이터베이스에 대한 데이터베이스 뷰어 역할입니다.
- 쿼리가 액세스하는 모든 데이터 원본에 대한 읽기 권한자 역할입니다. 예를 들어 쿼리가
관리 ID에 대한 자세한 내용은 Azure 리소스에 대한 관리 ID를 참조하세요.
경고 규칙이 사용하는 ID에 대해 다음 옵션 중 하나를 선택합니다.
ID 옵션 설명 없음 경고 규칙 권한은 규칙이 편집된 당시 규칙을 편집한 마지막 사용자의 권한을 기반으로 합니다. 시스템이 할당한 관리 ID 사용 Azure는 이 경고 규칙에 대한 새로운 전용 ID를 만듭니다. 이 ID에는 권한이 없으며 규칙이 삭제되면 자동으로 삭제됩니다. 규칙을 만든 후 쿼리에 필요한 작업 영역 및 데이터 원본에 액세스하기 위해 이 ID에 권한을 할당해야 합니다. 권한 할당에 대한 자세한 내용은 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요. 연결된 스토리지를 사용하는 로그 검색 경고 규칙은 지원되지 않습니다. 사용자가 할당한 관리 ID 사용 경고 규칙을 만들기 전에 ID를 만들고 로그 쿼리에 대한 적절한 권한을 할당합니다. 이는 일반 Azure ID입니다. 여러 경고 규칙에서 하나의 ID를 사용할 수 있습니다. 규칙이 삭제되어도 ID는 삭제되지 않습니다. 이 형식의 ID를 선택하면 규칙에 연결된 ID를 선택할 수 있는 창이 열립니다. (선택 사항) 고급 옵션 섹션에서 여러 옵션을 설정할 수 있습니다.
필드 설명 생성 시 바로 사용 경고 규칙을 만드는 즉시 실행을 시작하려면 이 옵션을 선택합니다. 자동으로 경고 해결 경고를 상태 저장으로 만들려면 이 옵션을 선택합니다. 경고가 상태 저장인 경우 특정 시간 범위 동안 조건이 더 이상 충족되지 않으면 경고가 해결됩니다. 시간 범위는 경고 빈도에 따라 다릅니다.
1분: 경고 조건이 10분 동안 충족되지 않습니다.
5분 ~15분: 경고 조건이 3번의 빈도 기간 동안 충족되지 않습니다.
15분 ~ 11시간: 경고 조건이 2번의 빈도 기간 동안 충족되지 않습니다.
11-12시간: 경고 조건이 1번의 빈도 기간 동안 충족되지 않습니다.
상태 저장 로그 검색 경고에는 다음과 같은 제한 사항이 있습니다.작업 음소거 경고 작업이 다시 트리거되기 전에 대기할 시간을 설정하려면 이 옵션을 선택합니다. 나타나는 작업 음소거 필드에서 경고가 발생한 후 작업을 다시 트리거하기 전까지 대기할 시간을 선택합니다. 작업 영역 연결된 스토리지 확인 경고에 대한 작업 영역 연결된 스토리지가 구성된 경우 이 옵션을 선택합니다. 연결된 스토리지가 구성되어 있지 않으면 규칙이 만들어지지 않습니다. -
(선택 사항) 사용자 지정 속성 섹션에서 이 경고 규칙에 작업 그룹이 포함된 경우 경고 알림 페이로드에 포함할 고유한 속성을 추가할 수 있습니다. 웹후크, Azure 함수 또는 논리 앱 작업과 같이 작업 그룹이 호출하는 작업에서 이러한 속성을 사용할 수 있습니다.
사용자 지정 속성은 정적 텍스트, 경고 페이로드에서 추출된 동적 값 또는 둘의 조합을 사용하여 키/값 쌍으로 지정됩니다.
경고 페이로드에서 동적 값을 추출하는 형식은
${<path to schema field>}
입니다. 예:${data.essentials.monitorCondition}
경고 규칙에 구성된 작업 그룹이 공통 스키마를 사용하는지 여부에 관계없이 페이로드의 필드를 지정하려면 공통 경고 스키마 형식을 사용합니다.
참고 항목
- 사용자 지정 속성은 경고의 페이로드에 추가되지만 메일 템플릿이나 Azure Portal의 경고 세부 정보에는 표시되지 않습니다.
다음 예에서는 사용자 지정 속성의 값을 사용하여 공통 경고 스키마를 사용하는 페이로드의 데이터를 활용합니다.
이 예에서는 기간 시작 시간 및 기간 종료 시간에 관한 데이터가 포함된 추가 세부 정보 태그를 만듭니다.
- 이름:
Additional Details
- 값:
Evaluation windowStartTime: ${data.alertContext.condition.windowStartTime}. windowEndTime: ${data.alertContext.condition.windowEndTime}
- 결과:
AdditionalDetails:Evaluation windowStartTime: 2023-04-04T14:39:24.492Z. windowEndTime: 2023-04-04T14:44:24.492Z
이 예에서는 경고를 해결하거나 발생시키는 이유에 관한 데이터를 추가합니다.
- 이름:
Alert ${data.essentials.monitorCondition} reason
- 값:
${data.alertContext.condition.allOf[0].metricName} ${data.alertContext.condition.allOf[0].operator} ${data.alertContext.condition.allOf[0].threshold} ${data.essentials.monitorCondition}. The value is ${data.alertContext.condition.allOf[0].metricValue}
- 잠재적인 결과:
Alert Resolved reason: Percentage CPU GreaterThan5 Resolved. The value is 3.585
Alert Fired reason": "Percentage CPU GreaterThan5 Fired. The value is 10.585
경고 규칙 태그 구성
태그 탭에서 필요에 따라 경고 규칙 리소스에 필요한 태그를 설정할 수 있습니다.
경고 규칙 검토 및 만들기
검토 + 만들기 탭에서 규칙의 유효성이 검사됩니다. 문제가 있으면 돌아가서 해결합니다.
유효성 검사를 통과하고 설정을 검토했으면 만들기 단추를 선택합니다.