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:
- Azure PowerShell modülünü yükleyin.
- Sizi bilgilendirmek için yapılandırılmış bir Eylem Grubu oluşturun veya yeniden kullanın.
Yönergeler
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
.Eylem Grubunuz için tam Azure Resource Manager kimliğini bulun ve kaydedin.
(Get-AzActionGroup -ResourceGroupName <resourceGroup> -Name <actionGroup>).Id
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.
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ğ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>
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
, 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 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
, Unavailable
ve 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ığı Unknown
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 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 , previousHealthStatus
ve neden özellik değerlerinin currentHealthStatus
null 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:
- 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: