Erőforrás-módosítások lekérése

Az erőforrások a napi használat, az újrakonfigurálás és az újbóli üzembe helyezés során változnak. A legtöbb változás a tervezés, de néha nem. A következőket teheti:

  • Megtudhatja, mikor történtek módosítások az Azure Resource Manager-tulajdonságokban.
  • A tulajdonságmódosítás részleteinek megtekintése.
  • Az előfizetések, felügyeleti csoportok vagy bérlők nagy léptékű változásainak lekérdezése.

Ebben a cikkben a következőt ismerheti meg:

  • Így néz ki a hasznos adat JSON-ja.
  • Erőforrásváltozások lekérdezése a Resource Graphon keresztül a parancssori felület, a PowerShell vagy az Azure Portal használatával.
  • Lekérdezési példák és ajánlott eljárások az erőforrás-módosítások lekérdezéséhez.

Előfeltételek

  • Ha engedélyezni szeretné az Azure PowerShell számára az Azure Resource Graph lekérdezését, adja hozzá a modult.
  • Ha engedélyezni szeretné, hogy az Azure CLI lekérdezhesse az Azure Resource Graphot, adja hozzá a bővítményt.

Az esemény tulajdonságainak módosítása

Amikor létrehoz, frissít vagy töröl egy erőforrást, létrejön egy új változáserőforrás (Microsoft.Resources/changes), amely kibővíti a módosított erőforrást, és megjeleníti a módosított tulajdonságokat. A módosítási rekordoknak öt percnél rövidebben kell elérhetőnek lenniük. Az alábbi JSON-példa hasznos adatai a változáserőforrás-tulajdonságokat mutatják be:

{
  "targetResourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroup/providers/microsoft.compute/virtualmachines/myVM",
  "targetResourceType": "microsoft.compute/virtualmachines",
  "changeType": "Update",
  "changeAttributes": {
    "previousResourceSnapshotId": "08584889383111245807_37592049-3996-ece7-c583-3008aef9e0e1_4043682982_1712668574",
    "newResourceSnapshotId": "08584889377081305807_38788020-eeee-ffff-028f-6121bdac9cfe_4213468768_1712669177",
    "correlationId": "04ff69b3-e162-4583-9cd7-1a14a1ec2c61",
    "changedByType": "User",
    "changesCount": 2,
    "clientType": "ARM Template",
    "changedBy": "john@contoso.com",
    "operation": "microsoft.compute/virtualmachines/write",
    "timestamp": "2024-04-09T13: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"
    }
  }
}

Az erőforrás tulajdonságainak módosításához tekintse meg a teljes referencia-útmutatót.

Lekérdezés futtatása

Próbálja ki a tábla bérlőalapú Resource Graph-lekérdezését resourcechanges . A lekérdezés a változási idő, a módosítás típusa, a célerőforrás-azonosító, a célerőforrás-típus és az egyes változásrekordok módosítási részleteinek az első öt legutóbbi Azure-erőforrás-módosítást adja vissza.

# 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'

Ezt a lekérdezést úgy frissítheti, hogy felhasználóbarátabb oszlopnevet adjon meg az időbélyeg tulajdonsághoz.

# 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'

Ha a lekérdezés eredményeit a legutóbbi módosításokra szeretné korlátozni, frissítse a lekérdezést a felhasználó által definiált changeTime tulajdonságraorder by.

# 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'

A felügyeleti csoport vagy előfizetés alapján is lekérdezheti a paramétereket vagy -Subscription a -ManagementGroup paramétereket.

Feljegyzés

Ha a lekérdezés nem ad vissza eredményeket olyan előfizetésből, amelyhez már rendelkezik hozzáféréssel, akkor a Search-AzGraph PowerShell-parancsmag alapértelmezés szerint az alapértelmezett környezetben lévő előfizetésekre vonatkozik.

A Resource Graph Explorer egy tiszta felületet is biztosít, amellyel egyes lekérdezések eredményeit egy Azure-irányítópultra rögzíthető diagrammá alakíthatja.

Erőforrás-módosítások lekérdezése

A Resource Graph segítségével lekérdezheti a , vagy resourcecontainerchangeshealthresourcechanges a resourcechangestáblákat a módosítási erőforrás tulajdonságai alapján történő szűréshez vagy rendezéshez. Az alábbi példák lekérdezik a táblátresourcechanges, de a táblára vagy healthresourcechanges a resourcecontainerchanges táblára is alkalmazhatók.

Feljegyzés

További információ a healthresourcechanges Project Flash dokumentációjában szereplő adatokról.

Példák

Az erőforrások változásainak lekérdezése és elemzése előtt tekintse át az alábbi ajánlott eljárásokat.

  • Lekérdezés a változási eseményekről egy adott időszak alatt, és értékelje ki a módosítás részleteit.
    • Ez a lekérdezés az incidenskezelés során a legjobban működik a potenciálisan kapcsolódó változások megértéséhez.
  • Naprakész konfigurációkezelési adatbázis (CMDB) megőrzése.
    • Ahelyett, hogy az összes erőforrást és a teljes tulajdonságkészletet ütemezett gyakorisággal frissítenék, csak a módosításokat fogja megkapni.
  • Megtudhatja, hogy milyen egyéb tulajdonságok módosulhattak, amikor egy erőforrás módosította a "megfelelőségi állapotot".
    • Ezeknek az extra tulajdonságoknak a kiértékelése betekintést nyújthat más tulajdonságokba, amelyeket esetleg azure policy-definícióval kell felügyelni.
  • A lekérdezési parancsok sorrendje fontos. Az alábbi példákban a order by parancs előtt limit kell lennie.
    • A order by parancs a módosítási idő szerint rendeli meg a lekérdezés eredményeit.
    • A limit parancs ezután korlátozza a rendezett eredményeket, hogy biztosan megkapja az öt legutóbbi eredményt.

Az elmúlt 24 órás időszak összes változása

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

Adott erőforráscsoportban törölt erőforrások

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

Adott tulajdonságérték módosítása

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

Az elmúlt hét napban létrehozott erőforrások legújabb erőforrás-változásai

resourcechanges
| extend targetResourceId = tostring(properties.targetResourceId), changeType = tostring(properties.changeType), changeTime = todatetime(properties.changeAttributes.timestamp)
| where changeTime > ago(7d) and changeType == "Create"
| project  targetResourceId, changeType, changeTime
| join ( Resources | extend targetResourceId=id) on targetResourceId
| order by changeTime desc
| project changeTime, changeType, id, resourceGroup, type, properties

A virtuális gép méretének változásai

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

Változások száma változástípus és előfizetés neve szerint

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  

Egy adott címkével létrehozott erőforrások legújabb erőforrás-változásai

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

Következő lépések