Mendapatkan perubahan sumber daya
Sumber daya berubah melalui penggunaan harian, konfigurasi ulang, dan bahkan penyebaran ulang. Sebagian besar perubahan adalah berdasarkan desain, tetapi kadang-kadang tidak. Anda dapat:
- Temukan kapan perubahan terdeteksi pada properti Azure Resource Manager.
- Lihat detail perubahan properti.
- Perubahan kueri dalam skala besar di seluruh langganan, grup manajemen, atau penyewa Anda.
Dalam artikel ini, Anda belajar tentang:
- Seperti apa payload JSON.
- Cara mengkueri perubahan sumber daya melalui Resource Graph menggunakan CLI, PowerShell, atau portal Azure.
- Contoh kueri dan praktik terbaik untuk mengkueri perubahan sumber daya.
- Analisis perubahan menggunakan fungsionalitas Ubah Aktor :
changedBy
: Siapa yang memulai perubahan pada sumber daya Anda, seperti ID aplikasi atau alamat email orang yang berwenang.clientType
: Klien mana yang membuat perubahan, seperti portal Azure.operation
: Operasi mana yang dipanggil, sepertiMicrosoft.Compute/virtualmachines/write
.
Prasyarat
- Untuk mengaktifkan Azure PowerShell untuk mengkueri Azure Resource Graph, tambahkan modul.
- Untuk mengaktifkan Azure CLI untuk mengkueri Azure Resource Graph, tambahkan ekstensi.
Memahami properti peristiwa perubahan
Saat sumber daya dibuat, diperbarui, atau dihapus, sumber daya perubahan baru (Microsoft.Resources/changes
) dibuat untuk memperluas sumber daya yang dimodifikasi dan mewakili properti yang diubah. Rekaman perubahan harus tersedia dalam waktu kurang dari lima menit. Contoh payload JSON berikut menunjukkan properti sumber daya perubahan:
{
"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",
"changeCategory": "System",
"propertyChangeType": "Update",
"isTruncated": "true"
},
"tags.key1": {
"newValue": "NewTagValue",
"previousValue": "null",
"changeCategory": "User",
"propertyChangeType": "Insert"
}
}
}
Lihat panduan referensi lengkap untuk mengubah properti sumber daya.
Menjalankan kueri
Cobalah kueri Resource Graph berbasis penyewa dari resourcechanges
tabel. Kueri menampilkan lima perubahan sumber daya Azure terbaru dengan waktu perubahan, jenis perubahan, ID sumber daya target, jenis sumber daya target, dan detail perubahan dari setiap data perubahan.
# 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'
Anda dapat memperbarui kueri ini untuk menentukan nama kolom yang lebih mudah digunakan untuk properti tanda waktu.
# 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'
Untuk membatasi hasil kueri ke perubahan terbaru, perbarui kueri ke order by
properti yang ditentukan changeTime
pengguna.
# 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'
Anda juga dapat mengkueri menurut grup manajemen atau langganan dengan -ManagementGroup
parameter atau -Subscription
.
Catatan
Jika kueri tidak mengembalikan hasil dari langganan yang sudah Anda akses, maka Search-AzGraph
cmdlet PowerShell default ke langganan dalam konteks default.
Resource Graph Explorer juga menyediakan antarmuka yang bersih untuk mengubah hasil beberapa kueri menjadi bagan yang dapat disematkan ke dasbor Azure.
Perubahan sumber daya kueri
Dengan Resource Graph, Anda bisa mengkueri resourcechanges
tabel , , resourcecontainerchanges
atau healthresourcechanges
untuk memfilter atau mengurutkan menurut salah satu properti sumber daya perubahan. Contoh berikut mengkueri resourcechanges
tabel, tetapi juga dapat diterapkan ke resourcecontainerchanges
tabel atau healthresourcechanges
.
Catatan
Pelajari selengkapnya tentang healthresourcechanges
data dalam dokumentasi Project Flash.
Contoh
Sebelum mengkueri dan menganalisis perubahan dalam sumber daya Anda, tinjau praktik terbaik berikut.
- Buat kueri untuk aktivitas perubahan selama jendela waktu tertentu dan evaluasi detail perubahan.
- Kueri ini berfungsi paling baik selama manajemen insiden untuk memahami perubahan yang berpotensi terkait.
- Pertahankan Database Manajemen Konfigurasi (CMDB) terbaru.
- Alih-alih me-refresh semua sumber daya dan kumpulan properti lengkapnya pada frekuensi terjadwal, Anda hanya menerima perubahannya.
- Pahami properti lain mana yang diubah saat sumber daya mengubah status kepatuhan.
- Evaluasi properti tambahan ini dapat memberikan wawasan tentang properti lain yang mungkin perlu dikelola melalui definisi Azure Policy.
- Urutan perintah kueri penting. Dalam contoh berikut,
order by
harus datang sebelumlimit
perintah.- Perintah
order by
mengurutkan hasil kueri berdasarkan waktu perubahan. limit
Perintah kemudian membatasi hasil yang diurutkan untuk memastikan bahwa Anda mendapatkan lima hasil terbaru.
- Perintah
- Apa artinya Tidak Diketahui ?
- Tidak diketahui ditampilkan ketika perubahan terjadi pada klien yang tidak dikenali. Klien dikenali berdasarkan agen pengguna dan ID aplikasi klien yang terkait dengan permintaan perubahan asli.
- Apa artinya Sistem ?
- Sistem ditampilkan sebagai
changedBy
nilai ketika perubahan latar belakang terjadi yang tidak berkorelasi dengan tindakan pengguna langsung apa pun.
- Sistem ditampilkan sebagai
Semua perubahan dalam periode 24 jam terakhir
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
Sumber daya yang dihapus dalam grup sumber daya tertentu
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
Perubahan pada nilai properti tertentu
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
Perubahan dalam tujuh hari terakhir oleh siapa dan klien mana dan diurutkan berdasarkan hitungan
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
Perubahan ukuran komputer virtual
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
Jumlah perubahan menurut jenis perubahan dan nama langganan
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
Perubahan sumber daya terbaru untuk sumber daya yang dibuat dengan tag tertentu
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
Langkah berikutnya
Tautan terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk