Monitorozás és diagnosztika használata Windows rendszerű virtuális géppel és Azure Resource Manager-sablonokkal
Az Azure Diagnostics bővítmény a Windows-alapú Azure-beli virtuális gépek monitorozási és diagnosztikai funkcióit biztosítja. Ezeket a képességeket a virtuális gépen úgy engedélyezheti, hogy a bővítményt az Azure Resource Manager-sablon részeként beleszámítja. Az Azure Resource Manager-sablonok virtuálisgép-bővítményekkel való elkészítésével kapcsolatos további információkért tekintse meg a bővítmények virtuálisgép-sablon részeként való hozzáadását. Ez a cikk azt ismerteti, hogyan adhatja hozzá az Azure Diagnostics bővítményt egy Windows rendszerű virtuálisgép-sablonhoz.
Az Azure Diagnostics bővítmény hozzáadása a virtuálisgép-erőforrás-definícióhoz
Ha windowsos virtuális gépen szeretné engedélyezni a diagnosztikai bővítményt, a bővítményt virtuálisgép-erőforrásként kell hozzáadnia a Resource Manager-sablonban.
Egyszerű Resource Manager-alapú virtuális gép esetén adja hozzá a bővítménykonfigurációt a virtuális gép erőforrástömbjében :
"resources": [
{
"name": "Microsoft.Insights.VMDiagnosticsSettings",
"type": "extensions",
"location": "[resourceGroup().location]",
"apiVersion": "2015-06-15",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
],
"tags": {
"displayName": "AzureDiagnostics"
},
"properties": {
"publisher": "Microsoft.Azure.Diagnostics",
"type": "IaaSDiagnostics",
"typeHandlerVersion": "1.5",
"autoUpgradeMinorVersion": true,
"settings": {
"xmlCfg": "[base64(concat(variables('wadcfgxstart'), variables('wadmetricsresourceid'), variables('vmName'), variables('wadcfgxend')))]",
"storageAccount": "[parameters('existingdiagnosticsStorageAccountName')]"
},
"protectedSettings": {
"storageAccountName": "[parameters('existingdiagnosticsStorageAccountName')]",
"storageAccountKey": "[listkeys(variables('accountid'), '2015-05-01-preview').key1]",
"storageAccountEndPoint": "https://core.windows.net"
}
}
}
]
Egy másik gyakori konvenció a bővítménykonfiguráció hozzáadása a sablon gyökérerőforrás-csomópontján ahelyett, hogy a virtuális gép erőforráscsomópontja alatt definiálná. Ezzel a megközelítéssel explicit módon meg kell adnia egy hierarchikus kapcsolatot a bővítmény és a virtuális gép között a névvel és a típusértékekkel. Példa:
"name": "[concat(variables('vmName'),'Microsoft.Insights.VMDiagnosticsSettings')]",
"type": "Microsoft.Compute/virtualMachines/extensions",
A bővítmény mindig a virtuális géphez van társítva, közvetlenül definiálhatja a virtuális gép erőforráscsomópontja alatt, vagy definiálhatja az alapszinten, és a hierarchikus elnevezési konvencióval társíthatja a virtuális géphez.
Virtuálisgép-méretezési csoportok esetén a bővítmények konfigurációja a VirtualMachineProfile extensionProfile tulajdonságában van megadva.
A Microsoft.Azure.Diagnostics értékével és az IaaSDiagnostics értékkel rendelkező típustulajdonság egyedileg azonosítja az Azure Diagnostics bővítményt.
A névtulajdonság értéke az erőforráscsoport bővítményére hivatkozhat. Ha kifejezetten a Microsoft.Insights.VMDiagnosticsSettings szolgáltatásra állítja, az Azure Portal könnyen azonosíthatja, biztosítva, hogy a monitorozási diagramok megfelelően jelenjenek meg az Azure Portalon.
A typeHandlerVersion a használni kívánt bővítmény verzióját adja meg. Az autoUpgradeMinorVersion alverzió igazra állítása biztosítja, hogy a bővítmény legújabb alverziója elérhető legyen. Erősen ajánlott, hogy az autoUpgradeMinorVersion mindig igaz legyen, így mindig a legújabb elérhető diagnosztikai bővítményt használhatja az összes új funkcióval és hibajavítással.
A beállításelem a bővítmény konfigurációs tulajdonságait tartalmazza, amelyek beállíthatók és visszaolvashatók a bővítményből (más néven nyilvános konfiguráció). Az xmlcfg tulajdonság xml-alapú konfigurációt tartalmaz a diagnosztikai naplókhoz, teljesítményszámlálókhoz stb., amelyeket a diagnosztikai ügynök gyűjt össze. Az xml-sémáról további információt a Diagnosztikai konfigurációs séma című témakörben talál. Gyakori eljárás, hogy a tényleges xml-konfigurációt változóként tárolja az Azure Resource Manager-sablonban, majd összefűzi és a base64 kódolja őket az xmlcfg értékének beállításához. Tekintse meg a diagnosztikai konfigurációs változókról szóló szakaszt, amelyből megtudhatja , hogyan tárolhatja az xml-t változókban. A StorageAccount tulajdonság annak a tárfióknak a nevét adja meg, amelybe a diagnosztikai adatokat továbbítják.
A protectedSettings (más néven magánkonfiguráció) tulajdonságai beállíthatók , de a beállítás után nem olvashatók vissza. A protectedSettings írásvédett jellege olyan titkos kulcsok tárolására használható, mint a tárfiókkulcs, ahol a diagnosztikai adatok meg vannak írva.
Diagnosztikai tárfiók megadása paraméterekként
A fenti JSON diagnosztikai bővítmény kódrészlete két paramétert feltételez a meglévődiagnosticsStorageAccountName és a existingdiagnosticsStorageResourceGroup paraméterből annak a diagnosztikai tárfióknak a megadásához, amelyben a diagnosztikai adatok tárolódnak. Ha paraméterként adja meg a diagnosztikai tárfiókot, egyszerűen módosíthatja a diagnosztikai tárfiókot különböző környezetekben, például érdemes lehet egy másik diagnosztikai tárfiókot használni a teszteléshez, és egy másikat az éles környezethez.
"existingdiagnosticsStorageAccountName": {
"type": "string",
"metadata": {
"description": "The name of an existing storage account to which diagnostics data is transfered."
}
},
"existingdiagnosticsStorageResourceGroup": {
"type": "string",
"metadata": {
"description": "The resource group for the storage account specified in existingdiagnosticsStorageAccountName"
}
}
Ajánlott egy diagnosztikai tárfiókot más erőforráscsoportban megadni, mint a virtuális gép erőforráscsoportját. Az erőforráscsoportok tekinthetők saját élettartammal rendelkező üzembehelyezési egységnek, a virtuális gépek üzembe helyezhetők és újra üzembe helyezhetők, mivel az új konfigurációfrissítések hozzá lettek osztva, de előfordulhat, hogy továbbra is ugyanabban a tárfiókban szeretné tárolni a diagnosztikai adatokat ezeken a virtuális gépek üzemelő példányaiban. Ha a tárfiók egy másik erőforrásban van, a tárfiók különböző virtuálisgép-telepítésekből származó adatokat fogad el, így egyszerűen elháríthatja a különböző verziók problémáit.
Feljegyzés
Ha Windows rendszerű virtuálisgép-sablont hoz létre a Visual Studióból, előfordulhat, hogy az alapértelmezett tárfiók ugyanazt a tárfiókot használja, amelyben a virtuális gép VHD-jének feltöltése történik. Ez leegyszerűsíti a virtuális gép kezdeti beállítását. A sablon újraszámozása egy másik, paraméterként átadható tárfiók használatára.
Diagnosztikai konfigurációs változók
Az előző diagnosztikai bővítmény json-kódrészlete egy fiókazonosító változót határoz meg, amely leegyszerűsíti a tárfiók kulcsának lekérését a diagnosztikai tárhoz:
"accountid": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/',parameters('existingdiagnosticsStorageResourceGroup'), '/providers/','Microsoft.Storage/storageAccounts/', parameters('existingdiagnosticsStorageAccountName'))]"
A diagnosztikai bővítmény xmlcfg tulajdonsága több, összefűzött változóval van definiálva. Ezeknek a változóknak az értékei xml-ben vannak, ezért a json-változók beállításakor helyesen kell kimenekíteni őket.
Az alábbi példa bemutatja a diagnosztikai konfiguráció xml-fájlját, amely a szabványos rendszerszintű teljesítményszámlálókat, valamint néhány Windows-eseménynaplót és diagnosztikai infrastruktúra-naplót gyűjt. A rendszer sikeresen eltávolította és megfelelően formázta, hogy a konfiguráció közvetlenül beilleszthető legyen a sablon változók szakaszába. A konfigurációs xml emberibb olvasható példáját a Diagnosztikai konfigurációs sémában találhatja meg.
"wadlogs": "<WadCfg> <DiagnosticMonitorConfiguration overallQuotaInMB=\"4096\" xmlns=\"http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration\"> <DiagnosticInfrastructureLogs scheduledTransferLogLevelFilter=\"Error\"/> <WindowsEventLog scheduledTransferPeriod=\"PT1M\" > <DataSource name=\"Application!*[System[(Level = 1 or Level = 2)]]\" /> <DataSource name=\"Security!*[System[(Level = 1 or Level = 2)]]\" /> <DataSource name=\"System!*[System[(Level = 1 or Level = 2)]]\" /></WindowsEventLog>",
"wadperfcounters1": "<PerformanceCounters scheduledTransferPeriod=\"PT1M\"><PerformanceCounterConfiguration counterSpecifier=\"\\Processor(_Total)\\% Processor Time\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"CPU utilization\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Processor(_Total)\\% Privileged Time\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"CPU privileged time\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Processor(_Total)\\% User Time\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"CPU user time\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Processor Information(_Total)\\Processor Frequency\" sampleRate=\"PT15S\" unit=\"Count\"><annotation displayName=\"CPU frequency\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\System\\Processes\" sampleRate=\"PT15S\" unit=\"Count\"><annotation displayName=\"Processes\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Process(_Total)\\Thread Count\" sampleRate=\"PT15S\" unit=\"Count\"><annotation displayName=\"Threads\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Process(_Total)\\Handle Count\" sampleRate=\"PT15S\" unit=\"Count\"><annotation displayName=\"Handles\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Memory\\% Committed Bytes In Use\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"Memory usage\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Memory\\Available Bytes\" sampleRate=\"PT15S\" unit=\"Bytes\"><annotation displayName=\"Memory available\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Memory\\Committed Bytes\" sampleRate=\"PT15S\" unit=\"Bytes\"><annotation displayName=\"Memory committed\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\Memory\\Commit Limit\" sampleRate=\"PT15S\" unit=\"Bytes\"><annotation displayName=\"Memory commit limit\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\% Disk Time\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"Disk active time\" locale=\"en-us\"/></PerformanceCounterConfiguration>",
"wadperfcounters2": "<PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\% Disk Read Time\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"Disk active read time\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\% Disk Write Time\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"Disk active write time\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\Disk Transfers/sec\" sampleRate=\"PT15S\" unit=\"CountPerSecond\"><annotation displayName=\"Disk operations\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\Disk Reads/sec\" sampleRate=\"PT15S\" unit=\"CountPerSecond\"><annotation displayName=\"Disk read operations\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\Disk Writes/sec\" sampleRate=\"PT15S\" unit=\"CountPerSecond\"><annotation displayName=\"Disk write operations\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\Disk Bytes/sec\" sampleRate=\"PT15S\" unit=\"BytesPerSecond\"><annotation displayName=\"Disk speed\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\Disk Read Bytes/sec\" sampleRate=\"PT15S\" unit=\"BytesPerSecond\"><annotation displayName=\"Disk read speed\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\PhysicalDisk(_Total)\\Disk Write Bytes/sec\" sampleRate=\"PT15S\" unit=\"BytesPerSecond\"><annotation displayName=\"Disk write speed\" locale=\"en-us\"/></PerformanceCounterConfiguration><PerformanceCounterConfiguration counterSpecifier=\"\\LogicalDisk(_Total)\\% Free Space\" sampleRate=\"PT15S\" unit=\"Percent\"><annotation displayName=\"Disk free space (percentage)\" locale=\"en-us\"/></PerformanceCounterConfiguration></PerformanceCounters>",
"wadcfgxstart": "[concat(variables('wadlogs'), variables('wadperfcounters1'), variables('wadperfcounters2'), '<Metrics resourceId=\"')]",
"wadmetricsresourceid": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name , '/providers/', 'Microsoft.Compute/virtualMachines/')]",
"wadcfgxend": "\"><MetricAggregation scheduledTransferPeriod=\"PT1H\"/><MetricAggregation scheduledTransferPeriod=\"PT1M\"/></Metrics></DiagnosticMonitorConfiguration></WadCfg>"
A fenti konfiguráció Metrikadefiníció xml-csomópontja fontos konfigurációelem, mivel meghatározza, hogy a PerformanceCounter csomópontban az xml-ben korábban definiált teljesítményszámlálók hogyan lesznek összesítve és tárolva.
Fontos
Ezek a metrikák vezetik a monitorozási diagramokat és a riasztásokat az Azure Portalon. A resourceID és a MetricAggregation metrikacsomópontnak szerepelnie kell a virtuális gép diagnosztikai konfigurációjában, ha látni szeretné a virtuális gép monitorozási adatait az Azure Portalon.
Az alábbi példa a metrikák definícióihoz tartozó XML-t mutatja be:
<Metrics resourceId="/subscriptions/subscription().subscriptionId/resourceGroups/resourceGroup().name/providers/Microsoft.Compute/virtualMachines/vmName">
<MetricAggregation scheduledTransferPeriod="PT1H"/>
<MetricAggregation scheduledTransferPeriod="PT1M"/>
</Metrics>
A resourceID attribútum egyedileg azonosítja az előfizetésben lévő virtuális gépet. Ügyeljen arra, hogy az előfizetés() és a resourceGroup() függvényeket használja, hogy a sablon automatikusan frissítse ezeket az értékeket a telepített előfizetés és erőforráscsoport alapján.
Ha több virtuális gépet hoz létre egy ciklusban, a resourceID értéket egy copyIndex() függvénnyel kell feltöltenie az egyes virtuális gépek helyes megkülönböztetéséhez. Az xmlCfg érték az alábbiak szerint frissíthető:
"xmlCfg": "[base64(concat(variables('wadcfgxstart'), variables('wadmetricsresourceid'), concat(parameters('vmNamePrefix'), copyindex()), variables('wadcfgxend')))]",
A PT1M és a PT1H MetricAggregation értéke egy percenkénti összesítést, illetve egy óránkénti összesítést jelent.
WADMetrics-táblák a tárolóban
A fenti Metrics-konfiguráció táblákat hoz létre a diagnosztikai tárfiókban az alábbi elnevezési konvenciók használatával:
- WADMetrics: Standard előtag az összes WADMetrics-táblához
- PT1H vagy PT1M: Azt jelzi, hogy a tábla összesített adatokat tartalmaz 1 óra vagy 1 perc alatt
- P10D: Azt jelzi, hogy a tábla az adatok gyűjtésének megkezdésétől számított 10 napig tartalmaz adatokat
- V2S: Sztringállandó
- yyyymmdd: Az a dátum, amikor a tábla megkezdte az adatok gyűjtését
Példa: A WADMetricsPT1HP10DV2S20151108 2015. nov. 11-től kezdődően 10 napon keresztül összesített metrikák adatait tartalmazza
Minden WADMetrics-tábla a következő oszlopokat tartalmazza:
- PartitionKey: A partíciókulcs a resourceID érték alapján jön létre a virtuálisgép-erőforrás egyedi azonosításához. Például:
002Fsubscriptions:<subscriptionID>:002FresourceGroups:002F<ResourceGroupName>:002Fproviders:002FMicrosoft:002ECompute:002FvirtualMachines:002F<vmName>
- Sorkulcs: A formátumot
<Descending time tick>:<Performance Counter Name>
követi. A csökkenő időosztás számítása a maximális időszelet, mínusz az összesítési időszak kezdetének időpontja. Ha például a mintaidőszak 2015. nov. 10-én és 00:00-kor (UTC) kezdődött, akkor a számítás a következő lesz:DateTime.MaxValue.Ticks - (new DateTime(2015,11,10,0,0,0,DateTimeKind.Utc).Ticks)
. A memória rendelkezésre álló bájtteljesítményéhez a sorkulcs számlálója a következőképpen néz ki:2519551871999999999__:005CMemory:005CAvailable:0020Bytes
- CounterName: A teljesítményszámláló neve. Ez megegyezik az xml-konfigurációban definiált counterSpecifier azonosítóval.
- Maximum: A teljesítményszámláló maximális értéke az összesítési időszakban.
- Minimum: A teljesítményszámláló minimális értéke az összesítési időszakban.
- Összeg: Az összesítési időszakban jelentett teljesítményszámláló összes értékének összege.
- Darabszám: A teljesítményszámlálóhoz jelentett értékek teljes száma.
- Átlag: A teljesítményszámláló átlagos (összeg/darabszám) értéke az összesítési időszakban.
Következő lépések
- Egy Windows rendszerű virtuális gép teljes mintasablonja diagnosztikai kiterjesztéssel: vm-monitoring-diagnostics-extension
- Az Azure Resource Manager-sablon üzembe helyezése az Azure PowerShell vagy az Azure parancssor használatával
- További információ az Azure Resource Manager-sablonok készítéséről