Aracılığıyla paylaş


Bicep kullanarak izleme kaynakları oluşturma

Azure,uygulama ve hizmetlerinizi izleyebilen kapsamlı bir araç paketine sahiptir. Azure altyapınızı sağlarken kuralların, tanılama ayarlarının ve uyarıların oluşturulmasını otomatikleştirmek için Bicep'i kullanarak izleme kaynaklarınızı program aracılığıyla oluşturabilirsiniz.

Azure portalında uyarı kurallarını, tanılama ayarlarını ve panoları ayarlamak için kullanabileceğiniz araçlar olduğu göz önünde bulundurularak izleme yapılandırmanızı Bicep kodunuz içine getirmek olağan dışı görünebilir.

Ancak, uyarılar ve tanılama ayarları temelde diğer altyapı kaynaklarınız ile aynıdır. Bunları Bicep koduna ekleyerek, uyarı kaynaklarınızı diğer Azure kaynakları için olduğu gibi dağıtabilir ve test edebilirsiniz.

Bicep dosyalarınızı yönetmek için Git veya başka bir sürüm denetim aracı kullanıyorsanız, uyarıların nasıl ayarlandığını ve yapılandırıldığını görebilmek için izleme yapılandırmanızın geçmişini elde etme avantajından da yararlanabilirsiniz.

Log Analytics ve Uygulama Analizler çalışma alanları

Microsoft.Operational Analizler/workspaces kaynak türüyle Log Analytics çalışma alanları ve Microsoft.Analizler türündeki Application Analizler çalışma alanları oluşturabilirsiniz/components. Bu bileşenlerin her ikisi de kaynak gruplarına dağıtılır.

Tanılama ayarları

Tanılama ayarları, Günlüklerinizi ve ölçümlerinizi Log Analytics ve Azure Depolama gibi çeşitli hedeflere aktarmak için Azure İzleyici'yi yapılandırmanıza olanak tanır.

Bicep'te tanılama ayarları oluştururken, bu kaynağın bir uzantı kaynağı olduğunu ve başka bir kaynağa uygulandığını unutmayın. Microsoft.Analizler kaynak türünü kullanarak Bicep'te tanılama ayarları oluşturabilirsiniz/diagnostic Ayarlar.

Bicep'te tanılama ayarları oluştururken, tanılama ayarının kapsamını uygulamanız gerekir. Tanılama ayarı yönetim, abonelik veya kaynak grubu düzeyinde uygulanabilir. Bu kaynağın kapsamını ayarlamak için bu kaynak üzerindeki kapsam özelliğini kullanın.

Aşağıdaki örneği inceleyin:

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

Yukarıdaki örnekte App Service planı için bir tanılama ayarı oluşturacak ve bu tanılamaları Log Analytics'e göndereceksiniz. scope App Service planınızı tanılama ayarınızın kapsamı olarak tanımlamak için özelliğini, tanılama günlüklerini göndermek üzere Log Analytics çalışma alanını tanımlamak için özelliğini kullanabilirsinizworkspaceId. Tanılama ayarlarını Event Hubs ve Azure Depolama Hesaplarına da aktarabilirsiniz.

Günlük türleri kaynaklar arasında farklılık gösterir, bu nedenle dışarı aktarmak istediğiniz günlüklerin kullandığınız kaynak için geçerli olduğundan emin olun.

Etkinlik günlüğü tanılama ayarları

Azure etkinlik günlüğünü dışarı aktarmak üzere tanılama ayarlarını yapılandırmak üzere Bicep'i kullanmak için abonelik kapsamında bir tanılama ayarı kaynağı dağıtın.

Aşağıdaki örnekte birkaç etkinlik günlüğü türünün Log Analytics çalışma alanına nasıl dışarı aktarılası gösterilmektedir:

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

Uyarılar

Uyarılar, Azure İzleyici'de verileri izleyerek Azure altyapınızda ve uygulamalarınızda sorunlar bulunduğunda sizi proaktif olarak bilgilendirir. Bicep kodunuz içinde izleme ve uyarı yapılandırmanızı yapılandırarak, Azure'da sağladığınız altyapıyla birlikte bu uyarıların oluşturulmasını otomatikleştirebilirsiniz.

Azure'da uyarıların nasıl çalıştığı hakkında daha fazla bilgi için bkz . Microsoft Azure'da uyarılara genel bakış.

Aşağıdaki bölümlerde, Bicep kodunu kullanarak farklı uyarı türlerini nasıl yapılandırabileceğiniz gösterilmektedir.

Eylem grupları

Uyarılar tetiklendiğinde bildirim almak için bir eylem grubu oluşturmanız gerekir. Eylem grubu, Azure aboneliğinin sahibi tarafından tanımlanan bildirim tercihleri koleksiyonudur. Eylem grupları, kullanıcılara bir uyarının tetiklendiğini bildirmek veya uyarılara otomatik yanıtlar tetiklemek için kullanılır.

Bicep'te eylem grupları oluşturmak için Microsoft.Analizler türünü kullanabilirsiniz/actionGroups. Örnek aşağıda verilmiştir:

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

Yukarıdaki örnek, bir e-posta adresine uyarı gönderen bir eylem grubu oluşturur, ancak Event Hubs, Azure İşlevleri, Logic Apps ve daha fazlasına uyarı gönderen eylem grupları da tanımlayabilirsiniz.

Uyarı işleme kuralları

Uyarı işleme kuralları (daha önce eylem kuralları olarak adlandırılır), tetiklenen uyarılarda işleme uygulamanıza olanak sağlar. Microsoft.AlertsManagement/actionRules türünü kullanarak Bicep'te uyarı işleme kuralları oluşturabilirsiniz.

Her uyarı işleme kuralının kapsamı vardır. Bu kapsam bir veya daha fazla belirli kaynağın, belirli bir kaynak grubunun veya Azure aboneliğinizin tamamının listesi olabilir. Bicep'te uyarı işleme kuralları tanımladığınızda, kapsam özelliğinde bu kaynakları uyarı işleme kuralı için hedefleyen kaynak kimliklerinin listesini tanımlarsınız.

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

Yukarıdaki örnekte Azure MonitorService Backup Vault'taki uyarı işleme kuralı tanımlanmıştır ve bu kural mevcut eylem grubuna uygulanır. Bu kural, eylem grubuna yönelik uyarıları tetikler.

Günlük uyarı kuralları

Günlük uyarıları otomatik olarak bir Log Analytics sorgusu çalıştırır. Kaynak günlüklerini tanımladığınız bir aralıkta değerlendirmek için kullanılan sorgu, sonuçların belirttiğiniz bazı ölçütleri karşılayıp karşılamadığını belirler ve ardından bir uyarı tetikler.

Microsoft.Analizler türünü kullanarak Bicep'te günlük uyarısı kuralları oluşturabilirsiniz/scheduledQueryRules.

Ölçüm uyarı kuralları

Ölçüm uyarıları, ölçümlerinizden biri tanımlı bir eşiği aştığında sizi bilgilendirir. Microsoft.Analizler türünü kullanarak Bicep kodunuzda bir ölçüm uyarısı kuralı tanımlayabilirsiniz/metricAlerts.

Etkinlik günlüğü uyarıları

Azure etkinlik günlüğü, Azure'da abonelik düzeyindeki olaylarla ilgili içgörüler sağlayan bir platform günlüğüdür. Bu, Azure'daki bir kaynağın ne zaman değiştirildiği gibi bilgileri içerir.

Etkinlik günlüğü uyarıları, uyarıda belirtilen koşullarla eşleşen yeni bir etkinlik günlüğü olayı oluştuğunda etkinleştirilen uyarılardır.

Özelliğini Microsoft.Analizler türünde kullanabilirsiniz scope/activityLogAlerts, ön ek olarak kaynak kimliklerini kullanarak belirli bir kaynakta veya kaynak listesinde etkinlik günlüğü uyarıları oluşturmak için kullanılır.

Uyarı kuralı koşullarınızı özelliği içinde condition tanımlarsınız ve ardından uyarı grubunu dizisini kullanarak actionGroup bu uyarıları tetikleecek şekilde yapılandırabilirsiniz. Burada, gereksinimlerinize bağlı olarak etkinlik günlüğü uyarıları göndermek için tek veya birden çok eylem grubu geçirebilirsiniz.

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

Kaynak durumu uyarıları

Azure Kaynak Durumu, Azure kaynaklarınızın geçerli ve geçmiş sistem durumu hakkında sizi bilgilendirmeye devam eder. Bicep kullanarak kaynak durumu uyarılarınızı oluşturarak bu uyarıları toplu olarak oluşturabilir ve özelleştirebilirsiniz.

Bicep'te Microsoft.Analizler türüyle kaynak durumu uyarıları oluşturabilirsiniz/activityLogAlerts.

Kaynak durumu uyarıları abonelik, kaynak grubu veya tek bir kaynak düzeyindeki olayları izlemek için yapılandırılabilir.

Hizmet durumu uyarılarını bildiren bir kaynak durumu uyarısı oluşturduğunuz aşağıdaki örneği göz önünde bulundurun. Uyarı abonelik düzeyinde (özelliği kullanılarak scope ) uygulanır ve mevcut bir eylem grubuna uyarılar gönderir:

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

Akıllı algılama uyarıları

Akıllı algılama uyarıları, web uygulamanızdaki olası performans sorunları ve hata anomalileri konusunda sizi uyarır. Microsoft.AlertsManagement/smartDetectorAlertRules türünü kullanarak Bicep'te akıllı algılama uyarıları oluşturabilirsiniz.

Panolar

Bicep'te Microsoft.Portal/panolar kaynak türünü kullanarak portal panoları oluşturabilirsiniz.

Kodla pano oluşturma hakkında daha fazla bilgi için bkz . Program aracılığıyla Azure Panosu oluşturma.

Otomatik ölçeklendirme kuralları

Otomatik ölçeklendirme ayarı oluşturmak için bunları Microsoft.Analizler kaynak türünü kullanarak tanımlarsınız/autoscale Ayarlar.

Otomatik ölçeklendirme ayarını uygulamak istediğiniz kaynağı hedeflemek için, ayarın eklenmesi gereken kaynağın hedef kaynak tanımlayıcısını sağlamanız gerekir.

Bu örnekte App Service planı için 10 dakikalık bir zaman aralığındaki ortalama CPU yüzdesine göre ölçek genişletme koşulu. App Service planı 10 dakika boyunca ortalama CPU tüketiminin %70'ini aşarsa, otomatik ölçeklendirme altyapısı bir örnek ekleyerek planın ölçeğini genişletebilir.

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

Not

Otomatik ölçeklendirme kurallarını tanımlarken, otomatik ölçeklendirmeye çalışırken karşılaşılan sorunlardan kaçınmak için en iyi yöntemleri göz önünde bulundurun( örneğin, dokunma). Daha fazla bilgi için, Otomatik Ölçeklendirme için en iyi yöntemlerle ilgili aşağıdaki belgelere bakın.