Resource Manager şablonlarını kullanarak kaynak sistem durumu uyarılarını yapılandırma

Bu makalede, Azure Resource Manager şablonlarını ve Azure PowerShell'i kullanarak program aracılığıyla Kaynak Durumu Etkinlik Günlüğü Uyarıları oluşturma adımları gösterilmektedir.

Azure Kaynak Durumu, Azure kaynaklarınızın geçerli ve geçmiş sistem durumu hakkında sizi bilgilendirmeye devam eder. Azure Kaynak Durumu uyarıları, bu kaynakların durumunda bir değişiklik olduğunda gerçek zamanlıya yakın bir sürede size bildirim gönderebilir. Kaynak Durumu uyarıları oluşturmak, kullanıcıların uyarıları toplu olarak oluşturmasına ve özelleştirmesine olanak sağlar.

Dekont

Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Ön koşullar

Bu sayfadaki yönergeleri izlemek için önceden birkaç şey ayarlamanız gerekir:

  1. Azure PowerShell modülünü yüklemeniz gerekir
  2. Sizi bilgilendirmek için yapılandırılmış bir Eylem Grubu oluşturmanız veya yeniden kullanmanız gerekir

Yönergeler

  1. PowerShell'i kullanarak hesabınızı kullanarak Azure'da oturum açın ve etkileşime geçmek istediğiniz aboneliği seçin

    Login-AzAccount
    Select-AzSubscription -Subscription <subscriptionId>
    

    Erişiminiz olan abonelikleri listelemek için kullanabilirsiniz Get-AzSubscription .

  2. Eylem Grubunuz için tam Azure Resource Manager kimliğini bulma ve kaydetme

    (Get-AzActionGroup -ResourceGroupName <resourceGroup> -Name <actionGroup>).Id
    
  3. Uyarı Kaynak Durumu resourcehealthalert.json için Resource Manager şablonu oluşturma ve kaydetme (aşağıdaki ayrıntılara bakın)

  4. Bu şablonu kullanarak yeni bir Azure Resource Manager dağıtımı oluşturun

    New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName <resourceGroup> -TemplateFile <path\to\resourcehealthalert.json>
    
  5. Daha önce kopyaladığınız Uyarı Adı ve Eylem Grubu Kaynak Kimliğini girmeniz istenir:

    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 alırsınız

    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 tam olarak otomatikleştirmeyi planlıyorsanız, 5. Adımdaki değerleri istememek için Resource Manager şablonunu düzenlemeniz gerektiğini unutmayın.

Kaynak Durumu uyarıları için Resource Manager şablon seçenekleri

Bu temel şablonu, Kaynak Durumu uyarıları oluşturmak için başlangıç noktası olarak kullanabilirsiniz. Bu şablon yazıldıkları gibi çalışır ve abonelikteki tüm kaynaklar genelinde yeni etkinleştirilen tüm kaynak durumu olayları için uyarı almak üzere kaydolacaksınız.

Bu makalenin en altında, bu şablonla karşılaştırıldığında Kaynak Durumu uyarıların sinyalden gürültüye oranını artırması gereken daha karmaşık bir uyarı şablonu da ekledik.

{
  "$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. Aşağıda önemsediğimiz olaylara odaklanmak için bu uyarının kapsamını nasıl azaltabileceğinizi öğrenin.

Uyarı kapsamını ayarlama

Kaynak Durumu uyarıları, üç farklı kapsamdaki olayları izlemek üzere yapılandırılabilir:

  • Abonelik Düzeyi
  • Kaynak Grubu Düzeyi
  • Kaynak Düzeyi

Uyarı şablonu abonelik düzeyinde yapılandırılır, ancak uyarınızı yalnızca belirli kaynaklar veya belirli bir kaynak grubu içindeki kaynaklar hakkında sizi bilgilendirecek şekilde yapılandırmak istiyorsanız, yukarıdaki şablondaki bölümü değiştirmeniz scopes yeterlidir.

Kaynak grubu düzeyi kapsamı için kapsamlar bölümü şöyle görünmelidir:

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

Kaynak düzeyi kapsamı için kapsam bölümü şöyle görünmelidir:

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

Örnek: "/subscriptions/d37urb3e-ed41-4670-9c19-02a1d2808ff9/resourcegroups/myRG/providers/microsoft.compute/virtualmachines/myVm"

Bu dizeyi almak için Azure portala gidebilir ve Azure kaynağınızı görüntülerken URL'ye bakabilirsiniz.

Sizi uyaran kaynak türlerini ayarlama

Abonelik veya kaynak grubu düzeyindeki uyarıların farklı kaynak türleri olabilir. Uyarıları yalnızca kaynak türlerinin belirli bir alt kümesinden gelecek şekilde sınırlamak istiyorsanız, bunu şablonun condition bölümünde şu şekilde tanımlayabilirsiniz:

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

Burada, kaynak durumu uyarısının anyOf belirttiğimiz koşullardan herhangi biriyle eşleşmesine izin vermek ve belirli kaynak türlerini hedefleyen uyarılar için izin vermek için sarmalayıcıyı kullanırız.

Sizi uyaran Kaynak Durumu olaylarını ayarlama

Kaynaklar bir sistem durumu olayından geçtiğinde, sistem durumu olayının durumunu temsil eden bir dizi aşamadan geçebilir: Active, In Progress, Updatedve Resolved.

Yalnızca bir kaynak iyi durumda olmadığında bildirim almak isteyebilirsiniz. Bu durumda uyarınızı yalnızca olduğunda statusActivebildirim gönderecek şekilde yapılandırmak isteyebilirsiniz. Bununla birlikte, diğer aşamalarda da bildirim almak istiyorsanız, aşağıdaki gibi ayrıntıları ekleyebilirsiniz:

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

Sistem durumu olaylarının dört aşaması için de bildirim almak istiyorsanız, bu koşulu tamamen kaldırabilirsiniz ve uyarı özelliğinden bağımsız status olarak sizi bilgilendirir.

Dekont

Her "anyOf" bölümü yalnızca bir alan türü değeri içermelidir.

"Bilinmeyen" olaylardan kaçınmak için Kaynak Durumu uyarılarını ayarlama

Azure Kaynak Durumu, test çalıştırıcılarını kullanarak kaynaklarınızı sürekli izleyerek kaynaklarınızın en son durumunu size bildirebilir. İlgili bildirilen sistem durumu şunlardır: "Kullanılabilir", "Kullanılamıyor" ve "Düzeyi Düşürüldü". Ancak, çalıştırıcının ve Azure kaynağının iletişim kuramadığı durumlarda, kaynak için "Bilinmeyen" sistem durumu bildirilir ve bu bir "Etkin" sistem durumu olayı olarak kabul edilir.

Ancak, bir kaynak "Bilinmiyor" bildiriminde bulunduğunda, son doğru rapordan bu yana sistem durumunun değişmemiş olması olasıdır. "Bilinmeyen" olaylarla ilgili uyarıları ortadan kaldırmak isterseniz, şablonda bu mantığı belirtebilirsiniz:

"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 "Bilinmiyor" olmadığı olayları bildiriyoruz. Uyarılarınız doğrudan cep telefonunuza veya e-postanıza gönderiliyorsa bu değişiklik yararlı bir ek olabilir.

bazı olaylarda currentHealthStatus ve previousHealthStatus özelliklerinin null olabileceğini unutmayın. Örneğin, Güncelleştirilmiş bir olay gerçekleştiğinde, son rapordan bu yana kaynağın sistem durumu değişmemiş olabilir, yalnızca bu ek olay bilgileri kullanılabilir (örneğin, neden). Bu nedenle, yukarıdaki yan tümcenin kullanılması bazı uyarıların tetiklenmemesiyle sonuçlanabilir çünkü properties.currentHealthStatus ve properties.previousHealthStatus değerleri null olarak ayarlanır.

Kullanıcı Tarafından Başlatılan olaylardan kaçınmak için uyarıyı ayarlama

Kaynak Durumu olaylar platform tarafından başlatılan ve kullanıcı tarafından başlatılan olaylar tarafından tetiklenebilir. Yalnızca sistem durumu olayı Azure platformundan kaynaklandığında bildirim göndermek mantıklı olabilir.

Uyarınızı yalnızca bu tür olaylar için filtrelemek üzere yapılandırmak kolaydır:

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

Bazı olaylarda neden alanının null olabileceğini unutmayın. Başka bir deyişle, bir sistem durumu geçişi gerçekleşir (örneğin kullanılamaz) ve bildirim gecikmelerini önlemek için olay hemen günlüğe kaydedilir. Bu nedenle, yukarıdaki yan tümcesini kullanmak bir uyarının tetiklenmemesiyle sonuçlanabilir çünkü properties.cause özellik değeri null olarak ayarlanır.

Tam Kaynak Durumu uyarı şablonu

Önceki bölümde açıklanan farklı ayarlamaları kullanarak sinyal-gürültü oranını en üst düzeye çıkarmak için yapılandırılmış bir örnek şablon aşağıda verilmiştir. CurrentHealthStatus, previousHealthStatus ve neden özellik değerlerinin bazı olaylarda null olabileceği yukarıda belirtilen uyarıları aklınızda bulundurun.

{
    "$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')]"
                        }
                    ]
                }
            }
        }
    ]
}

Ancak, hangi yapılandırmaların sizin için etkili olduğunu en iyi siz bilirsiniz, bu nedenle kendi özelleştirmenizi yapmak için bu belgelerde size öğretilen araçları kullanın.

Sonraki adımlar

Kaynak Durumu hakkında daha fazla bilgi edinin:

Hizmet Durumu Uyarıları Oluşturma: