Аннотации Azure Monitor
Аннотации накладывают насыщенную информацию о событиях поверх графиков. С помощью запросов Azure Monitor Log Analytics вы можете создавать аннотации, которые отмечают важные события, развёртывания, оповещения и другие значимые происшествия на ваших дашбордах.
Прежде чем начать
- Убедитесь, что вы настроили источник данных Azure Monitor.
- Вам нужен доступ к рабочему пространству Log Analytics, содержащему данные, которые вы хотите использовать для аннотаций.
- Аннотации используют только запросы Log Analytics (KQL). Запросы Metrics, Traces и Azure Resource Graph для аннотаций не поддерживаются.
Создание запроса аннотации
Чтобы добавить аннотацию Azure Monitor на дашборд:
- Перейдите к дашборду, который хотите изменить, и нажмите Edit.
- Нажмите значок Add new element (синий плюс).
- Нажмите Annotation query.
- Введите имя запроса аннотации.
- Если вы не хотите использовать запрос аннотации сразу, снимите флажок Enabled.
- Выберите цвет для маркеров событий аннотации.
- Выберите вариант в раскрывающемся списке Show annotation controls in, чтобы указать, где на дашборде отображается аннотация.
- Выберите вариант в раскрывающемся списке Show in, чтобы указать панели, на которых отображается аннотация.
- Нажмите Open query editor, чтобы открыть диалоговое окно Annotation Query.
- Выберите ваш источник данных Azure Monitor в раскрывающемся списке Data source.
- Выберите службу Logs.
- Выберите Resource (рабочее пространство Log Analytics или ресурс Application Insights).
- Напишите запрос KQL, возвращающий данные аннотации.
- Настройте запрос аннотации и сопоставления полей.
- (Необязательно) Нажмите Test annotation query, чтобы убедиться, что запрос работает корректно.
- Нажмите Close после завершения настройки запроса.
- Нажмите Save.
- (Необязательно) Введите описание внесённых изменений.
- Нажмите Save.
- Нажмите Exit edit.
Требования к запросу
Ваш запрос KQL должен возвращать столбцы, которые Grafana сможет использовать для создания аннотаций:
Note
Всегда включайте в запрос фильтр по времени, чтобы ограничить результаты диапазоном времени дашборда. Используйте макрос
$__timeFilter().
Примеры запросов аннотаций
Следующие примеры демонстрируют типичные сценарии использования аннотаций.
События журнала действий Azure
Отображение событий журнала действий Azure, таких как изменения ресурсов, развёртывания и административные действия:
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
События запуска и остановки виртуальных машин
Отметка изменений состояния виртуальных машин:
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
События автомасштабирования
Отображение операций автомасштабирования:
AzureActivity
| where $__timeFilter(TimeGenerated)
| where OperationNameValue contains "autoscale"
| project TimeGenerated, Text=strcat("Autoscale: ", OperationNameValue), Status=ActivityStatusValue, ResourceGroup
| order by TimeGenerated desc
Настройка внешнего вида аннотаций
После создания запроса аннотации вы можете настроить её внешний вид:
Рекомендации
Следуйте этим рекомендациям при создании аннотаций:
-
Ограничивайте результаты: всегда используйте
takeилиlimit, чтобы ограничить количество аннотаций. Слишком много аннотаций может загромоздить дашборд и снизить производительность. -
Используйте фильтры по времени: включайте
$__timeFilter(), чтобы запросы возвращали данные только в пределах диапазона времени дашборда. -
Создавайте осмысленный текст: используйте
strcat()илиprojectдля создания описательного текста аннотации, который даёт контекст с первого взгляда. -
Добавляйте подходящие теги: включайте столбцы вроде
ResourceGroup,SeverityилиStatus, которые становятся кликабельными тегами для фильтрации. -
Используйте описательные имена: давайте аннотациям понятные имена (например, “Production Deployments”, “Critical Alerts”), чтобы пользователи дашборда понимали, что они означают.
Устранение неполадок с аннотациями
Если аннотации не отображаются как ожидалось, попробуйте следующие решения.
Аннотации не отображаются
- Проверьте, что запрос возвращает данные в выбранном диапазоне времени.
- Проверьте, что запрос включает столбец
TimeGenerated. - Проверьте запрос в редакторе запросов Log Analytics на портале Azure.
- Убедитесь, что аннотация включена (переключатель активирован).
Слишком много аннотаций
- Добавьте более конкретные фильтры в запрос.
- Используйте
take, чтобы ограничить результаты. - Сузьте диапазон времени.
Аннотации отображаются в неправильное время
- Проверьте, что столбец
TimeGeneratedсодержит правильную отметку времени. - Проверьте настройки часового пояса вашего дашборда.