Monitorozási erőforrások létrehozása a Bicep használatával

Az Azure egy átfogó eszközkészletet biztosít, amely képes monitorozni az alkalmazásokat és szolgáltatásokat. A Monitorozási erőforrásokat programozott módon hozhatja létre a Bicep használatával, hogy automatizálja a szabályok, diagnosztikai beállítások és riasztások létrehozását az Azure-infrastruktúra kiépítésekor.

A monitorozási konfiguráció bicep-kódba való beépítése szokatlannak tűnhet, mivel a Azure Portal belül rendelkezésre állnak a riasztási szabályok, diagnosztikai beállítások és irányítópultok beállítására szolgáló eszközök.

A riasztások és a diagnosztikai beállítások azonban lényegében megegyeznek a többi infrastruktúra-erőforrással. Ha belevenné őket a Bicep-kódba, ugyanúgy telepítheti és tesztelheti a riasztási erőforrásokat, mint más Azure-erőforrások esetében.

Ha a Gitet vagy egy másik verziókövetési eszközt használ a Bicep-fájlok kezeléséhez, azzal az előnyökkel is jár, hogy rendelkezik a figyelési konfiguráció előzményeivel, így láthatja, hogyan lettek beállítva és konfigurálva a riasztások.

Log Analytics- és Application Insights-munkaterületek

Log Analytics-munkaterületeket Microsoft.OperationalInsights/workspaces és Application Insights-munkaterületek erőforrástípussal hozhat létre Microsoft.Insights/components típussal. Mindkét összetevő erőforráscsoportokban van üzembe helyezve.

Diagnosztikai beállítások

A diagnosztikai beállítások lehetővé teszik az Azure Monitor konfigurálását, hogy a naplókat és metrikákat számos célhelyre exportálja, például a Log Analyticsbe és az Azure Storage-ba.

A Bicep diagnosztikai beállításainak létrehozásakor ne feledje, hogy ez az erőforrás egy bővítményerőforrás, ami azt jelenti, hogy egy másik erőforrásra van alkalmazva. Diagnosztikai beállításokat a Bicepben a Microsoft.Insights/diagnosticSettings erőforrástípussal hozhat létre.

Amikor diagnosztikai beállításokat hoz létre a Bicepben, a diagnosztikai beállítás hatókörét kell alkalmaznia. A diagnosztikai beállítás a felügyelet, az előfizetés vagy az erőforráscsoport szintjén alkalmazható. Az erőforrás hatókörének beállításához használja az erőforrás hatókörtulajdonságát.

Tekintse meg a következő példát:

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@2021-12-01-preview' existing = {
  name: logAnalyticsWorkspace
}

resource appServicePlan 'Microsoft.Web/serverfarms@2021-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
    logs: [
      {
        category: 'AllMetrics'
        enabled: true
        retentionPolicy: {
          days: 30
          enabled: true 
        }
      }
    ]
  }
}

Az előző példában létrehoz egy diagnosztikai beállítást a App Service csomaghoz, és elküldi ezeket a diagnosztikát a Log Analyticsnek. A tulajdonsággal definiálhatja a scope App Service csomagot a diagnosztikai beállítás hatóköreként, a tulajdonsággal workspaceId pedig definiálhatja a Log Analytics-munkaterületet a diagnosztikai naplók elküldéséhez. A diagnosztikai beállításokat az Event Hubsba és az Azure Storage-fiókokba is exportálhatja.

A naplótípusok eltérőek az erőforrások között, ezért győződjön meg arról, hogy az exportálni kívánt naplók alkalmazhatók a használt erőforrásra.

Tevékenységnapló diagnosztikai beállításai

Ha a Bicep használatával diagnosztikai beállításokat szeretne konfigurálni az Azure-tevékenységnapló exportálásához, helyezzen üzembe egy diagnosztikai beállítási erőforrást az előfizetés hatókörében.

Az alábbi példa bemutatja, hogyan exportálhat több tevékenységnapló-típust egy Log Analytics-munkaterületre:

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

Riasztások

A riasztások proaktívan értesítik, ha problémák merülnek fel az Azure-infrastruktúrában és az alkalmazásokban az Azure Monitoron belüli adatok monitorozásával. Ha konfigurálja a monitorozási és riasztási konfigurációt a Bicep-kódban, automatizálhatja a riasztások létrehozását az Azure-ban kiépített infrastruktúra mellett.

A riasztások Azure-beli működéséről további információt a Riasztások áttekintése a Microsoft Azure-ban című témakörben talál.

Az alábbi szakaszok bemutatják, hogyan konfigurálhat különböző típusú riasztásokat a Bicep-kóddal.

Műveletcsoportok

Ha értesítést szeretne kapni a riasztások aktiválásakor, létre kell hoznia egy műveletcsoportot. A műveletcsoport az Azure-előfizetés tulajdonosa által meghatározott értesítési beállítások gyűjteménye. A műveletcsoportok arra szolgálnak, hogy értesítsék a felhasználókat a riasztás aktivált állapotáról, vagy automatikus válaszokat váltanak ki a riasztásokra.

Ha műveletcsoportokat szeretne létrehozni a Bicepben, használja a Microsoft.Insights/actionGroups típust. Például:

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

Az előző példa létrehoz egy műveletcsoportot, amely riasztásokat küld egy e-mail-címre, de definiálhat olyan műveletcsoportokat is, amelyek riasztásokat küldenek az Event Hubsnak, Azure Functions, Logic Appsnek stb.

Riasztásfeldolgozási szabályok

A riasztásfeldolgozási szabályok (korábbi nevén műveleti szabályok) lehetővé teszik a feldolgozás alkalmazását az aktivált riasztásokon. A Bicepben a Microsoft.AlertsManagement/actionRules típussal hozhat létre riasztásfeldolgozási szabályokat.

Minden riasztásfeldolgozási szabály hatókörrel rendelkezik, amely egy vagy több konkrét erőforrás, egy adott erőforráscsoport vagy a teljes Azure-előfizetés listája lehet. Amikor riasztásfeldolgozási szabályokat határoz meg a Bicepben, a hatókör tulajdonságban definiálja az erőforrás-azonosítók listáját, amely a riasztásfeldolgozási szabályhoz tartozó erőforrásokat célozza meg.

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

resource actionGroup 'Microsoft.Insights/actionGroups@2021-09-01' existing = {
  name: actionGroupName
}

resource alertProcessingRule 'Microsoft.AlertsManagement/actionRules@2021-08-08' = {
  name: alertRuleName
  location: location
  properties: {
    actions: [
      {
        actionType: 'AddActionGroups'
        actionGroupIds: [
          actionGroup.id
        ]
      }
    ]
    conditions: [
      {
        field: 'MonitorService'
        operator: 'Equals'
        values: [
          'Azure Backup'
        ]
      }
    ]
    enabled: true
    scopes: [
      subscription().id
    ]
  }
}

Az előző példában a MonitorService Azure Backup Vault riasztásfeldolgozási szabálya van definiálva, amely a meglévő műveletcsoportra lesz alkalmazva. Ez a szabály riasztásokat aktivál a műveletcsoport számára.

Naplóriasztási szabályok

A naplóriasztások automatikusan futtatnak egy Log Analytics-lekérdezést. A lekérdezés, amely az erőforrásnaplók ön által meghatározott időközönkénti kiértékelésére szolgál, meghatározza, hogy az eredmények megfelelnek-e bizonyos megadott feltételeknek, majd riasztást aktivál.

A Naplóriasztási szabályokat a Microsoft.Insights/scheduledQueryRules típussal hozhatja létre a Bicepben.

Metrika riasztási szabályai

A metrikariasztások értesítést küldenek, ha az egyik metrika átlép egy meghatározott küszöbértéket. A Bicep-kódban metrikariasztási szabályt a Microsoft.Insights/metricAlerts típussal határozhat meg.

Tevékenységnapló-riasztások

Az Azure-tevékenységnapló egy platformnapló az Azure-ban, amely betekintést nyújt az előfizetés szintjén zajló eseményekbe. Ezek közé tartoznak például az Azure-beli erőforrások módosításának időpontjára vonatkozó információk.

A tevékenységnapló-riasztások olyan riasztások, amelyek akkor aktiválódnak, ha új tevékenységnapló-esemény történik, amely megfelel a riasztásban megadott feltételeknek.

A Microsoft.Insights/activityLogAlerts típuson belüli tulajdonsággal scope tevékenységnapló-riasztásokat hozhat létre egy adott erőforráson, vagy előtagként használhatja az erőforrásazonosítókat használó erőforrások listáját.

Megadhatja a riasztási szabály feltételeit a condition tulajdonságon belül, majd konfigurálja a riasztási csoportot úgy, hogy a tömb használatával aktiválja ezeket a actionGroup riasztásokat. Itt átadhat egy vagy több műveletcsoportot a tevékenységnapló-riasztások elküldéséhez a követelményektől függően.

param activityLogAlertName string = '${uniqueString(resourceGroup().id)}-alert'
param actionGroupName string = 'adminactiongroup'

resource actionGroup 'Microsoft.Insights/actionGroups@2021-09-01' existing = {
  name: actionGroupName
}

resource activityLogAlert 'Microsoft.Insights/activityLogAlerts@2020-10-01' = {
  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
    ]
  }
}

Erőforrásállapot-riasztások

Az Azure Resource Health folyamatosan tájékoztatja az Azure-erőforrások aktuális és korábbi állapotáról. Az erőforrás-állapotriasztások a Bicep használatával történő létrehozásával tömegesen hozhatja létre és szabhatja testre ezeket a riasztásokat.

A Bicepben microsoft.insights/activityLogAlerts típusú erőforrás-állapotriasztásokat hozhat létre.

Az erőforrás-állapotriasztások konfigurálhatók úgy, hogy egy előfizetés, erőforráscsoport vagy egyéni erőforrás szintjén monitorozzák az eseményeket.

Vegye figyelembe az alábbi példát, amelyben létrehoz egy erőforrás-állapotriasztást, amely a szolgáltatásállapot-riasztásokról számol be. A riasztás az előfizetés szintjén (a scope tulajdonság használatával) lesz alkalmazva, és riasztásokat küld egy meglévő műveletcsoportnak:

param activityLogAlertName string = uniqueString(resourceGroup().id)
param actionGroupName string = 'oncallactiongroup'

resource actionGroup 'Microsoft.Insights/actionGroups@2021-09-01' existing = {
  name: actionGroupName
}

resource resourceHealthAlert 'Microsoft.Insights/activityLogAlerts@2020-10-01' = {
  name: activityLogAlertName
  location: 'global'
  properties: {
    condition: {
      allOf: [
        {
          field: 'category'
          equals: 'ServiceHealth'
        }
      ]
    }
    scopes: [
      subscription().id
    ]
    actions: {
      actionGroups: [
        {
          actionGroupId: actionGroup.id
        }
      ]
    }
  }
}

Intelligens észlelési riasztások

Az intelligens észlelési riasztások figyelmeztetnek a webalkalmazás lehetséges teljesítményproblémáira és hibaanomáliáira. A Bicepben a Microsoft.AlertsManagement/smartDetectorAlertRules típussal hozhat létre intelligens észlelési riasztásokat.

Irányítópultok

A Bicepben a Microsoft.Portal/irányítópultok erőforrástípussal hozhat létre portál-irányítópultokat.

Az irányítópultok kóddal történő létrehozásával kapcsolatos további információkért lásd: Azure-irányítópult programozott létrehozása.

Automatikus skálázási szabályok

Automatikus skálázási beállítás létrehozásához ezeket a Microsoft.Insights/autoscaleSettings erőforrástípussal határozhatja meg.

Annak az erőforrásnak a megcélzásához, amelyre az automatikus skálázási beállítást alkalmazni szeretné, meg kell adnia annak az erőforrásnak a célerőforrás-azonosítóját, amelyhez a beállítást hozzá kell adni.

Ebben a példában egy vertikális felskálázási feltételt a App Service tervhez, amely a 10 perces időszak átlagos processzorhasználati arányán alapul. Ha a App Service csomag 10 perc alatt meghaladja az átlagos processzorhasználat 70%-át, az automatikus skálázási motor egy példány hozzáadásával skálázza fel a tervet.

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

var appPlanSkuName = 'S1'

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

Megjegyzés

Az automatikus skálázási szabályok meghatározásakor tartsa szem előtt az ajánlott eljárásokat, hogy elkerülje az automatikus skálázási kísérletek során felmerülő problémákat, például a jelölést. További információkért tekintse meg az automatikus skálázás ajánlott eljárásait ismertető alábbi dokumentációt.