Azure Monitor 애노테이션
Azure Monitor 애노테이션 (Azure Monitor annotations)
애노테이션은 그래프 위에 풍부한 이벤트 정보를 오버레이해요. Azure Monitor Log Analytics 쿼리를 사용해 대시보드에 중요한 이벤트, 배포, 알림 또는 기타 중요한 발생을 표시하는 애노테이션을 만들 수 있어요.
출처: 문서
본문
애노테이션 쿼리 만들기
대시보드에 Azure Monitor 애노테이션을 추가하려면 대시보드 설정에서 Annotations를 열고 새 쿼리에서 Azure Monitor 데이터 소스를 선택하고 KQL 쿼리를 입력하면 돼요.
쿼리 요구 사항
KQL 쿼리는 Grafana가 애노테이션을 만드는 데 사용할 수 있는 열을 반환해야 해요.
| 열 | 필수 | 설명 |
|---|---|---|
| TimeGenerated | 예 | 애노테이션의 타임스탬프. Grafana가 시간 축에 애노테이션을 배치하는 데 사용 |
| Text | 권장 | 애노테이션을 가리키거나 클릭할 때 표시되는 애노테이션 텍스트 |
| 추가 열 | 선택 | 반환된 다른 열은 애노테이션 태그가 됨 |
참고: 결과를 대시보드 시간 범위로 제한하려면 쿼리에 항상 시간 필터를 포함하세요.
$__timeFilter()매크로를 사용하세요.
애노테이션 쿼리 예시
Azure Activity Log 이벤트
리소스 수정, 배포, 관리 작업 같은 Azure Activity Log 이벤트 표시:
AzureActivity
| where $__timeFilter(TimeGenerated)
| where Level == "Error" or Level == "Warning" or CategoryValue == "Administrative"
| project TimeGenerated, Text=OperationNameValue, Level, ResourceGroup, Caller
| order by TimeGenerated desc
| take 100
배포 이벤트
배포 관련 활동 표시:
AzureActivity
| where $__timeFilter(TimeGenerated)
| where OperationNameValue contains "deployments"
| project TimeGenerated, Text=strcat("Deployment: ", OperationNameValue), Status=ActivityStatusValue, ResourceGroup
| order by TimeGenerated desc
Application Insights 예외
애플리케이션 예외를 애노테이션으로 표시:
AppExceptions
| where $__timeFilter(TimeGenerated)
| project TimeGenerated, Text=strcat(ProblemId, ": ", OuterMessage), SeverityLevel, AppRoleName
| order by TimeGenerated desc
| take 50
Application Insights의 커스텀 이벤트
애플리케이션이 기록한 커스텀 이벤트 표시:
AppEvents
| where $__timeFilter(TimeGenerated)
| where Name == "DeploymentStarted" or Name == "DeploymentCompleted"
| project TimeGenerated, Text=Name, AppRoleName
| order by TimeGenerated desc
보안 알림
보안 관련 알림 표시:
SecurityAlert
| where $__timeFilter(TimeGenerated)
| project TimeGenerated, Text=AlertName, Severity=AlertSeverity, Description
| order by TimeGenerated desc
| take 50
리소스 상태 이벤트
리소스 상태 변경 표시:
AzureActivity
| where $__timeFilter(TimeGenerated)
| where CategoryValue == "ResourceHealth"
| project TimeGenerated, Text=OperationNameValue, Status=ActivityStatusValue, ResourceId
| order by TimeGenerated desc
VM 시작·중지 이벤트
가상 머신 상태 변경 표시:
AzureActivity
| where $__timeFilter(TimeGenerated)
| where OperationNameValue has_any ("start", "deallocate", "restart")
| where ResourceProviderValue == "MICROSOFT.COMPUTE"
| project TimeGenerated, Text=OperationNameValue, VM=Resource, Status=ActivityStatusValue
| order by TimeGenerated desc
자동 확장 이벤트
자동 확장(autoscale) 작업 표시:
AzureActivity
| where $__timeFilter(TimeGenerated)
| where OperationNameValue contains "autoscale"
| project TimeGenerated, Text=strcat("Autoscale: ", OperationNameValue), Status=ActivityStatusValue, ResourceGroup
| order by TimeGenerated desc
애노테이션 모양 사용자 지정
| 설정 | 설명 |
|---|---|
| Color | 애노테이션 마커의 색상 선택. 애노테이션 유형을 구분하는 데 다른 색 사용 |
| Show in | 애노테이션을 표시할 패널 선택 |
| Filter by | 애노테이션이 나타나는 시점을 제한하는 필터 추가 |
모범 사례
애노테이션을 만들 때 다음을 권장해요: 시간 필터를 포함하고, take로 행 수를 제한하며, Text 열을 명확하게 지정하세요.
애노테이션 문제 해결
- 애노테이션이 나타나지 않음: 데이터 소스 선택, 시간 필터, 토글 활성화를 확인하세요.
- 애노테이션 과다:
take로 행 수를 제한하거나 시간 범위를 조정하세요. - 애노테이션이 잘못된 시간에 표시: 쿼리에서 반환하는
TimeGenerated값과 시간대 설정을 확인하세요.