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.

Not

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.

Önkoşullar

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

  1. Azure PowerShell modülünü yükleyin.
  2. Sizi bilgilendirmek için yapılandırılmış bir Eylem Grubu oluşturun veya yeniden kullanın.

Yönergeler

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

    Login-AzAccount
    Select-AzSubscription -Subscription <subscriptionId>
    

    Not

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

  2. Eylem Grubunuz için tam Azure Resource Manager kimliğini bulun ve kaydedin.

    (Get-AzActionGroup -ResourceGroupName <resourceGroup> -Name <actionGroup>).Id
    
  3. Kaynak Durumu uyarıları için bir Resource Manager şablonu oluşturun ve resourcehealthalert.json olarak kaydedin, bkz. Kaynak Durumu uyarıları için Resource Manager şablon seçenekleri.

  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ği'ni yazmanız 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 tamamen otomatikleştirmeyi planlıyorsanız, 5. Adım'daki değerleri istememek için Resource Manager şablonunu düzenlemeniz yeterlidir.

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ılı olarak çalışır ve bir abonelikteki tüm kaynaklar genelinde yeni etkinleştirilen tüm kaynak durumu olayları için uyarı almak üzere kaydolabilirsiniz.

Not

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ğıdaki bölümde, önemsediğimiz olaylara odaklanmak için bu uyarının kapsamını daraltmayı öğreneceksiniz.

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, bu ş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>"
],

Örneğin: "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/myRG/providers/microsoft.compute/virtualmachines/myVm"

Not

Bu dizeyi almak için Azure portalına 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 status Activebildirim 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 size bildirimde bulunur.

Not

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 sürekli izleyerek kaynaklarınızın en son durumunu bildirebilir. İlgili bildirilen sistem durumu: Available, Unavailableve Degraded. Ancak, çalıştırıcının ve Azure kaynağının iletişim kuramadığı durumlarda, kaynak için bir Unknown sistem durumu bildirilir ve bu durum "Etkin" sistem durumu olayı olarak kabul edilir.

Ancak, bir kaynak raporladığında Unknown, son doğru rapordan bu yana sistem durumunun değişmemiş olması muhtemeldir. Olaylarla ilgili Unknown 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 sahip olmadığı Unknownolayları 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 ve previousHealthStatus özelliklerinin null olması mümkündürcurrentHealthStatus. Ö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 daha fazla olay bilgisi (örneğin, neden) kullanılabilir. Bu nedenle, ve değerleri null olarak ayarlandığından, bu örnekte yan tümcesinin kullanılması bazı uyarıların tetiklenmemesiyle properties.currentHealthStatus properties.previousHealthStatus sonuçlanabilir.

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 olması mümkündür. Başka bir ifadeyle, bir sistem durumu geçişi gerçekleşir (örneğin, kullanılamaz durumdadır) ve bildirim gecikmelerini önlemek için olay hemen günlüğe kaydedilir. Bu nedenle, özellik değeri null olarak ayarlanacağından, bu örnekte yan tümcesinin kullanılması bir uyarının properties.cause tetiklenmemesiyle sonuçlanabilir.

Tam Kaynak Durumu uyarı şablonu

Sinyal-gürültü oranını en üst düzeye çıkarmak için önceki bölümde açıklanan ayarlamalar kullanılarak yapılandırılan örnek bir şablon aşağıda verilmiştir. Bazı olaylarda , previousHealthStatusve neden özellik değerlerinin currentHealthStatusnull olabileceği yukarıda belirtilen uyarılara dikkat edin.

{
    "$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ştirmelerinizi 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: