Sdílet prostřednictvím


Použití monitorování a diagnostiky s využitím virtuálních počítačů s Windows a šablon Azure Resource Manageru

Rozšíření Azure Diagnostics poskytuje možnosti monitorování a diagnostiky na virtuálním počítači Azure se systémem Windows. Tyto funkce můžete na virtuálním počítači povolit zahrnutím rozšíření jako součásti šablony Azure Resource Manageru. Další informace o zahrnutí jakéhokoli rozšíření jako součásti šablony virtuálního počítače najdete v tématu Vytváření šablon Azure Resource Manageru s rozšířeními virtuálních počítačů. Tento článek popisuje, jak přidat rozšíření Azure Diagnostics do šablony virtuálního počítače s Windows.

Přidání rozšíření Azure Diagnostics do definice prostředku virtuálního počítače

Pokud chcete na virtuálním počítači s Windows povolit rozšíření diagnostiky, musíte do šablony Resource Manageru přidat rozšíření jako prostředek virtuálního počítače.

Pro jednoduchý virtuální počítač založený na Resource Manageru přidejte konfiguraci rozšíření do pole prostředků pro virtuální počítač:

"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"
            }
        }
    }
]

Další běžnou konvencí je přidání konfigurace rozšíření do kořenového uzlu prostředků šablony místo toho, abyste ji definovali v uzlu prostředků virtuálního počítače. Při tomto přístupu musíte explicitně zadat hierarchický vztah mezi rozšířením a virtuálním počítačem s hodnotami názvu a typu . Příklad:

"name": "[concat(variables('vmName'),'Microsoft.Insights.VMDiagnosticsSettings')]",
"type": "Microsoft.Compute/virtualMachines/extensions",

Rozšíření je vždy přidružené k virtuálnímu počítači, můžete ho buď přímo definovat v uzlu prostředku virtuálního počítače, nebo ho definovat přímo na základní úrovni a pomocí hierarchické zásady pojmenování ho přidružit k virtuálnímu počítači.

Pro Virtual Machine Scale Sets je konfigurace rozšíření zadána v extensionProfile vlastnost VirtualMachineProfile.

Vlastnost vydavatele s hodnotou Microsoft.Azure.Diagnostics a vlastností typu s hodnotou IaaSDiagnostics jedinečně identifikuje rozšíření Azure Diagnostics.

Hodnotu vlastnosti name lze použít k odkazování na rozšíření ve skupině prostředků. Nastavení konkrétně na Microsoft.Insights.VMDiagnosticsSettings umožňuje snadnou identifikaci na webu Azure Portal, aby se grafy monitorování zobrazovaly správně na webu Azure Portal.

TypeHandlerVersion určuje verzi rozšíření, kterou chcete použít. Nastavení podverze autoUpgradeMinorVersion na true zajistí, že získáte nejnovější podverzi rozšíření, která je k dispozici. Důrazně doporučujeme vždy nastavit autoUpgradeMinorVersion tak, abyste vždy používali nejnovější dostupné rozšíření diagnostiky se všemi novými funkcemi a opravami chyb.

Element settings obsahuje vlastnosti konfigurace pro rozšíření, které lze nastavit a číst zpět z rozšíření (někdy označované jako veřejná konfigurace). Vlastnost xmlcfg obsahuje konfiguraci založenou na jazyce XML pro diagnostické protokoly, čítače výkonu atd. shromažďované diagnostickým agentem. Další informace o samotném schématu xml najdete v tématu Schéma konfigurace diagnostiky. Běžným postupem je uložit skutečnou konfiguraci XML jako proměnnou v šabloně Azure Resource Manageru a pak je zřetězením a kódováním base64 nastavit hodnotu xmlcfg. Další informace o ukládání xml do proměnných najdete v části o diagnostických konfiguračních proměnných. Vlastnost storageAccount určuje název účtu úložiště, do kterého se přenášejí diagnostická data.

Vlastnosti v protectedSettings (někdy označované jako privátní konfigurace) je možné nastavit, ale po nastavení se nedají číst zpět. Povaha ochranySettings jen pro zápis je užitečná pro ukládání tajných kódů, jako je klíč účtu úložiště, do kterého se zapisují diagnostická data.

Zadání účtu úložiště diagnostiky jako parametrů

Výše uvedený fragment kódu JSON rozšíření diagnostiky předpokládá dva parametry existingdiagnosticsStorageAccountName a existingdiagnosticsStorageResourceGroup k určení účtu úložiště diagnostiky, ve kterém jsou uložena diagnostická data. Zadání účtu úložiště diagnostiky jako parametr usnadňuje změnu účtu úložiště diagnostiky v různých prostředích, například pro účely testování a jiného účtu úložiště diagnostiky pro produkční nasazení.

"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"
    }
}

Osvědčeným postupem je zadat účet úložiště diagnostiky v jiné skupině prostředků než skupina prostředků virtuálního počítače. Skupinu prostředků je možné považovat za jednotku nasazení s vlastní životností, virtuální počítač je možné nasadit a znovu nasadit, protože do ní budou provedeny nové aktualizace konfigurací, ale možná budete chtít pokračovat v ukládání diagnostických dat do stejného účtu úložiště v rámci těchto nasazení virtuálních počítačů. Účet úložiště v jiném prostředku umožňuje účtu úložiště přijímat data z různých nasazení virtuálních počítačů, což usnadňuje řešení problémů napříč různými verzemi.

Poznámka:

Pokud vytvoříte šablonu virtuálního počítače s Windows ze sady Visual Studio, může být výchozí účet úložiště nastavený tak, aby používal stejný účet úložiště, ve kterém je virtuální pevný disk nahraný. Tím se zjednoduší počáteční nastavení virtuálního počítače. Přefaktorujte šablonu tak, aby používala jiný účet úložiště, který se dá předat jako parametr.

Proměnné konfigurace diagnostiky

Předchozí fragment kódu JSON rozšíření diagnostiky definuje proměnnou accountid , která zjednodušuje získání klíče účtu úložiště pro diagnostické úložiště:

"accountid": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/',parameters('existingdiagnosticsStorageResourceGroup'), '/providers/','Microsoft.Storage/storageAccounts/', parameters('existingdiagnosticsStorageAccountName'))]"

Vlastnost xmlcfg pro rozšíření diagnostiky je definována pomocí více proměnných, které jsou zřetězeny dohromady. Hodnoty těchto proměnných jsou ve formátu XML, takže musí být při nastavování proměnných JSON správně ucházené.

Následující příklad popisuje kód XML konfigurace diagnostiky, který shromažďuje standardní čítače výkonu na úrovni systému spolu s některými protokoly událostí systému Windows a protokoly diagnostické infrastruktury. Byla správně naformátována a řídicím znakem, aby bylo možné konfiguraci přímo vložit do oddílu proměnných šablony. Podívejte se na schéma konfigurace diagnostiky, kde najdete přehlednější příklad xml konfigurace.

"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>"

Uzel XML definice metrik ve výše uvedené konfiguraci je důležitým prvkem konfigurace, protože definuje, jak se čítače výkonu definované dříve v uzlu PerformanceCounter agregují a ukládají.

Důležité

Tyto metriky řídí monitorovací grafy a výstrahy na webu Azure Portal. Pokud chcete zobrazit data monitorování virtuálních počítačů na webu Azure Portal, musí být uzel Metriky s ID prostředku a metrikami součástí konfigurace diagnostiky pro váš virtuální počítač.

Následující příklad ukazuje xml pro definice metrik:

<Metrics resourceId="/subscriptions/subscription().subscriptionId/resourceGroups/resourceGroup().name/providers/Microsoft.Compute/virtualMachines/vmName">
    <MetricAggregation scheduledTransferPeriod="PT1H"/>
    <MetricAggregation scheduledTransferPeriod="PT1M"/>
</Metrics>

Atribut resourceID jednoznačně identifikuje virtuální počítač ve vašem předplatném. Nezapomeňte použít funkce subscription() a resourceGroup(), aby šablona tyto hodnoty automaticky aktualizovala na základě předplatného a skupiny prostředků, do které nasazujete.

Pokud vytváříte více virtuálních počítačů ve smyčce, musíte hodnotu resourceID naplnit funkcí copyIndex(), abyste správně odlišili jednotlivé virtuální počítače. Hodnotu xmlCfg lze aktualizovat tak, aby podporovala následující:

"xmlCfg": "[base64(concat(variables('wadcfgxstart'), variables('wadmetricsresourceid'), concat(parameters('vmNamePrefix'), copyindex()), variables('wadcfgxend')))]",

Hodnota MetricAggregation PT1M a PT1H označuje agregaci za minutu a agregaci za hodinu.

Tabulky WADMetrics v úložišti

Konfigurace metrik výše vygeneruje tabulky v účtu úložiště diagnostiky s následujícími zásadami vytváření názvů:

  • WADMetrics: Standardní předpona pro všechny tabulky WADMetrics
  • PT1H nebo PT1M: Označuje, že tabulka obsahuje agregovaná data za 1 hodinu nebo 1 minutu.
  • P10D: Označuje, že tabulka obsahuje data po dobu 10 dnů od zahájení shromažďování dat.
  • V2S: Řetězcová konstanta
  • yyyymmdd: Datum, kdy tabulka začala shromažďovat data

Příklad: WADMetricsPT1HP10DV2S20151108 obsahuje data metrik agregovaná po dobu 10 dnů od 11. listopadu 2015.

Každá tabulka WADMetrics obsahuje následující sloupce:

  • PartitionKey: Klíč oddílu se sestaví na základě hodnoty resourceID pro jedinečnou identifikaci prostředku virtuálního počítače. Příklad: 002Fsubscriptions:<subscriptionID>:002FresourceGroups:002F<ResourceGroupName>:002Fproviders:002FMicrosoft:002ECompute:002FvirtualMachines:002F<vmName>
  • RowKey: Řídí se formátem <Descending time tick>:<Performance Counter Name>. Výpočet sestupného časového intervalu je max time ticks minus čas začátku agregačního období. Pokud například ukázkové období začalo 10. listopadu 2015 a 00:00:00 UTC, bude výpočet: DateTime.MaxValue.Ticks - (new DateTime(2015,11,10,0,0,0,DateTimeKind.Utc).Ticks). V případě výkonu dostupné paměti čítače klíče řádku vypadá takto: 2519551871999999999__:005CMemory:005CAvailable:0020Bytes
  • CounterName: Je název čítače výkonu. To odpovídá čítači definovanému v konfiguraci XML.
  • Maximum: Maximální hodnota čítače výkonu v agregačním období.
  • Minimum: Minimální hodnota čítače výkonu v agregačním období.
  • Celkem: Součet všech hodnot čítače výkonu hlášených v agregačním období.
  • Počet: Celkový počet hodnot hlášených pro čítač výkonu.
  • Průměr: Průměrná hodnota čítače výkonu (celkem/počet) v agregačním období.

Další kroky