Monitorozás és diagnosztika használata Windows rendszerű virtuális géppel és Azure Resource Manager-sablonokkal

A Azure Diagnostics bővítmény monitorozási és diagnosztikai képességeket biztosít egy Windows-alapú Azure-beli virtuális gépen. Ezeket a képességeket úgy engedélyezheti a virtuális gépen, hogy az Azure Resource Manager sablon részeként beleveszi a bővítményt. További információt az Azure Resource Manager-sablonok létrehozása virtuálisgép-bővítményekkel című témakörben talál a bővítmények virtuálisgép-sablon részeként történő hozzáadásáról. Ez a cikk azt ismerteti, hogyan adhatja hozzá a Azure Diagnostics bővítményt egy Windows rendszerű virtuálisgép-sablonhoz.

A Azure Diagnostics bővítmény hozzáadása a virtuális gép erőforrás-definícióhoz

Ha engedélyezni szeretné a diagnosztikai bővítményt egy Windows rendszerű virtuális gépen, 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ömbhöz:

"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ó, hogy a bővítménykonfigurációt a sablon gyökérerőforrás-csomópontján adja hozzá ahelyett, hogy a virtuális gép erőforrás-csomópontjában definiálja. 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év és a típusértékekkel . Például:

"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ás-csomópontja alatt, vagy definiálhatja az alapszinten, és a hierarchikus elnevezési konvencióval társíthatja a virtuális géphez.

A Virtual Machine Scale Sets esetében a bővítmények konfigurációja a VirtualMachineProfileextensionProfile tulajdonságában van megadva.

A Microsoft.Azure.Diagnostics értékkel és az IaaSDiagnostics értékkel rendelkező type tulajdonság egyedileg azonosítja a Azure Diagnostics bővítményt.

A name tulajdonság értéke használható az erőforráscsoport bővítményére való hivatkozáshoz. Ha kifejezetten a Microsoft.Insights.VMDiagnosticsSettings értékre állítja, a Azure Portal könnyen azonosíthatja, így biztosítva, hogy a monitorozási diagramok megfelelően jelenjenek meg a Azure Portal.

A typeHandlerVersion a használni kívánt bővítmény verzióját adja meg. Az autoUpgradeMinorVersion alverzió true (igaz ) értékre állítása biztosítja, hogy a bővítmény legújabb alverzióját kapja meg. Erősen ajánlott mindig az autoUpgradeMinorVersion beállítást mindig igaz értékre állítani, hogy mindig a legújabb elérhető diagnosztikai bővítményt használhassa az összes új funkcióval és hibajavítással.

A beállítások elem 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, a teljesítményszámlálókhoz stb. a diagnosztikai ügynök által gyűjtött adatokat. Magáról 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 base64 kódolással beállítja az xmlcfg értékét. Az XML változókban való tárolásával kapcsolatos további információkért tekintse meg a diagnosztikai konfigurációs változókról szóló szakaszt. A storageAccount tulajdonság annak a tárfióknak a nevét adja meg, amelybe a diagnosztikai adatok átkerülnek.

A protectedSettings (más néven privát konfigurá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 hasznossá teszi a titkos kulcsok, például a tárfiókkulcs tárolását, ahol a diagnosztikai adatok meg vannak írva.

Diagnosztikai tárfiók megadása paraméterekként

A fenti diagnosztikabővítmény json-kódrészlete két paramétert feltételez a existingdiagnosticsStorageAccountName és a existingdiagnosticsStorageResourceGroup paramétert a diagnosztikai tárfiók megadásához, ahol 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 üzembe helyezéshez.

"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 egy másik erőforráscsoportban megadni, mint a virtuális gép erőforráscsoportját. Az erőforráscsoportok a saját élettartamukkal rendelkező üzembehelyezési egységnek tekinthetők, a virtuális gépek üzembe helyezhetők és újra üzembe helyezhetők, mivel az új konfigurációfrissítések frissülnek, de érdemes lehet továbbra is ugyanabban a tárfiókban tárolni a diagnosztikai adatokat a virtuális gépek üzemelő példányai között. Ha a tárfiókot egy másik erőforrásban tárolja, a tárfiók különböző virtuálisgép-telepítések adatait fogadhatja el, így egyszerűen elháríthatja a különböző verziók problémáit.

Megjegyzés

Ha windowsos 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 virtuális merevlemeze fel van töltve. Ez leegyszerűsíti a virtuális gép kezdeti beállítását. A sablon újraszámozásával egy másik, paraméterként átadható tárfiókot használjon.

Diagnosztikai konfigurációs változók

Az előző diagnosztikabővítmény json-kódrészlete egy accountid változót határoz meg, amely leegyszerűsíti a diagnosztikai tár tárfiókkulcsának lekérését:

"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 helyesen kell feloldani őket a json-változók beállításakor.

Az alábbi példa a diagnosztikai konfiguráció xml-fájlját ismerteti, 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 feloldotta é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áért tekintse meg a Diagnosztikai konfigurációs sémát .

"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ópont xml-jében korábban definiált teljesítményszámlálók hogyan legyenek összesítve és tárolva.

Fontos

Ezek a metrikák vezetik a monitorozási diagramokat és riasztásokat a Azure Portal. Az erőforrás-azonosítóval és a MetricAggregation paraméterrel rendelkező Metrics csomópontnak szerepelnie kell a virtuális gép diagnosztikai konfigurációjában, ha meg szeretné tekinteni a virtuális gép monitorozási adatait a Azure Portal.

Az alábbi példa a metrikadefiníciók xml-fájljá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. Győződjön meg arról, hogy az subscription() és resourceGroup() függvényeket használja, hogy a sablon automatikusan frissítse ezeket az értékeket azon előfizetés és erőforráscsoport alapján, amelybe telepít.

Ha több Virtual Machines hoz létre egy hurokban, az egyes virtuális gépek helyes megkülönböztetéséhez egy copyIndex() függvénnyel kell feltöltenie a resourceID értéket. 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 PT1H MetricAggregation értéke egy percenkénti összesítést, illetve egy óránkénti összesítést jelöl.

WADMetrics-táblák a tárolóban

A fenti Metrics-konfiguráció táblákat hoz létre a diagnosztikai tárfiókban a következő elnevezési konvenciók szerint:

  • WADMetrics: Standard előtag az összes WADMetrics-táblához
  • PT1H vagy PT1M: Azt jelzi, hogy a tábla 1 óra vagy 1 perc alatt összesített adatokat tartalmaz
  • P10D: Azt jelzi, hogy a tábla 10 napig tartalmaz adatokat attól a naptól kezdve, amikor a tábla megkezdte az adatgyűjtést
  • V2S: Sztringállandó
  • yymmdd: Az a dátum, amikor a tábla megkezdte az adatgyűjtést

Példa: A WADMetricsPT1HP10DV2S20151108 2015. nov. 11-től kezdődően 10 napra összesített metrikaadatokat tartalmaz.

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>
  • RowKey: 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őosztás az összesítési időszak kezdetének időpontjával. 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ájtok teljesí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 számláló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.
  • Összesen: 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 (össz/darabszám) értéke az összesítési időszakban.

Következő lépések