Kaynak değişikliklerini alma
Kaynaklar günlük kullanım, yeniden yapılandırma ve hatta yeniden dağıtma yoluyla değişir. Çoğu değişiklik tasarım gereğidir, ancak bazen değildir. Şunları yapabilirsiniz:
- Bir Azure Resource Manager özelliğinde ne zaman değişiklik algılandığını öğrenme.
- Özellik değişikliği ayrıntılarını görüntüleyin.
- Abonelikleriniz, yönetim grubunuz veya kiracınız genelinde değişiklikleri büyük ölçekte sorgula.
Bu makalede şunları öğreneceksiniz:
- Yük JSON'un nasıl göründüğü.
- CLI, PowerShell veya Azure portalını kullanarak Kaynak Grafı aracılığıyla kaynak değişikliklerini sorgulama.
- Kaynak değişikliklerini sorgulamaya yönelik sorgu örnekleri ve en iyi yöntemler.
- Değişiklik analiziNde Değişiklik Aktörü işlevselliği kullanılır:
changedBy
: Uygulama kimliği veya yetkili kişinin e-posta adresi gibi kaynağınızda bir değişiklik başlatan kişi.clientType
: Değişikliği azure portalı gibi hangi istemci yaptı?operation
: GibiMicrosoft.Compute/virtualmachines/write
hangi işlem çağrıldı?
Önkoşullar
- Azure PowerShell'in Azure Kaynak Grafı sorgulamasını etkinleştirmek için modülü ekleyin.
- Azure CLI'nın Azure Kaynak Grafı sorgulamasını etkinleştirmek için uzantıyı ekleyin.
Değişiklik olayı özelliklerini anlama
Bir kaynak oluşturulduğunda, güncelleştirildiğinde veya silindiğinde, değiştirilen kaynağı genişletmek ve değiştirilen özellikleri göstermek için yeni bir değişiklik kaynağı (Microsoft.Resources/changes
) oluşturulur. Değişiklik kayıtlarının beş dakikadan kısa sürede kullanılabilir olması gerekir. Aşağıdaki örnek JSON yükü, kaynak özelliklerini değiştirme işlemini gösterir:
{
"targetResourceId": "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/myResourceGroup/providers/microsoft.compute/virtualmachines/myVM",
"targetResourceType": "microsoft.compute/virtualmachines",
"changeType": "Update",
"changeAttributes": {
"previousResourceSnapshotId": "11111111111111111111_22222222-3333-aaaa-bbbb-444444444444_5555555555_6666666666",
"newResourceSnapshotId": "33333333333333333333_44444444-5555-ffff-gggg-666666666666_7777777777_8888888888",
"correlationId": "11111111-1111-1111-1111-111111111111",
"changedByType": "User",
"changesCount": 2,
"clientType": "Azure Portal",
"changedBy": "john@contoso.com",
"operation": "microsoft.compute/virtualmachines/write",
"timestamp": "2024-06-12T13:26:17.347+00:00"
},
"changes": {
"properties.provisioningState": {
"newValue": "Succeeded",
"previousValue": "Updating",
"isTruncated": "true"
},
"tags.key1": {
"newValue": "NewTagValue",
"previousValue": "null",
}
}
}
Kaynak özelliklerini değiştirme için tam başvuru kılavuzuna bakın.
Sorgu çalıştırma
Tablonun kiracı tabanlı Kaynak Grafı sorgusunu resourcechanges
deneyin. Sorgu, değişiklik süresi, değişiklik türü, hedef kaynak kimliği, hedef kaynak türü ve her değişiklik kaydının değişiklik ayrıntılarıyla en son beş Azure kaynak değişikliğini döndürür.
# Login first with az login if not using Cloud Shell
# Run Azure Resource Graph query
az graph query -q 'resourcechanges | project properties.changeAttributes.timestamp, properties.changeType, properties.targetResourceId, properties.targetResourceType, properties.changes | limit 5'
Zaman damgası özelliği için daha kolay bir sütun adı belirtmek üzere bu sorguyu güncelleştirebilirsiniz.
# Run Azure Resource Graph query with 'extend'
az graph query -q 'resourcechanges | extend changeTime=todatetime(properties.changeAttributes.timestamp) | project changeTime, properties.changeType, properties.targetResourceId, properties.targetResourceType, properties.changes | limit 5'
Sorgu sonuçlarını en son değişikliklerle sınırlamak için sorguyu order by
kullanıcı tanımlı changeTime
özelliğe güncelleştirin.
# Run Azure Resource Graph query with 'order by'
az graph query -q 'resourcechanges | extend changeTime=todatetime(properties.changeAttributes.timestamp) | project changeTime, properties.changeType, properties.targetResourceId, properties.targetResourceType, properties.changes | order by changeTime desc | limit 5'
Ayrıca sırasıyla veya parametreleriyle yönetim grubuna -ManagementGroup
-Subscription
veya aboneliğe göre sorgulayabilirsiniz.
Not
Sorgu zaten erişiminiz olan bir abonelikten sonuç döndürmezse PowerShell Search-AzGraph
cmdlet'i varsayılan bağlamdaki abonelikler olarak varsayılan olarak kullanılır.
Kaynak Grafı Gezgini ayrıca bazı sorguların sonuçlarını bir Azure panosuna sabitlenebilen bir grafiğe dönüştürmek için temiz bir arabirim sağlar.
Kaynak değişikliklerini sorgulama
Kaynak Grafı ile, değişiklik kaynağı özelliklerinden herhangi birine göre filtrelemek veya healthresourcechanges
sıralamak için , resourcecontainerchanges
veya tablolarını sorgulayabilirsinizresourcechanges
. Aşağıdaki örnekler tabloyu sorgularresourcechanges
, ancak veya healthresourcechanges
tablosuna resourcecontainerchanges
da uygulanabilir.
Not
Project Flash belgelerinde veriler hakkında healthresourcechanges
daha fazla bilgi edinin.
Örnekler
Kaynaklarınızdaki değişiklikleri sorgulamadan ve analiz etmeden önce aşağıdaki en iyi yöntemleri gözden geçirin.
- Belirli bir zaman penceresinde değişiklik olaylarını sorgulayın ve değişiklik ayrıntılarını değerlendirin.
- Bu sorgu, olası ilgili değişiklikleri anlamak için olay yönetimi sırasında en iyi şekilde çalışır.
- Güncel bir Yapılandırma Yönetimi Veritabanı (CMDB) tutun.
- Tüm kaynakları ve bunların tam özellik kümelerini zamanlanmış sıklıkta yenilemek yerine, yalnızca onların değişikliklerini alırsınız.
- Bir kaynak uyumluluk durumunu değiştirdiğinde hangi diğer özelliklerin değiştirildiğini anlayın.
- Bu ek özelliklerin değerlendirilmesi, Azure İlkesi tanımı aracılığıyla yönetilmesi gerekebilecek diğer özellikler hakkında içgörüler sağlayabilir.
- Sorgu komutlarının sırası önemlidir. Aşağıdaki örneklerde komutundan
order by
limit
önce gelmelidir.- komutu,
order by
sorgu sonuçlarını değişiklik zamanına göre sıralar. - Komut daha
limit
sonra en son beş sonucu aldığınızdan emin olmak için sıralı sonuçları sınırlar.
- komutu,
- Bilinmiyor ne anlama gelir?
- Bilinmeyen, değişiklik tanınmayan bir istemcide gerçekleştiğinde görüntülenir. İstemciler, özgün değişiklik isteğiyle ilişkili kullanıcı aracısı ve istemci uygulama kimliğine göre tanınır.
- Sistem ne anlama geliyor?
- Sistem, herhangi bir
changedBy
doğrudan kullanıcı eylemiyle ilişkili olmayan bir arka plan değişikliği gerçekleştiğinde bir değer olarak görüntülenir.
- Sistem, herhangi bir
Son 24 saatlik dönemdeki tüm değişiklikler
resourcechanges
| extend changeTime = todatetime(properties.changeAttributes.timestamp), targetResourceId = tostring(properties.targetResourceId),
changeType = tostring(properties.changeType), correlationId = properties.changeAttributes.correlationId,
changedProperties = properties.changes, changeCount = properties.changeAttributes.changesCount
| where changeTime > ago(1d)
| order by changeTime desc
| project changeTime, targetResourceId, changeType, correlationId, changeCount, changedProperties
Belirli bir kaynak grubunda silinen kaynaklar
resourcechanges
| where resourceGroup == "myResourceGroup"
| extend changeTime = todatetime(properties.changeAttributes.timestamp), targetResourceId = tostring(properties.targetResourceId),
changeType = tostring(properties.changeType), correlationId = properties.changeAttributes.correlationId
| where changeType == "Delete"
| order by changeTime desc
| project changeTime, resourceGroup, targetResourceId, changeType, correlationId
Belirli bir özellik değerinde yapılan değişiklikler
resourcechanges
| extend provisioningStateChange = properties.changes["properties.provisioningState"], changeTime = todatetime(properties.changeAttributes.timestamp), targetResourceId = tostring(properties.targetResourceId), changeType = tostring(properties.changeType)
| where isnotempty(provisioningStateChange)and provisioningStateChange.newValue == "Succeeded"
| order by changeTime desc
| project changeTime, targetResourceId, changeType, provisioningStateChange.previousValue, provisioningStateChange.newValue
Son yedi gün içinde kim ve hangi istemciye göre değişir ve sayıya göre sıralanır
resourcechanges
| extend changeTime = todatetime(properties.changeAttributes.timestamp),
targetResourceId = tostring(properties.targetResourceId),
changeType = tostring(properties.changeType), changedBy = tostring(properties.changeAttributes.changedBy),
changedByType = properties.changeAttributes.changedByType,
clientType = tostring(properties.changeAttributes.clientType)
| where changeTime > ago(7d)
| project changeType, changedBy, changedByType, clientType
| summarize count() by changedBy, changeType, clientType
| order by count_ desc
Sanal makine boyutundaki değişiklikler
resourcechanges
| extend vmSize = properties.changes["properties.hardwareProfile.vmSize"], changeTime = todatetime(properties.changeAttributes.timestamp), targetResourceId = tostring(properties.targetResourceId), changeType = tostring(properties.changeType)
| where isnotempty(vmSize)
| order by changeTime desc
| project changeTime, targetResourceId, changeType, properties.changes, previousSize = vmSize.previousValue, newSize = vmSize.newValue
Değişiklik türüne ve abonelik adına göre değişiklik sayısı
resourcechanges
| extend changeType = tostring(properties.changeType), changeTime = todatetime(properties.changeAttributes.timestamp), targetResourceType=tostring(properties.targetResourceType)
| summarize count() by changeType, subscriptionId
| join (resourcecontainers | where type=='microsoft.resources/subscriptions' | project SubscriptionName=name, subscriptionId) on subscriptionId
| project-away subscriptionId, subscriptionId1
| order by count_ desc
Belirli bir etiketle oluşturulan kaynaklar için en son kaynak değişiklikleri
resourcechanges
|extend targetResourceId = tostring(properties.targetResourceId), changeType = tostring(properties.changeType), createTime = todatetime(properties.changeAttributes.timestamp)
| where createTime > ago(7d) and changeType == "Create" or changeType == "Update" or changeType == "Delete"
| project targetResourceId, changeType, createTime
| join ( resources | extend targetResourceId=id) on targetResourceId
| where tags ['Environment'] =~ 'prod'
| order by createTime desc
| project createTime, id, resourceGroup, type