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:
- Telepítenie kell az Azure PowerShell-modult
- Létre kell hoznia vagy újra kell használnia egy műveletcsoportot , amely úgy van konfigurálva, hogy értesítse Önt
Instructions
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.A műveletcsoport teljes Azure Resource Manager-azonosítójának megkeresése és mentése
(Get-AzActionGroup -ResourceGroupName <resourceGroup> -Name <actionGroup>).Id
Resource Health-riasztások Resource Manager-sablonjának létrehozása és mentése (
resourcehealthalert.json
lásd az alábbi részleteket)Új Azure Resource Manager-telepítés létrehozása ezzel a sablonnal
New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName <resourceGroup> -TemplateFile <path\to\resourcehealthalert.json>
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>
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:
- Az Azure Resource Health áttekintése
- Az Azure Resource Health segítségével elérhető erőforrástípusok és állapot-ellenőrzések
Szolgáltatásállapot-riasztások létrehozása: