Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В Azure есть полный набор средств, которые могут отслеживать приложения и службы. Вы можете программно создать ресурсы мониторинга с помощью Bicep для автоматизации создания правил, параметров диагностики и оповещений при подготовке инфраструктуры Azure.
Настройка конфигурации мониторинга в код Bicep может показаться необычной, учитывая, что на портале Azure доступны средства для настройки правил генерации оповещений, параметров диагностики и панелей мониторинга.
Однако оповещения и параметры диагностики по сути совпадают с другими ресурсами инфраструктуры. Включив их в код Bicep, вы можете развертывать и тестировать ресурсы оповещений, как и для других ресурсов Azure.
Если вы используете Git или другое средство управления версиями для управления файлами Bicep, вы также получите историю конфигурации мониторинга, чтобы увидеть, как были настроены оповещения.
Рабочие области Log Analytics и Application Insights
Вы можете создавать рабочие области Log Analytics с типом ресурса Microsoft.OperationalInsights/workspaces и рабочие области Application Insights с типом Microsoft.Insights/components. Оба этих компонента развертываются в группах ресурсов.
Диагностические настройки
Параметры диагностики позволяют вам настроить Azure Monitor для экспорта журналов и метрик в различные места назначения, включая Log Analytics и Azure Storage.
При создании параметров диагностики в Bicep помните, что этот ресурс является ресурсом расширения, что означает, что он применяется к другому ресурсу. Параметры диагностики можно создать в Bicep с помощью типа ресурса Microsoft.Insights/diagnosticSettings.
При создании настроек диагностики в Bicep необходимо задать область действия настройки диагностики. Параметр диагностики можно применить на уровне управления, подписки или группы ресурсов. Используйте свойство области для этого ресурса, чтобы задать область для этого ресурса.
Рассмотрим следующий пример:
param location string = resourceGroup().location
param appPlanName string = '${uniqueString(resourceGroup().id)}asp'
param logAnalyticsWorkspace string = '${uniqueString(resourceGroup().id)}la'
var appPlanSkuName = 'S1'
resource logAnalytics 'Microsoft.OperationalInsights/workspaces@2023-09-01' existing = {
name: logAnalyticsWorkspace
}
resource appServicePlan 'Microsoft.Web/serverfarms@2025-03-01' = {
name: appPlanName
location: location
sku: {
name: appPlanSkuName
capacity: 1
}
}
resource diagnosticLogs 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = {
name: appServicePlan.name
scope: appServicePlan
properties: {
workspaceId: logAnalytics.id
metrics: [
{
category: 'AllMetrics'
enabled: true
retentionPolicy: {
days: 30
enabled: true
}
}
]
}
}
В предыдущем примере вы создадите параметр диагностики для плана службы приложений и отправите их в Log Analytics. Вы можете использовать свойство scope для определения плана службы приложений в качестве области для параметра диагностики, а свойство workspaceId — для указания рабочей области Log Analytics, в которую будут отправляться журналы диагностики. Вы также можете экспортировать параметры диагностики в Центры событий и учетные записи хранения Azure.
Типы журналов различаются между ресурсами, поэтому убедитесь, что журналы, которые необходимо экспортировать, применимы к используемому ресурсу.
Параметры диагностики журнала действий
Чтобы использовать Bicep для настройки параметров диагностики для экспорта журнала действий Azure, разверните ресурс диагностических параметров в области подписки.
В следующем примере показано, как экспортировать несколько типов журналов действий в рабочую область Log Analytics:
targetScope = 'subscription'
param logAnalyticsWorkspaceId string
var activityLogDiagnosticSettingsName = 'export-activity-log'
resource subscriptionActivityLog 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = {
name: activityLogDiagnosticSettingsName
properties: {
workspaceId: logAnalyticsWorkspaceId
logs: [
{
category: 'Administrative'
enabled: true
}
{
category: 'Security'
enabled: true
}
{
category: 'ServiceHealth'
enabled: true
}
{
category: 'Alert'
enabled: true
}
{
category: 'Recommendation'
enabled: true
}
{
category: 'Policy'
enabled: true
}
{
category: 'Autoscale'
enabled: true
}
{
category: 'ResourceHealth'
enabled: true
}
]
}
}
Уведомления
Оповещения заранее уведомляют вас о проблемах, обнаруженных в инфраструктуре и приложениях Azure, отслеживая данные в Azure Monitor. Настроив конфигурацию мониторинга и оповещений в коде Bicep, вы можете автоматизировать создание этих оповещений вместе с инфраструктурой, которую вы подготавливаете в Azure.
Дополнительные сведения о работе оповещений в Azure см. в обзоре оповещений в Microsoft Azure.
В следующих разделах показано, как настроить различные типы оповещений с помощью кода Bicep.
Группы действий
Чтобы получать уведомления о активации оповещений, необходимо создать группу действий. Группа действий — это коллекция параметров уведомлений, определенных владельцем подписки Azure. Группы действий используются для уведомления пользователей о активации оповещения или активации автоматических ответов на оповещения.
Чтобы создать группы действий в Bicep, можно использовать тип Microsoft.Insights/actionGroups. Ниже приведен пример:
param actionGroupName string = 'On-Call Team'
param location string = resourceGroup().location
var actionGroupEmail = 'oncallteam@contoso.com'
resource supportTeamActionGroup 'Microsoft.Insights/actionGroups@2024-10-01-preview' = {
name: actionGroupName
location: location
properties: {
enabled: true
groupShortName: actionGroupName
emailReceivers: [
{
name: actionGroupName
emailAddress: actionGroupEmail
useCommonAlertSchema: true
}
]
}
}
В предыдущем примере создается группа действий, которая отправляет оповещения на адрес электронной почты, но можно также определить группы действий, которые отправляют оповещения в Центры событий, Функции Azure, Logic Apps и многое другое.
Правила обработки оповещений
Правила обработки оповещений (ранее называемые правилами действий) позволяют применять обработку оповещений, которые были запущены. Правила обработки оповещений можно создать в Bicep с помощью типа Microsoft.AlertsManagement/actionRules.
Каждое правило обработки оповещений имеет область, которая может быть списком одного или нескольких конкретных ресурсов, определенной группы ресурсов или всей подписки Azure. При определении правил обработки оповещений в Bicep вы указываете список идентификаторов ресурсов в свойстве области, который определяет, какие ресурсы будут подчинены правилам обработки оповещений.
param alertRuleName string = 'AlertRuleName'
param actionGroupName string = 'On-Call Team'
param location string = resourceGroup().location
resource actionGroup 'Microsoft.Insights/actionGroups@2023-09-01-preview' existing = {
name: actionGroupName
}
resource alertProcessingRule 'Microsoft.AlertsManagement/actionRules@2023-05-01-preview' = {
name: alertRuleName
location: location
properties: {
actions: [
{
actionType: 'AddActionGroups'
actionGroupIds: [
actionGroup.id
]
}
]
conditions: [
{
field: 'MonitorService'
operator: 'Equals'
values: [
'Azure Backup'
]
}
]
enabled: true
scopes: [
subscription().id
]
}
}
В предыдущем примере MonitorService определяется правило обработки оповещений в Azure Backup Vault, которое применяется к существующей группе действий. Это правило активирует оповещения для группы действий.
Правила журналирования оповещений
Оповещения журнала автоматически запускают запрос в Log Analytics. Запрос, который используется для оценки журналов ресурсов через определенный интервал, определяет, соответствуют ли результаты определенным критериям, а затем вызывает оповещение.
Вы можете создать правила оповещений журнала в Bicep, используя тип Microsoft.Insights/scheduledQueryRules.
Правила оповещений о метриках
Оповещения метрик уведомляют вас, когда одна из метрик пересекает определенное пороговое значение. Правило оповещения по метрикам можно определить в коде Bicep с помощью типа Microsoft.Insights/metricAlerts.
Оповещения журнала активности
Журнал действий Azure — это журнал платформы в Azure, который предоставляет аналитические сведения о событиях на уровне подписки. К ним относятся такие сведения, как изменение ресурса в Azure.
Оповещения журнала действий — это оповещения, активируемые при возникновении нового события журнала действий, соответствующего условиям, указанным в оповещении.
Свойство можно использовать scope в типе Microsoft.Insights/activityLogAlerts для создания оповещений журнала действий для определенного ресурса или списка ресурсов, использующих идентификаторы ресурсов в качестве префикса.
Вы определяете условия правила генерации оповещений в свойстве condition , а затем настраиваете группу оповещений для активации этих оповещений с помощью массива actionGroup . Здесь вы можете передать одну или несколько групп действий для отправки уведомлений из журнала активности в зависимости от ваших требований.
param activityLogAlertName string = '${uniqueString(resourceGroup().id)}-alert'
param actionGroupName string = 'adminactiongroup'
resource actionGroup 'Microsoft.Insights/actionGroups@2023-09-01-preview' existing = {
name: actionGroupName
}
resource activityLogAlert 'Microsoft.Insights/activityLogAlerts@2023-01-01-preview' = {
name: activityLogAlertName
location: 'Global'
properties: {
condition: {
allOf: [
{
field: 'category'
equals: 'Administrative'
}
{
field: 'operationName'
equals: 'Microsoft.Resources/deployments/write'
}
{
field: 'resourceType'
equals: 'Microsoft.Resources/deployments'
}
]
}
actions: {
actionGroups: [
{
actionGroupId: actionGroup.id
}
]
}
scopes: [
subscription().id
]
}
}
Оповещения о состоянии ресурсов
Служба "Работоспособность ресурсов Azure" позволяет получать сведения о текущем и прошлых состояниях работоспособности ресурсов Azure. Создавая оповещения о работоспособности ресурсов с помощью Bicep, вы можете создавать и настраивать эти оповещения в массовом режиме.
В Bicep можно создавать оповещения о работоспособности ресурсов с типом Microsoft.Insights/activityLogAlerts.
Оповещения о работоспособности ресурсов можно настроить для мониторинга событий на уровне подписки, группы ресурсов или отдельного ресурса.
Рассмотрим следующий пример, в котором создается оповещение о работоспособности ресурсов, которое сообщает о оповещениях о работоспособности службы. Оповещение применяется на уровне подписки (с помощью scope свойства) и отправляет оповещения в существующую группу действий:
param activityLogAlertName string = uniqueString(resourceGroup().id)
param actionGroupName string = 'oncallactiongroup'
resource actionGroup 'Microsoft.Insights/actionGroups@2023-09-01-preview' existing = {
name: actionGroupName
}
resource resourceHealthAlert 'Microsoft.Insights/activityLogAlerts@2023-01-01-preview' = {
name: activityLogAlertName
location: 'global'
properties: {
condition: {
allOf: [
{
field: 'category'
equals: 'ServiceHealth'
}
]
}
scopes: [
subscription().id
]
actions: {
actionGroups: [
{
actionGroupId: actionGroup.id
}
]
}
}
}
Оповещения интеллектуального обнаружения
Оповещения интеллектуального обнаружения предупреждают о потенциальных проблемах производительности и аномалиях сбоев в веб-приложении. Оповещения интеллектуального обнаружения можно создать в Bicep с помощью типа Microsoft.AlertsManagement/smartDetectorAlertRules.
Дашборды
В Bicep можно создавать панели мониторинга портала с помощью типа ресурса Microsoft.Portal/dashboards.
Дополнительные сведения о создании панелей мониторинга с помощью кода см. в статье " Программное создание панели мониторинга Azure".
Правила автомасштабирования
Чтобы создать параметр автомасштабирования, определите их с помощью типа ресурса Microsoft.Insights/autoscaleSettings.
Чтобы нацелить ресурс, к которому необходимо применить параметр автомасштабирования, необходимо указать идентификатор целевого ресурса, к которому следует добавить этот параметр.
В этом примере условие горизонтального масштабирования для плана службы приложений на основе среднего процента ЦП в течение 10-минутного периода времени. Если план службы приложений превышает 70% среднее потребление ЦП в течение 10 минут, подсистема автомасштабирования масштабирует план, добавив один экземпляр.
param location string = resourceGroup().location
param appPlanName string = '${uniqueString(resourceGroup().id)}asp'
var appPlanSkuName = 'S1'
resource appServicePlan 'Microsoft.Web/serverfarms@2025-03-01' = {
name: appPlanName
location: location
properties: {}
sku: {
name: appPlanSkuName
capacity: 1
}
}
resource scaleOutRule 'Microsoft.Insights/autoscalesettings@2022-10-01' = {
name: appServicePlan.name
location: location
properties: {
enabled: true
profiles: [
{
name: 'Scale out condition'
capacity: {
maximum: '3'
default: '1'
minimum: '1'
}
rules: [
{
scaleAction: {
type: 'ChangeCount'
direction: 'Increase'
cooldown: 'PT5M'
value: '1'
}
metricTrigger: {
metricName: 'CpuPercentage'
operator: 'GreaterThan'
timeAggregation: 'Average'
threshold: 70
metricResourceUri: appServicePlan.id
timeWindow: 'PT10M'
timeGrain: 'PT1M'
statistic: 'Average'
}
}
]
}
]
targetResourceUri: appServicePlan.id
}
}
Замечание
При определении правил автомасштабирования следует учитывать лучшие практики, чтобы избежать проблем, таких как неустойчивость, при попытке автомасштабирования. Для получения дополнительной информации см. следующую документацию по лучшим практикам автомасштабирования.
Связанные ресурсы
- Документация по ресурсам
- Microsoft.OperationalInsights/рабочие области
- Microsoft.Insights/компоненты
- Microsoft.Insights/diagnosticSettings
- Microsoft.Insights/actionGroups
- Microsoft.Insights/scheduledQueryRules
- Microsoft.Insights/metricAlerts
- Microsoft.Portal/панели мониторинга
- Microsoft.Insights/activityLogAlerts
- Microsoft.AlertsManagement/smartDetectorAlertRules.
- Microsoft.Insights/autoscaleSettings