Sdílet prostřednictvím


Vytváření monitorovacích prostředků pomocí Bicep

Azure nabízí komplexní sadu nástrojů, které můžou monitorovat vaše aplikace a služby. Prostředky monitorování můžete prostřednictvím kódu programu vytvořit pomocí Bicep a automatizovat vytváření pravidel, nastavení diagnostiky a upozornění při zřizování infrastruktury Azure.

Přenesení konfigurace monitorování do kódu Bicep může vypadat neobvykle, protože na webu Azure Portal jsou k dispozici nástroje pro nastavení pravidel upozornění, nastavení diagnostiky a řídicích panelů.

Upozornění a nastavení diagnostiky jsou ale v podstatě stejná jako ostatní prostředky infrastruktury. Zahrnutím prostředků do kódu Bicep můžete nasadit a otestovat prostředky upozorňování stejně jako u jiných prostředků Azure.

Pokud ke správě souborů Bicep používáte Git nebo jiný nástroj pro správu verzí, získáte také výhodu historie konfigurace monitorování, abyste viděli, jak se upozornění nastavila a nakonfigurovala.

Pracovní prostory Log Analytics a Application Insights

Pracovní prostory služby Log Analytics můžete vytvářet s typem prostředku Microsoft.OperationalInsights/workspaces a pracovními prostory Application Insights s typem Microsoft.Insights/components. Obě tyto komponenty se nasazují do skupin prostředků.

Nastavení diagnostiky

Nastavení diagnostiky umožňuje nakonfigurovat Azure Monitor pro export protokolů a metrik do řady cílů, včetně Log Analytics a Azure Storage.

Při vytváření nastavení diagnostiky v Bicep nezapomeňte, že tento prostředek je prostředek rozšíření, což znamená, že se použije na jiný prostředek. Nastavení diagnostiky v Bicep můžete vytvořit pomocí typu prostředku Microsoft.Insights/diagnosticSettings.

Při vytváření nastavení diagnostiky v Bicep je potřeba použít rozsah nastavení diagnostiky. Nastavení diagnostiky se dá použít na úrovni správy, předplatného nebo skupiny prostředků. K nastavení oboru tohoto prostředku použijte vlastnost oboru tohoto prostředku.

Představte si následující příklad:

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

V předchozím příkladu vytvoříte nastavení diagnostiky pro plán služby App Service a odešlete je do Log Analytics. Vlastnost můžete použít scope k definování plánu služby App Service jako rozsahu nastavení diagnostiky a pomocí workspaceId vlastnosti definovat pracovní prostor služby Log Analytics k odesílání diagnostických protokolů. Nastavení diagnostiky můžete exportovat také do služby Event Hubs a účtů úložiště Azure.

Typy protokolů se mezi prostředky liší, proto se ujistěte, že protokoly, které chcete exportovat, platí pro prostředek, který používáte.

Nastavení diagnostiky protokolu aktivit

Pokud chcete pomocí Bicep nakonfigurovat nastavení diagnostiky pro export protokolu aktivit Azure, nasaďte prostředek nastavení diagnostiky v oboru předplatného.

Následující příklad ukazuje, jak exportovat několik typů protokolů aktivit do pracovního prostoru služby 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
      }
    ]
  }
}

Výstrahy

Výstrahy vás aktivně upozorňují, když se v infrastruktuře a aplikacích Azure nacházejí problémy monitorováním dat ve službě Azure Monitor. Konfigurací konfigurace monitorování a upozorňování v kódu Bicep můžete automatizovat vytváření těchto upozornění společně s infrastrukturou, kterou zřizujete v Azure.

Další informace o tom, jak fungují výstrahy v Azure, najdete v tématu Přehled výstrah v Microsoft Azure.

Následující části ukazují, jak pomocí kódu Bicep nakonfigurovat různé typy upozornění.

Skupiny akcí

Pokud chcete být upozorněni na aktivaci výstrah, musíte vytvořit skupinu akcí. Skupina akcí je kolekce předvoleb oznámení, které definuje vlastník předplatného Azure. Skupiny akcí slouží k upozorňování uživatelů na aktivaci výstrah nebo k aktivaci automatizovaných odpovědí na výstrahy.

K vytvoření skupin akcí v Bicep můžete použít typ Microsoft.Insights/actionGroups. Tady je příklad:

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

Předchozí příklad vytvoří skupinu akcí, která odesílá upozornění na e-mailovou adresu, ale můžete také definovat skupiny akcí, které odesílají výstrahy do event Hubs, Azure Functions, Logic Apps a dalších.

Pravidla zpracování upozornění

Pravidla zpracování výstrah (dříve označovaná jako pravidla akcí) umožňují použít zpracování u aktivovaných výstrah. Pravidla zpracování výstrah můžete vytvořit v Bicep pomocí typu Microsoft.AlertsManagement/actionRules.

Každé pravidlo zpracování upozornění má obor, který může být seznamem jednoho nebo více konkrétních prostředků, konkrétní skupiny prostředků nebo celého předplatného Azure. Při definování pravidel zpracování výstrah v Bicep definujete seznam ID prostředků ve vlastnosti oboru , který cílí na tyto prostředky pro pravidlo zpracování upozornění.

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

V předchozím příkladu MonitorService je definováno pravidlo zpracování upozornění ve službě Azure Backup Vault, které se použije u existující skupiny akcí. Toto pravidlo aktivuje upozornění na skupinu akcí.

Pravidla upozornění protokolu

Upozornění protokolu automaticky spouštějí dotaz Log Analytics. Dotaz, který se používá k vyhodnocení protokolů prostředků v intervalu, který definujete, určuje, jestli výsledky splňují zadaná kritéria, a pak aktivuje výstrahu.

Pravidla upozornění protokolu můžete vytvořit v Bicep pomocí typu Microsoft.Insights/scheduledQueryRules.

Pravidla upozornění metrik

Upozornění na metriky vás upozorní, když jedna z metrik překročí definovanou prahovou hodnotu. Pravidlo upozornění na metriku můžete v kódu Bicep definovat pomocí typu Microsoft.Insights/metricAlerts.

Upozornění protokolu aktivit

Protokol aktivit Azure je protokol platformy v Azure, který poskytuje přehled o událostech na úrovni předplatného. Patří sem informace, jako je například změna prostředku v Azure.

Výstrahy protokolu aktivit jsou výstrahy, které se aktivují, když dojde k nové události protokolu aktivit, které odpovídají podmínkám zadaným v upozornění.

Vlastnost v rámci typu Microsoft.Insights/activityLogAlerts můžete použít scope k vytvoření upozornění protokolu aktivit pro konkrétní prostředek nebo seznam prostředků pomocí ID prostředků jako předpony.

V rámci condition vlastnosti definujete podmínky pravidla upozornění a pak nakonfigurujete skupinu upozornění, aby tyto výstrahy aktivovala pomocí actionGroup pole. Tady můžete předat jednu nebo více skupin akcí pro odesílání upozornění protokolu aktivit v závislosti na vašich požadavcích.

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

Upozornění funkce Resource Health

Azure Resource Health vás informuje o aktuálním a historickém stavu vašich prostředků Azure. Vytvořením upozornění služby Resource Health pomocí Bicep můžete tyto výstrahy hromadně vytvořit a přizpůsobit.

V bicep můžete vytvořit upozornění služby Resource Health s typem Microsoft.Insights/activityLogAlerts.

Výstrahy služby Resource Health je možné nakonfigurovat tak, aby monitorovaly události na úrovni předplatného, skupiny prostředků nebo jednotlivých prostředků.

Podívejte se na následující příklad, kde vytvoříte výstrahu služby Resource Health, která hlásí výstrahy služby Service Health. Výstraha se použije na úrovni předplatného (pomocí scope vlastnosti) a odešle výstrahy existující skupině akcí:

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

Upozornění inteligentního zjišťování

Upozornění inteligentního zjišťování vás varují před potenciálními problémy s výkonem a anomáliemi selhání ve vaší webové aplikaci. Výstrahy inteligentního zjišťování můžete v Bicep vytvářet pomocí typu Microsoft.AlertsManagement/smartDetectorAlertRules.

Řídicí panely

V Bicep můžete vytvářet řídicí panely portálu pomocí typu prostředku Microsoft.Portal/dashboards.

Další informace o vytváření řídicích panelů s kódem najdete v tématu Programové vytvoření řídicího panelu Azure.

Pravidla automatického škálování

Pokud chcete vytvořit nastavení automatického škálování, definujte je pomocí typu prostředku Microsoft.Insights/autoscaleSettings.

Pokud chcete cílit na prostředek, na který chcete použít nastavení automatického škálování, musíte zadat identifikátor cílového prostředku prostředku, do kterého se má toto nastavení přidat.

V tomto příkladu je podmínka horizontálního navýšení kapacity plánu služby App Service založená na průměrném procentu procesoru za 10minutové časové období. Pokud plán služby App Service překročí 70% průměrnou spotřebu procesoru za 10 minut, modul automatického škálování horizontálně navyšuje kapacitu plánu přidáním jedné instance.

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

Poznámka:

Při definovánípravidelch Další informace najdete v následující dokumentaci k osvědčeným postupům pro automatické škálování.