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:
- Azure PowerShell modülünü yüklemeniz gerekir
- Sizi bilgilendirmek için yapılandırılmış bir Eylem Grubu oluşturmanız veya yeniden kullanmanız gerekir
Yönergeler
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
.Eylem Grubunuz için tam Azure Resource Manager kimliğini bulma ve kaydetme
(Get-AzActionGroup -ResourceGroupName <resourceGroup> -Name <actionGroup>).Id
Uyarı Kaynak Durumu
resourcehealthalert.json
için Resource Manager şablonu oluşturma ve kaydetme (aşağıdaki ayrıntılara bakın)Bu şablonu kullanarak yeni bir Azure Resource Manager dağıtımı oluşturun
New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName <resourceGroup> -TemplateFile <path\to\resourcehealthalert.json>
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>
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
, Updated
ve Resolved
.
Yalnızca bir kaynak iyi durumda olmadığında bildirim almak isteyebilirsiniz. Bu durumda uyarınızı yalnızca olduğunda status
Active
bildirim 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:
- Azure Kaynak Durumu genel bakış
- Azure Kaynak Durumu aracılığıyla kullanılabilen kaynak türleri ve durum denetimleri
Hizmet Durumu Uyarıları Oluşturma: