Konfigurace upozornění na stav prostředků s využitím šablon Resource Manageru
Tento článek ukazuje, jak programově vytvořit upozornění protokolu aktivit služby Resource Health pomocí šablon Azure Resource Manageru a Azure PowerShellu.
Azure Resource Health vás informuje o aktuálním a historickém stavu vašich prostředků Azure. Upozornění služby Azure Resource Health vás můžou téměř v reálném čase informovat o změnách stavu těchto prostředků. Vytváření upozornění služby Resource Health prostřednictvím kódu programu umožňuje uživatelům hromadně vytvářet a přizpůsobovat výstrahy.
Poznámka:
Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.
Požadavky
Pokud chcete postupovat podle pokynů na této stránce, musíte předem nastavit několik věcí:
- Nainstalujte modul Azure PowerShellu.
- Vytvořte nebo znovu použijte skupinu akcí nakonfigurovanou tak, aby vás informovala.
Pokyny
Pomocí PowerShellu se přihlaste k Azure pomocí svého účtu a vyberte předplatné, se kterým chcete pracovat.
Login-AzAccount Select-AzSubscription -Subscription <subscriptionId>
Poznámka:
Seznam předplatných, ke kterým máte přístup, můžete použít
Get-AzSubscription
.Vyhledejte a uložte úplné ID Azure Resource Manageru pro vaši skupinu akcí.
(Get-AzActionGroup -ResourceGroupName <resourceGroup> -Name <actionGroup>).Id
Vytvořte a uložte šablonu Resource Manageru pro upozornění služby Resource Health jako resourcehealthalert.json, viz možnosti šablon Resource Manageru pro výstrahy služby Resource Health.
Pomocí této šablony vytvořte nové nasazení Azure Resource Manageru.
New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName <resourceGroup> -TemplateFile <path\to\resourcehealthalert.json>
Zobrazí se výzva k zadání názvu upozornění a ID prostředku skupiny akcí, které jste si zkopírovali dříve:
Supply values for the following parameters: (Type !? for Help.) activityLogAlertName: <Alert Name> actionGroupResourceId: /subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/microsoft.insights/actionGroups/<actionGroup>
Pokud všechno fungovalo úspěšně, zobrazí se v PowerShellu potvrzení.
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 :
Pokud plánujete plně automatizovat tento proces, stačí upravit šablonu Resource Manageru, aby se nezobídka zobrazovala výzva k zadání hodnot v kroku 5.
Možnosti šablon Resource Manageru pro upozornění služby Resource Health
Tuto základní šablonu můžete použít jako výchozí bod pro vytváření upozornění služby Resource Health. Tato šablona funguje jako napsaná a zaregistruje vás, abyste dostávali výstrahy pro všechny nově aktivované události stavu prostředků ve všech prostředcích v předplatném.
Poznámka:
V dolní části tohoto článku jsme také zahrnuli složitější šablonu upozornění, která by měla v porovnání s touto šablonou zvýšit poměr signálu k šumu pro výstrahy služby Resource Health.
{
"$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')]"
}
]
}
}
}
]
}
Obecně se ale nedoporučuje obecné upozornění, jako je tato. V následující části se dozvíte, jak toto upozornění omezit, abyste se mohli zaměřit na události, o které se zajímáme.
Úprava rozsahu upozornění
Výstrahy služby Resource Health je možné nakonfigurovat tak, aby monitorovaly události ve třech různých oborech:
- Úroveň předplatného
- Úroveň skupiny prostředků
- Úroveň zdroje
Šablona upozornění se konfiguruje na úrovni předplatného, ale pokud chcete upozornění nakonfigurovat tak, aby vás upozorňovala jenom na určité prostředky nebo prostředky v rámci určité skupiny prostředků, stačí upravit scopes
oddíl v této šabloně.
V případě oboru na úrovni skupiny prostředků by oddíl rozsahy měl vypadat takto:
"scopes": [
"/subscriptions/<subscription id>/resourcegroups/<resource group>"
],
V případě rozsahu na úrovni prostředků by měl oddíl rozsahu vypadat takto:
"scopes": [
"/subscriptions/<subscription id>/resourcegroups/<resource group>/providers/<resource>"
],
Příklad: "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/myRG/providers/microsoft.compute/virtualmachines/myVm"
Poznámka:
Můžete přejít na web Azure Portal a podívat se na adresu URL při prohlížení prostředku Azure, abyste získali tento řetězec.
Úprava typů prostředků, které vás upozorní
Výstrahy na úrovni předplatného nebo skupiny prostředků můžou mít různé druhy prostředků. Pokud chcete omezit upozornění tak, aby pocházela pouze z určité podmnožina typů prostředků, můžete ji definovat v condition
části šablony takto:
"condition": {
"allOf": [
...,
{
"anyOf": [
{
"field": "resourceType",
"equals": "MICROSOFT.COMPUTE/VIRTUALMACHINES",
"containsAny": null
},
{
"field": "resourceType",
"equals": "MICROSOFT.STORAGE/STORAGEACCOUNTS",
"containsAny": null
},
...
]
}
]
},
Tady použijeme obálku anyOf
, která umožní upozornění služby Resource Health shodovat se všemi zadanými podmínkami, což umožňuje výstrahy, které cílí na konkrétní typy prostředků.
Úprava událostí služby Resource Health, které vás upozorní
Když prostředky projdou událostí stavu, mohou projít řadou fází, které představují stav události stavu: Active
, In Progress
, Updated
a Resolved
.
Můžete být upozorněni pouze v případě, že prostředek není v pořádku, v takovém případě chcete nakonfigurovat výstrahu tak, aby upozorňovala pouze v případě status
, že je Active
. Pokud ale chcete být také upozorněni na ostatní fáze, můžete tyto podrobnosti přidat takto:
"condition": {
"allOf": [
...,
{
"anyOf": [
{
"field": "status",
"equals": "Active"
},
{
"field": "status",
"equals": "In Progress"
},
{
"field": "status",
"equals": "Resolved"
},
{
"field": "status",
"equals": "Updated"
}
]
}
]
}
Pokud chcete být upozorněni na všechny čtyři fáze zdravotních událostí, můžete tuto podmínku odebrat pohromadě a výstraha vás upozorní bez ohledu na status
vlastnost.
Poznámka:
Každý oddíl anyOf by měl obsahovat jenom jednu hodnotu typu pole.
Úprava upozornění služby Resource Health, aby se zabránilo neznámým událostem
Azure Resource Health může hlásit nejnovější stav vašich prostředků tím, že je neustále monitoruje pomocí spouštěčů testů. Relevantní hlášené zdravotní stavy jsou: Available
, Unavailable
a Degraded
. V situacích, kdy spouštěč a prostředek Azure nemůžou komunikovat, Unknown
je však pro prostředek hlášen stav a považuje se za událost stavu Aktivní.
Když se ale prostředek hlásí Unknown
, je pravděpodobné, že se jeho stav od poslední přesné sestavy nezměnil. Pokud chcete odstranit upozornění na Unknown
události, můžete tuto logiku zadat v šabloně:
"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
}
]
},
]
},
V tomto příkladu pouze oznamujeme události, u kterých aktuální a předchozí stav nemá Unknown
. Tato změna může být užitečná, pokud se upozornění posílají přímo na váš mobilní telefon nebo e-mail.
V některých událostech může currentHealthStatus
být hodnota null a previousHealthStatus
vlastnosti. Například když dojde k aktualizované události, je pravděpodobné, že se stav prostředku od poslední sestavy nezměnil, pouze že jsou k dispozici další informace o události (například příčina). Proto použití klauzule v tomto příkladu může vést k tomu, že se neaktivují některé výstrahy, protože properties.currentHealthStatus
hodnoty a properties.previousHealthStatus
hodnoty jsou nastaveny na hodnotu null.
Úprava výstrahy tak, aby se zabránilo událostem iniciovaným uživatelem
Události služby Resource Health můžou aktivovat události iniciované platformou a událostmi iniciovanými uživatelem. Může být vhodné odeslat oznámení jenom v případě, že je událost stavu způsobená platformou Azure.
Upozornění můžete snadno nakonfigurovat tak, aby filtrovali jenom tyto druhy událostí:
"condition": {
"allOf": [
...,
{
"field": "properties.cause",
"equals": "PlatformInitiated",
"containsAny": null
}
]
}
V některých událostech může pole příčiny mít hodnotu null. To znamená, že probíhá přechod stavu (například dostupný pro nedostupnost) a událost se zaprotokoluje okamžitě, aby se zabránilo zpoždění oznámení. Proto použití klauzule v tomto příkladu může vést k tomu, že se neaktivuje výstraha, protože properties.cause
hodnota vlastnosti bude nastavena na hodnotu null.
Dokončení šablony upozornění služby Resource Health
Tady je ukázková šablona, která se konfiguruje pomocí úprav popsaných v předchozí části, aby se maximalizoval poměr signálu k šumu. Mějte na paměti výše uvedené upozornění, kde currentHealthStatus
, previousHealthStatus
a příčina hodnoty vlastnosti mohou být null v některých událostech.
{
"$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')]"
}
]
}
}
}
]
}
Znáte ale, jaké konfigurace jsou pro vás efektivní, takže pomocí nástrojů, které jste naučili v této dokumentaci, proveďte vlastní přizpůsobení.
Další kroky
Další informace o službě Resource Health:
- Přehled služby Azure Resource Health
- Typy prostředků a kontroly stavu dostupné prostřednictvím služby Azure Resource Health
Vytvoření upozornění služby Service Health: