Resource Health-riasztások konfigurálása Resource Manager-sablonok használatával

Ez a cikk bemutatja, hogyan hozhat létre Resource Health-tevékenységnapló-riasztásokat programozott módon Az Azure Resource Manager-sablonok és az Azure PowerShell használatával.

Az Azure Resource Health folyamatosan tájékoztatja az Azure-erőforrások aktuális és korábbi állapotáról. Az Azure Resource Health-riasztások segítségével közel valós időben értesülhet arról, ha az erőforrások állapotában változás áll be. A Resource Health-riasztások programozott létrehozása lehetővé teszi a felhasználók számára a riasztások tömeges létrehozását és testreszabását.

Megjegyzés:

We recommend that you use the Azure Az PowerShell module to interact with Azure. See Install Azure PowerShell to get started. To learn how to migrate to the Az PowerShell module, see Migrate Azure PowerShell from AzureRM to Az.

Előfeltételek

A lapon található utasítások követéséhez előre be kell állítania néhány dolgot:

  1. Telepítenie kell az Azure PowerShell-modult
  2. Létre kell hoznia vagy újra kell használnia egy műveletcsoportot , amely úgy van konfigurálva, hogy értesítse Önt

Instructions

  1. A PowerShell használatával jelentkezzen be az Azure-ba a fiókjával, és válassza ki a használni kívánt előfizetést

    Login-AzAccount
    Select-AzSubscription -Subscription <subscriptionId>
    

    Listázhatja Get-AzSubscription azokat az előfizetéseket, amelyekhez hozzáférése van.

  2. A műveletcsoport teljes Azure Resource Manager-azonosítójának megkeresése és mentése

    (Get-AzActionGroup -ResourceGroupName <resourceGroup> -Name <actionGroup>).Id
    
  3. Resource Health-riasztások Resource Manager-sablonjának létrehozása és mentése (resourcehealthalert.jsonlásd az alábbi részleteket)

  4. Új Azure Resource Manager-telepítés létrehozása ezzel a sablonnal

    New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName <resourceGroup> -TemplateFile <path\to\resourcehealthalert.json>
    
  5. A rendszer kérni fogja, hogy írja be a korábban másolt riasztás nevét és műveletcsoport-erőforrás-azonosítóját:

    Supply values for the following parameters:
    (Type !? for Help.)
    activityLogAlertName: <Alert Name>
    actionGroupResourceId: /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/microsoft.insights/actionGroups/<actionGroup>
    
  6. Ha minden sikeresen működött, megerősítést kap a PowerShellben

    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 :
    

Vegye figyelembe, hogy ha a folyamat teljes automatizálását tervezi, egyszerűen szerkesztenie kell a Resource Manager-sablont, hogy ne kérje az 5. lépésben szereplő értékeket.

Resource Health-riasztások Resource Manager-sablonbeállításai

Ezt az alapsablont kiindulópontként használhatja Resource Health-riasztások létrehozásához. Ez a sablon írott módon fog működni, és feliratkozik, hogy riasztásokat kapjon az összes újonnan aktivált erőforrás-állapoteseményről az előfizetés összes erőforrásában.

A cikk alján egy összetettebb riasztási sablont is tartalmaztunk, amelynek a sablonhoz képest növelnie kell a Resource Health-riasztások jel-zaj arányát.

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

Az ehhez hasonló széles körű riasztások azonban általában nem ajánlottak. Ebből a cikkből megtudhatja, hogyan adhatja meg ezt a riasztást, hogy az alábbiakban a fontos eseményekre összpontosítsunk.

A riasztás hatókörének módosítása

A Resource Health-riasztások három különböző hatókörben konfigurálhatók események figyelésére:

  • Előfizetés típusa
  • Erőforráscsoport szintje
  • Erőforrásszint

A riasztási sablon az előfizetés szintjén van konfigurálva, de ha úgy szeretné konfigurálni a riasztást, hogy csak bizonyos erőforrásokról vagy erőforrásokról értesítse Önt egy adott erőforráscsoporton belül, egyszerűen módosítania kell a scopes fenti sablon szakaszát.

Erőforráscsoportszintű hatókör esetén a hatókörök szakaszának a következőképpen kell kinéznie:

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

Erőforrásszintű hatókör esetén pedig a hatókör szakaszának a következőképpen kell kinéznie:

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

Például: "/subscriptions/d37urb3e-ed41-4670-9c19-02a1d2808ff9/resourcegroups/myRG/providers/microsoft.compute/virtualmachines/myVm"

A sztring lekéréséhez nyissa meg az Azure Portalt, és tekintse meg az Azure-erőforrás megtekintésekor az URL-címet.

A riasztást küldő erőforrástípusok módosítása

Az előfizetés vagy az erőforráscsoport szintjén a riasztások különböző típusú erőforrásokat tartalmazhatnak. Ha korlátozni szeretné, hogy a riasztások csak az erőforrástípusok egy bizonyos részhalmazából származjanak, a sablon szakaszában condition a következőképpen határozhatja meg:

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

Itt a anyOf burkoló használatával engedélyezzük, hogy az erőforrásállapot-riasztás megfeleljen az általunk megadott feltételeknek, lehetővé téve az adott erőforrástípusokat megcélzó riasztásokat.

A riasztást küldő Resource Health-események módosítása

Amikor az erőforrások állapoteseményen esnek át, több fázison is átmehetnek, amelyek az állapotesemény állapotát jelölik: Active, In Progress, Updatedés Resolved.

Előfordulhat, hogy csak akkor szeretne értesítést kapni, ha egy erőforrás nem megfelelő állapotúvá válik, ebben az esetben a riasztást úgy szeretné konfigurálni, hogy csak akkor értesítsen, ha azstatus.Active Ha azonban a többi szakaszról is szeretne értesítést kapni, a következőhöz hasonló adatokat adhat hozzá:

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

Ha az állapotesemények mind a négy szakaszáról szeretne értesítést kapni, akkor ezt a feltételt együtt is eltávolíthatja, és a riasztás a tulajdonságtól függetlenül status értesíti Önt.

Megjegyzés:

Minden "anyOf" szakasznak csak egy mezőtípus-értéket kell tartalmaznia.

A Resource Health-riasztások módosítása az "Ismeretlen" események elkerülése érdekében

Az Azure Resource Health a tesztfuttatók használatával folyamatosan monitorozza az erőforrások legújabb állapotát. A vonatkozó jelentett állapotok a következők: "Elérhető", "Nem érhető el" és "Csökkentett". Azokban az esetekben azonban, amikor a futó és az Azure-erőforrás nem tud kommunikálni, a rendszer "Ismeretlen" állapotot jelent az erőforrás számára, amely "Aktív" állapoteseménynek minősül.

Ha azonban egy erőforrás "Ismeretlen" jelentésről számol be, valószínű, hogy az állapota nem változott az utolsó pontos jelentés óta. Ha meg szeretné szüntetni az "Ismeretlen" eseményekre vonatkozó riasztásokat, a sablonban megadhatja ezt a logikát:

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

Ebben a példában csak olyan eseményekről küldünk értesítést, amelyekben az aktuális és az előző állapot nem "Ismeretlen" állapotú. Ez a módosítás hasznos kiegészítő lehet, ha a riasztásokat közvetlenül a mobiltelefonra vagy e-mail-címre küldi.

Vegye figyelembe, hogy egyes eseményekben az aktuálisHealthStatus és az előzőHealthStatus tulajdonságok null értékűek lehetnek. Ha például egy frissített esemény bekövetkezik, valószínű, hogy az erőforrás állapota nem változott a legutóbbi jelentés óta, csak az a további eseményinformáció érhető el (például az ok). Ezért a fenti záradék használatával előfordulhat, hogy egyes riasztások nem aktiválódnak, mert a properties.currentHealthStatus és a properties.previousHealthStatus értékek null értékűek lesznek.

A riasztás módosítása a felhasználó által kezdeményezett események elkerülése érdekében

A Resource Health-eseményeket a platform által kezdeményezett és a felhasználó által kezdeményezett események aktiválhatják. Érdemes lehet csak akkor értesítést küldeni, ha az állapoteseményt az Azure-platform okozza.

A riasztás egyszerűen konfigurálható úgy, hogy csak az ilyen típusú eseményekre szűrjön:

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

Vegye figyelembe, hogy egyes eseményekben előfordulhat, hogy az okmező null értékű. Ez azt jelzi, hogy állapotváltás történik (például nem érhető el), és a rendszer azonnal naplózza az eseményt az értesítési késések elkerülése érdekében. Ezért a fenti záradék használata azt eredményezheti, hogy a riasztás nem aktiválódik, mert a properties.cause tulajdonság értéke null értékű lesz.

Resource Health-riasztássablon befejezése

Az előző szakaszban ismertetett különböző beállításokat használva íme egy mintasablon, amely úgy van konfigurálva, hogy maximalizálja a jel és a zaj arányát. Ne feledje, hogy a fent említett kikötések, amelyekben az aktuálisHealthStatus, az előzőHealthStatus és az ok tulajdonságértékek null értékűek lehetnek egyes eseményekben.

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

A legjobban azonban tudni fogja, hogy mely konfigurációk hatékonyak Önnek, ezért a dokumentációban ismertetett eszközökkel saját testreszabást végezhet.

Következő lépések

További információ a Resource Health szolgáltatásról:

Szolgáltatásállapot-riasztások létrehozása: