Kaynak Yöneticisi şablonları kullanarak kaynak sistem durumu uyarılarını yapılandırmaConfigure resource health alerts using Resource Manager templates

Bu makalede, Azure Resource Manager şablonlarını ve Azure PowerShell kullanarak programlı olarak Kaynak Durumu etkinlik günlüğü uyarılarını nasıl oluşturacağınız gösterilmektedir.This article will show you how to create Resource Health Activity Log Alerts programmatically using Azure Resource Manager templates and Azure PowerShell.

Azure Kaynak Durumu, Azure kaynaklarınızın geçerli ve geçmiş sistem durumu hakkında bilgi sahibi olmanızı önler.Azure Resource Health keeps you informed about the current and historical health status of your Azure resources. Azure Kaynak Durumu uyarılar, bu kaynakların sistem durumunda bir değişiklik olduğunda sizi neredeyse gerçek zamanlı olarak uyarabilirler.Azure Resource Health alerts can notify you in near real-time when these resources have a change in their health status. Kaynak Durumu uyarılar oluşturma, kullanıcıların uyarıları toplu olarak oluşturmalarına ve özelleştirmesine izin verir.Creating Resource Health alerts programmatically allow for users to create and customize alerts in bulk.

Not

Kaynak Durumu uyarılar Şu anda önizleme aşamasındadır.Resource Health alerts are currently in preview.

Not

Bu makale yeni Azure PowerShell Az modülünü kullanacak şekilde güncelleştirilmiştir.This article has been updated to use the new Azure PowerShell Az module. En azından Aralık 2020'ye kadar hata düzeltmeleri almaya devam edecek olan AzureRM modülünü de kullanmaya devam edebilirsiniz.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Yeni Az modülüyle AzureRM'nin uyumluluğu hakkında daha fazla bilgi edinmek için bkz. Yeni Azure PowerShell Az modülüne giriş.To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az modülü yükleme yönergeleri için bkz. Azure PowerShell'i yükleme.For Az module installation instructions, see Install Azure PowerShell.

ÖnkoşullarPrerequisites

Bu sayfadaki yönergeleri izlemek için, önceden birkaç şey ayarlamanız gerekir:To follow the instructions on this page, you'll need to set up a few things in advance:

  1. Azure PowerShell modülünü yüklemeniz gerekiyorYou need to install the Azure PowerShell module
  2. Sizi bilgilendirmek için yapılandırılmış bir eylem grubu oluşturmanız veya yeniden kullanmanız gerekirYou need to create or reuse an Action Group configured to notify you

YönergelerInstructions

  1. PowerShell 'i kullanarak hesabınızı kullanarak Azure 'da oturum açın ve etkileşimde bulunmak istediğiniz aboneliği seçinUsing PowerShell, log in to Azure using your account, and select the subscription you want to interact with

     Login-AzAccount
     Select-AzSubscription -Subscription <subscriptionId>
    

    Erişiminiz olan abonelikleri listelemek için Get-AzSubscription kullanabilirsiniz.You can use Get-AzSubscription to list the subscriptions you have access to.

  2. Eylem grubunuz için tam Azure Resource Manager KIMLIĞINI bulun ve kaydedinFind and save the full Azure Resource Manager ID for your Action Group

     (Get-AzActionGroup -ResourceGroupName <resourceGroup> -Name <actionGroup>).Id
    
  3. Kaynak Durumu Uyarıları için resourcehealthalert.json olarak Kaynak Yöneticisi şablonu oluşturun ve kaydedin (aşağıdaki ayrıntılara bakın)Create and save a Resource Manager template for Resource Health alerts as resourcehealthalert.json (see details below)

  4. Bu şablonu kullanarak yeni bir Azure Resource Manager dağıtımı oluşturunCreate a new Azure Resource Manager deployment using this template

     New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName <resourceGroup> -TemplateFile <path\to\resourcehealthalert.json>
    
  5. Daha önce kopyaladığınız uyarı adını ve eylem grubu kaynak KIMLIĞINI yazmanız istenir:You'll be prompted to type in the Alert Name and Action Group Resource ID you copied earlier:

     Supply values for the following parameters:
     (Type !? for Help.)
     activityLogAlertName: <Alert Name>
     actionGroupResourceId: /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/microsoft.insights/actionGroups/<actionGroup>
    
  6. Her şey başarıyla çalıştıysa, PowerShell 'de bir onay alacaksınızIf everything worked successfully, you'll get a confirmation in PowerShell

     DeploymentName          : ExampleDeployment
     ResourceGroupName       : <resourceGroup>
     ProvisioningState       : Succeeded
     Timestamp               : 11/8/2017 2:32:00 AM
     Mode                    : Incremental
     TemplateLink            :
     Parameters              :
                             Name                     Type       Value
                             ===============          =========  ==========
                             activityLogAlertName     String     <Alert Name>
                             activityLogAlertEnabled  Bool       True
                             actionGroupResourceId    String     /...
    
     Outputs                 :
     DeploymentDebugLogLevel :
    

Bu işlemi tamamen otomatikleştirmeye planlarken, 5. adımdaki değerleri sorması için yalnızca Kaynak Yöneticisi şablonunu düzenlemeniz gerektiğini unutmayın.Note that if you are planning on fully automating this process, you simply need to edit the Resource Manager template to not prompt for the values in Step 5.

Kaynak Durumu Uyarıları için Kaynak Yöneticisi şablonu seçenekleriResource Manager template options for Resource Health alerts

Bu temel şablonu, Kaynak Durumu uyarı oluşturmak için başlangıç noktası olarak kullanabilirsiniz.You can use this base template as a starting point for creating Resource Health alerts. Bu şablon yazıldığı gibi çalışacaktır ve bir abonelikteki tüm kaynaklar genelinde yeni etkinleştirilen tüm kaynak sistem durumu olayları için uyarı almak üzere oturumunuzu açacaktır.This template will work as written, and will sign you up to receive alerts for all newly activated resource health events across all resources in a subscription.

Bu makalenin en altında, bu şablonla karşılaştırıldığında Kaynak Durumu Uyarıları için gürültü oranına yönelik sinyali artırması gereken daha karmaşık bir uyarı şablonu da sunuyoruz.At the bottom of this article we have also included a more complex alert template which should increase the signal to noise ratio for Resource Health alerts as compared to this template.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "activityLogAlertName": {
      "type": "string",
      "metadata": {
        "description": "Unique name (within the Resource Group) for the Activity log alert."
      }
    },
    "actionGroupResourceId": {
      "type": "string",
      "metadata": {
        "description": "Resource Id for the Action group."
      }
    }
  },
  "resources": [   
    {
      "type": "Microsoft.Insights/activityLogAlerts",
      "apiVersion": "2017-04-01",
      "name": "[parameters('activityLogAlertName')]",      
      "location": "Global",
      "properties": {
        "enabled": true,
        "scopes": [
            "[subscription().id]"
        ],        
        "condition": {
          "allOf": [
            {
              "field": "category",
              "equals": "ResourceHealth"
            },
            {
              "field": "status",
              "equals": "Active"
            }
          ]
        },
        "actions": {
          "actionGroups":
          [
            {
              "actionGroupId": "[parameters('actionGroupResourceId')]"
            }
          ]
        }
      }
    }
  ]
}

Ancak, bunun gibi geniş bir uyarı genellikle önerilmez.However, a broad alert like this one is generally not recommended. Bu uyarıyı aşağıda ele aldığımız olaylara odaklanmak için nasıl kapsam yapabileceğinizi öğrenin.Learn how we can scope down this alert to focus on the events we care about below.

Uyarı kapsamını ayarlamaAdjusting the alert scope

Kaynak Durumu uyarılar, olayları üç farklı kapsam üzerinde izlemek için yapılandırılabilir:Resource Health alerts can be configured to monitor events at three different scopes:

  • Abonelik DüzeyiSubscription Level
  • Kaynak grubu düzeyiResource Group Level
  • Kaynak düzeyiResource Level

Uyarı şablonu abonelik düzeyinde yapılandırılır, ancak uyarınızı yalnızca belirli kaynaklar veya belirli bir kaynak grubundaki kaynaklar hakkında bilgilendirecek şekilde yapılandırmak istiyorsanız Yukarıdaki şablonda scopes bölümünü değiştirmeniz yeterlidir.The alert template is configured at the subscription level, but if you would like to configure your alert to only notify you about certain resources, or resources within a certain resource group, you simply need to modify the scopes section in the above template.

Kaynak grubu düzeyi kapsamı için kapsamlar bölümü şöyle görünmelidir:For a resource group level scope, the scopes section should look like:

"scopes": [
    "/subscriptions/<subscription id>/resourcegroups/<resource group>"
],

Kaynak düzeyi kapsamı için kapsam bölümü şöyle görünmelidir:And for a resource level scope, the scope section should look like:

"scopes": [
    "/subscriptions/<subscription id>/resourcegroups/<resource group>/providers/<resource>"
],

Örneğin, "/subscriptions/d37urb3e-ed41-4670-9c19-02a1d2808ff9/resourcegroups/myRG/providers/microsoft.compute/virtualmachines/myVm"For example: "/subscriptions/d37urb3e-ed41-4670-9c19-02a1d2808ff9/resourcegroups/myRG/providers/microsoft.compute/virtualmachines/myVm"

Azure portalına giderek bu dizeyi almak için Azure kaynağınız görüntülenirken URL 'ye bakabilirsiniz.You can go to the Azure Portal and look at the URL when viewing your Azure resource to get this string.

Sizi uyaran kaynak türlerini ayarlamaAdjusting the resource types which alert you

Abonelik veya kaynak grubu düzeyindeki uyarıların farklı türlerde kaynakları olabilir.Alerts at the subscription or resource group level may have different kinds of resources. Yalnızca belirli bir kaynak türü alt kümesinden gelen uyarıları sınırlamak istiyorsanız, bunu şöyle olacak şekilde şablonun condition bölümünde tanımlayabilirsiniz:If you want to limit alerts to only come from a certain subset of resource types, you can define that in the condition section of the template like so:

"condition": {
    "allOf": [
        ...,
        {
            "anyOf": [
                {
                    "field": "resourceType",
                    "equals": "MICROSOFT.COMPUTE/VIRTUALMACHINES",
                    "containsAny": null
                },
                {
                    "field": "resourceType",
                    "equals": "MICROSOFT.STORAGE/STORAGEACCOUNTS",
                    "containsAny": null
                },
                ...
            ]
        }
    ]
},

Burada, kaynak sistem durumu uyarısının belirlediğimiz koşullardan herhangi biriyle eşleşmesini sağlamak için anyOf sarmalayıcı kullanılır ve belirli kaynak türlerini hedefleyen uyarılara izin verilir.Here we use the anyOf wrapper to allow the resource health alert to match any of the conditions we specify, allowing for alerts that target specific resource types.

Sizi uyaran Kaynak Durumu olaylarını ayarlamaAdjusting the Resource Health events that alert you

Kaynaklar bir sistem durumu olayına sahip olduğunda, sistem durumu olayının durumunu temsil eden bir dizi aşamadan geçebilir: Active, In Progress, Updatedve Resolved.When resources undergo a health event, they can go through a series of stages that represents the state of the health event: Active, In Progress, Updated, and Resolved.

Yalnızca bir kaynak sağlıksız hale geldiğinde bildirim almak isteyebilirsiniz, bu durumda uyarınızı yalnızca status Activeolduğunda bilgilendirecek şekilde yapılandırmak isteyebilirsiniz.You may only want to be notified when a resource becomes unhealthy, in which case you want to configure your alert to only notify when the status is Active. Bununla birlikte, diğer aşamalar üzerinde de bildirim almak istiyorsanız bu ayrıntıları şöyle ekleyebilirsiniz:However if you want to also be notified on the other stages, you can add those details like so:

"condition": {
    "allOf": [
        ...,
        {
            "anyOf": [
                {
                    "field": "status",
                    "equals": "Active"
                },
                {
                    "field": "status",
                    "equals": "In Progress"
                },
                {
                    "field": "status",
                    "equals": "Resolved"
                },
                {
                    "field": "status",
                    "equals": "Updated"
                }
            ]
        }
    ]
}

Tüm dört sistem durumu olayı aşaması için bildirim almak istiyorsanız, bu koşulu tümü birlikte kaldırabilirsiniz ve uyarı status özelliğinden bağımsız olarak sizi uyarır.If you want to be notified for all four stages of health events, you can remove this condition all together, and the alert will notify you irrespective of the status property.

"Bilinmeyen" olayları önlemek için Kaynak Durumu uyarılarını ayarlamaAdjusting the Resource Health alerts to avoid "Unknown" events

Azure Kaynak Durumu, test çalıştıranlar kullanarak onları sürekli izleyerek kaynaklarınızın en son durumunu rapor edebilir.Azure Resource Health can report to you the latest health of your resources by constantly monitoring them using test runners. Bildirilen ilgili sistem durumu durumları şunlardır: "kullanılabilir", "kullanılamıyor" ve "düşürülmüş".The relevant reported health statuses are: "Available", "Unavailable", and "Degraded". Ancak, Çalıştırıcısı ve Azure kaynağının iletişim kurmadığı durumlarda, kaynak için "Bilinmeyen" bir sistem durumu bildirilir ve bu durum "etkin" bir sistem durumu olayı olarak kabul edilir.However, in situations where the runner and the Azure resource are unable to communicate, an "Unknown" health status is reported for the resource, and that is considered an "Active" health event.

Ancak, bir kaynak "bilinmiyor" olarak raporladığında, büyük olasılıkla sistem durumu en son doğru rapordan bu yana değişmemiştir.However, when a resource reports "Unknown", it's likely that its health status has not changed since the last accurate report. "Bilinmeyen" olaylarda uyarıları kaldırmak istiyorsanız, bu mantığı şablonda belirtebilirsiniz:If you would like to eliminate alerts on "Unknown" events, you can specify that logic in the template:

"condition": {
    "allOf": [
        ...,
        {
            "anyOf": [
                {
                    "field": "properties.currentHealthStatus",
                    "equals": "Available",
                    "containsAny": null
                },
                {
                    "field": "properties.currentHealthStatus",
                    "equals": "Unavailable",
                    "containsAny": null
                },
                {
                    "field": "properties.currentHealthStatus",
                    "equals": "Degraded",
                    "containsAny": null
                }
            ]
        },
        {
            "anyOf": [
                {
                    "field": "properties.previousHealthStatus",
                    "equals": "Available",
                    "containsAny": null
                },
                {
                    "field": "properties.previousHealthStatus",
                    "equals": "Unavailable",
                    "containsAny": null
                },
                {
                    "field": "properties.previousHealthStatus",
                    "equals": "Degraded",
                    "containsAny": null
                }
            ]
        },
    ]
},

Bu örnekte, yalnızca geçerli ve önceki sistem durumunun "Unknown" olmadığı olaylara bildirimde bulunur.In this example, we are only notifying on events where the current and previous health status does not have "Unknown". Bu değişiklik, uyarılarınız doğrudan cep telefonunuza veya e-postaya gönderiliyorsa yararlı bir ek olabilir.This change may be a useful addition if your alerts are sent directly to your mobile phone or email.

CurrentHealthStatus ve previousHealthStatus özelliklerinin bazı olaylarda null olması mümkün olduğunu unutmayın.Note that it is possible for the currentHealthStatus and previousHealthStatus properties to be null in some events. Örneğin, güncelleştirilmiş bir olay gerçekleştiğinde kaynağın sistem durumunun son rapordan bu yana değişmediğinden, yalnızca ilgili ek olay bilgileri kullanılabilir (ör. nedeni).For example, when an Updated event occurs it's likely that the health status of the resource has not changed since the last report, only that additional event information is available (e.g. cause). Bu nedenle, yukarıdaki yan tümcesinin kullanılması bazı uyarıların tetiklenmesi nedeniyle, Properties. currentHealthStatus ve Properties. previousHealthStatus değerleri null olarak ayarlanacak.Therefore, using the clause above may result in some alerts not being triggered, because the properties.currentHealthStatus and properties.previousHealthStatus values will be set to null.

Kullanıcı tarafından başlatılan olayların oluşmasını önlemek için uyarıyı ayarlamaAdjusting the alert to avoid User Initiated events

Kaynak Durumu olaylar, platform tarafından başlatılan ve Kullanıcı tarafından başlatılan olaylar tarafından tetiklenebilir.Resource Health events can be triggered by platform initiated and user initiated events. Yalnızca Azure platformunun sistem durumu olayına neden olduğunda bir bildirim gönderilmesi anlamlı olabilir.It may make sense to only send a notification when the health event is caused by the Azure platform.

Bu olay türlerini filtrelemek için uyarınızı kolayca yapılandırmak kolaydır:It's easy to configure your alert to filter for only these kinds of events:

"condition": {
    "allOf": [
        ...,
        {
            "field": "properties.cause",
            "equals": "PlatformInitiated",
            "containsAny": null
        }
    ]
}

Nedeni alanının bazı olaylarda null olması mümkün olduğunu unutmayın.Note that it is possible for the cause field to be null in some events. Diğer bir deyişle, bir sistem durumu geçişi gerçekleşir (örneğin, kullanılamaz olarak kullanılabilir) ve olay bildirim gecikmelerini engellemek için hemen günlüğe kaydedilir.That is, a health transition takes place (e.g. available to unavailable) and the event is logged immediately to prevent notification delays. Bu nedenle, yukarıdaki yan tümceyi kullanmak bir uyarının tetiklenmediği için, Properties. Clause özelliği değeri null olarak ayarlanacak.Therefore, using the clause above may result in an alert not being triggered, because the properties.clause property value will be set to null.

Kaynak Durumu uyarı şablonunu doldurunComplete Resource Health alert template

Önceki bölümde açıklanan farklı ayarlamaları kullanarak, gürültü oranına sinyali en üst düzeye çıkarmak için yapılandırılmış örnek bir şablon aşağıda verilmiştir.Using the different adjustments described in the previous section, here is a sample template that is configured to maximize the signal to noise ratio. Yukarıda belirtilen uyarıları, bazı olaylarda currentHealthStatus, previousHealthStatus ve neden özellik değerlerinin null olabileceğini göz önünde bulundurun.Bear in mind the caveats noted above where the currentHealthStatus, previousHealthStatus, and cause property values may be null in some events.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "activityLogAlertName": {
            "type": "string",
            "metadata": {
                "description": "Unique name (within the Resource Group) for the Activity log alert."
            }
        },
        "actionGroupResourceId": {
            "type": "string",
            "metadata": {
                "description": "Resource Id for the Action group."
            }
        }
    },
    "resources": [
        {
            "type": "Microsoft.Insights/activityLogAlerts",
            "apiVersion": "2017-04-01",
            "name": "[parameters('activityLogAlertName')]",
            "location": "Global",
            "properties": {
                "enabled": true,
                "scopes": [
                    "[subscription().id]"
                ],
                "condition": {
                    "allOf": [
                        {
                            "field": "category",
                            "equals": "ResourceHealth",
                            "containsAny": null
                        },
                        {
                            "anyOf": [
                                {
                                    "field": "properties.currentHealthStatus",
                                    "equals": "Available",
                                    "containsAny": null
                                },
                                {
                                    "field": "properties.currentHealthStatus",
                                    "equals": "Unavailable",
                                    "containsAny": null
                                },
                                {
                                    "field": "properties.currentHealthStatus",
                                    "equals": "Degraded",
                                    "containsAny": null
                                }
                            ]
                        },
                        {
                            "anyOf": [
                                {
                                    "field": "properties.previousHealthStatus",
                                    "equals": "Available",
                                    "containsAny": null
                                },
                                {
                                    "field": "properties.previousHealthStatus",
                                    "equals": "Unavailable",
                                    "containsAny": null
                                },
                                {
                                    "field": "properties.previousHealthStatus",
                                    "equals": "Degraded",
                                    "containsAny": null
                                }
                            ]
                        },
                        {
                            "anyOf": [
                                {
                                    "field": "properties.cause",
                                    "equals": "PlatformInitiated",
                                    "containsAny": null
                                }
                            ]
                        },
                        {
                            "anyOf": [
                                {
                                    "field": "status",
                                    "equals": "Active",
                                    "containsAny": null
                                },
                                {
                                    "field": "status",
                                    "equals": "Resolved",
                                    "containsAny": null
                                },
                                {
                                    "field": "status",
                                    "equals": "In Progress",
                                    "containsAny": null
                                },
                                {
                                    "field": "status",
                                    "equals": "Updated",
                                    "containsAny": null
                                }
                            ]
                        }
                    ]
                },
                "actions": {
                    "actionGroups": [
                        {
                            "actionGroupId": "[parameters('actionGroupResourceId')]"
                        }
                    ]
                }
            }
        }
    ]
}

Bununla birlikte, en iyi yapılandırmaların sizin için geçerli olduğunu bilirsiniz, bu nedenle kendi özelleştirmenizi yapmak için bu belgede size olan araçları kullanın.However, you'll know best what configurations are effective for you, so use the tools taught to you in this documentation to make your own customization.

Sonraki adımlarNext steps

Kaynak Durumu hakkında daha fazla bilgi edinin:Learn more about Resource Health:

Hizmet durumu uyarıları oluşturma:Create Service Health Alerts: