Delen via


Bewakingsbronnen maken met Bicep

Azure heeft een uitgebreide reeks hulpprogramma's die uw toepassingen en services kunnen bewaken. U kunt uw bewakingsbronnen programmatisch maken met Bicep om het maken van regels, diagnostische instellingen en waarschuwingen bij het inrichten van uw Azure-infrastructuur te automatiseren.

Het kan ongebruikelijk lijken om uw bewakingsconfiguratie in uw Bicep-code te brengen, gezien het feit dat er hulpprogramma's beschikbaar zijn in Azure Portal om waarschuwingsregels, diagnostische instellingen en dashboards in te stellen.

Waarschuwingen en diagnostische instellingen zijn echter in wezen hetzelfde als uw andere infrastructuurresources. Door ze op te slaan in uw Bicep-code, kunt u uw waarschuwingsbronnen implementeren en testen zoals u dat zou doen voor andere Azure-resources.

Als u Git of een ander hulpprogramma voor versiebeheer gebruikt om uw Bicep-bestanden te beheren, profiteert u ook van een geschiedenis van uw bewakingsconfiguratie, zodat u kunt zien hoe waarschuwingen zijn ingesteld en geconfigureerd.

Log Analytics- en Application Insights-werkruimten

U kunt Log Analytics-werkruimten maken met het resourcetype Microsoft.OperationalInsights/workspaces en Application Insights-werkruimten met het type Microsoft.Insights/components. Beide onderdelen worden geïmplementeerd in resourcegroepen.

Diagnostische instellingen

Met diagnostische instellingen kunt u Azure Monitor configureren om uw logboeken en metrische gegevens te exporteren naar een aantal bestemmingen, waaronder Log Analytics en Azure Storage.

Houd er bij het maken van diagnostische instellingen in Bicep rekening mee dat deze resource een extensieresource is, wat betekent dat deze wordt toegepast op een andere resource. U kunt diagnostische instellingen maken in Bicep met behulp van het resourcetype Microsoft.Insights/diagnostic Instellingen.

Bij het maken van diagnostische instellingen in Bicep moet u het bereik van de diagnostische instelling toepassen. De diagnostische instelling kan worden toegepast op het niveau van beheer, abonnement of resourcegroep. Gebruik de bereikeigenschap voor deze resource om het bereik voor deze resource in te stellen.

Kijk een naar het volgende voorbeeld:

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@2023-12-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
    logs: [
      {
        category: 'AllMetrics'
        enabled: true
        retentionPolicy: {
          days: 30
          enabled: true 
        }
      }
    ]
  }
}

In het voorgaande voorbeeld maakt u een diagnostische instelling voor het App Service-plan en verzendt u deze diagnostische gegevens naar Log Analytics. U kunt de scope eigenschap gebruiken om uw App Service-plan te definiëren als het bereik voor uw diagnostische instelling en de workspaceId eigenschap gebruiken om de Log Analytics-werkruimte te definiëren om de diagnostische logboeken naar te verzenden. U kunt ook diagnostische instellingen exporteren naar Event Hubs en Azure Storage-accounts.

Logboektypen verschillen tussen resources, dus zorg ervoor dat de logboeken die u wilt exporteren van toepassing zijn voor de resource die u gebruikt.

Diagnostische instellingen voor activiteitenlogboek

Als u Bicep wilt gebruiken om diagnostische instellingen te configureren voor het exporteren van het Azure-activiteitenlogboek, implementeert u een resource voor diagnostische instellingen in het abonnementsbereik.

In het volgende voorbeeld ziet u hoe u verschillende typen activiteitenlogboeken exporteert naar een Log Analytics-werkruimte:

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
      }
    ]
  }
}

Waarschuwingen

Waarschuwingen melden u proactief wanneer er problemen worden gevonden in uw Azure-infrastructuur en -toepassingen door gegevens in Azure Monitor te bewaken. Door uw bewakings- en waarschuwingsconfiguratie in uw Bicep-code te configureren, kunt u het maken van deze waarschuwingen automatiseren naast de infrastructuur die u in Azure inricht.

Zie Overzicht van waarschuwingen in Microsoft Azure voor meer informatie over hoe waarschuwingen werken in Azure.

In de volgende secties ziet u hoe u verschillende typen waarschuwingen kunt configureren met bicep-code.

Actiegroepen

Als u een melding wilt ontvangen wanneer waarschuwingen zijn geactiveerd, moet u een actiegroep maken. Een actiegroep is een verzameling meldingsvoorkeuren die zijn gedefinieerd door de eigenaar van een Azure-abonnement. Actiegroepen worden gebruikt om gebruikers op de hoogte te stellen dat een waarschuwing is geactiveerd of om geautomatiseerde reacties op waarschuwingen te activeren.

Als u actiegroepen wilt maken in Bicep, kunt u het type Microsoft.Insights/actionGroups gebruiken. Dit is een voorbeeld:

param actionGroupName string = 'On-Call Team'
param location string = resourceGroup().location

var actionGroupEmail = 'oncallteam@contoso.com'

resource supportTeamActionGroup 'Microsoft.Insights/actionGroups@2023-01-01' = {
  name: actionGroupName
  location: location
  properties: {
    enabled: true
    groupShortName: actionGroupName
    emailReceivers: [
      {
        name: actionGroupName
        emailAddress: actionGroupEmail
        useCommonAlertSchema: true
      }
    ]
  }
}

In het voorgaande voorbeeld wordt een actiegroep gemaakt waarmee waarschuwingen worden verzonden naar een e-mailadres, maar u kunt ook actiegroepen definiëren die waarschuwingen verzenden naar Event Hubs, Azure Functions, Logic Apps en meer.

Regels voor het verwerken van waarschuwingen

Met regels voor waarschuwingsverwerking (voorheen actieregels genoemd) kunt u verwerking toepassen op waarschuwingen die zijn geactiveerd. U kunt regels voor waarschuwingsverwerking maken in Bicep met het type Microsoft.AlertsManagement/actionRules.

Elke regel voor waarschuwingsverwerking heeft een bereik, dat een lijst kan zijn van een of meer specifieke resources, een specifieke resourcegroep of uw hele Azure-abonnement. Wanneer u regels voor waarschuwingsverwerking in Bicep definieert, definieert u een lijst met resource-id's in de bereikeigenschap , die gericht is op deze resources voor de waarschuwingsverwerkingsregel.

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
    ]
  }
}

In het vorige voorbeeld wordt de regel voor waarschuwingsverwerking MonitorService in Azure Backup Vault gedefinieerd, die wordt toegepast op de bestaande actiegroep. Deze regel activeert waarschuwingen voor de actiegroep.

Waarschuwingsregels voor logboeken

Logboekwaarschuwingen voeren automatisch een Log Analytics-query uit. De query die wordt gebruikt om resourcelogboeken te evalueren met een interval dat u definieert, bepaalt of de resultaten voldoen aan bepaalde criteria die u opgeeft en vervolgens een waarschuwing wordt geactiveerd.

U kunt waarschuwingsregels voor logboeken maken in Bicep met het type Microsoft.Insights/scheduledQueryRules.

Regels voor metrische waarschuwingen

Metrische waarschuwingen melden u wanneer een van uw metrische gegevens een gedefinieerde drempelwaarde overschrijdt. U kunt een waarschuwingsregel voor metrische gegevens definiëren in uw Bicep-code met behulp van het type Microsoft.Insights/metricAlerts.

Waarschuwingen voor activiteitenlogboeken

Het Azure-activiteitenlogboek is een platformlogboek in Azure dat inzicht biedt in gebeurtenissen op abonnementsniveau. Dit omvat informatie zoals wanneer een resource in Azure wordt gewijzigd.

Waarschuwingen voor activiteitenlogboeken zijn waarschuwingen die worden geactiveerd wanneer een nieuwe gebeurtenis in het activiteitenlogboek plaatsvindt die overeenkomen met de voorwaarden die zijn opgegeven in de waarschuwing.

U kunt de scope eigenschap binnen het type Microsoft.Insights/activityLogAlerts gebruiken om waarschuwingen voor activiteitenlogboeken te maken voor een specifieke resource of een lijst met resources met behulp van de resource-id's als voorvoegsel.

U definieert de voorwaarden voor de waarschuwingsregel in de condition eigenschap en configureert vervolgens de waarschuwingsgroep om deze waarschuwingen te activeren met behulp van de actionGroup matrix. Hier kunt u één of meerdere actiegroepen doorgeven om waarschuwingen voor activiteitenlogboeken te verzenden, afhankelijk van uw vereisten.

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
    ]
  }
}

Resource Health-waarschuwingen

Azure Resource Health houdt u op de hoogte van de huidige en historische status van uw Azure-resources. Door uw resourcestatuswaarschuwingen te maken met Bicep, kunt u deze waarschuwingen bulksgewijs maken en aanpassen.

In Bicep kunt u resourcestatuswaarschuwingen maken met het type Microsoft.Insights/activityLogAlerts.

Resourcestatuswaarschuwingen kunnen worden geconfigureerd voor het bewaken van gebeurtenissen op het niveau van een abonnement, resourcegroep of afzonderlijke resource.

Bekijk het volgende voorbeeld, waarbij u een resourcestatuswaarschuwing maakt die rapporteert over servicestatuswaarschuwingen. De waarschuwing wordt toegepast op abonnementsniveau (met behulp van de scope eigenschap) en verzendt waarschuwingen naar een bestaande actiegroep:

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
        }
      ]
    }
  }
}

Waarschuwingen voor slimme detectie

Waarschuwingen voor slimme detectie waarschuwen u voor mogelijke prestatieproblemen en foutafwijkingen in uw webtoepassing. U kunt slimme detectiewaarschuwingen maken in Bicep met het type Microsoft.AlertsManagement/smartDetectorAlertRules.

Dashboards

In Bicep kunt u portaldashboards maken met behulp van het resourcetype Microsoft.Portal/dashboards.

Zie Programmatisch een Azure-dashboard maken voor meer informatie over het maken van dashboards met code.

Regels voor automatisch schalen

Als u een instelling voor automatisch schalen wilt maken, definieert u deze met behulp van het resourcetype Microsoft.Insights/automatische schaalaanpassing Instellingen.

Als u de resource wilt instellen waarop u de instelling voor automatisch schalen wilt toepassen, moet u de doelresource-id opgeven van de resource waaraan de instelling moet worden toegevoegd.

In dit voorbeeld is een uitschaalvoorwaarde voor het App Service-plan gebaseerd op het gemiddelde CPU-percentage gedurende een periode van tien minuten. Als het App Service-plan het gemiddelde CPU-verbruik van meer dan 10 minuten overschrijdt, schaalt de engine voor automatisch schalen het plan uit door één exemplaar toe te voegen.

param location string = resourceGroup().location
param appPlanName string = '${uniqueString(resourceGroup().id)}asp'

var appPlanSkuName = 'S1'

resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-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
  }
}

Notitie

Houd bij het definiëren van regels voor automatisch schalen rekening met aanbevolen procedures om problemen te voorkomen bij het automatisch schalen, zoals schalen. Zie de volgende documentatie over aanbevolen procedures voor automatisch schalen voor meer informatie.