Senden von Gastbetriebssystemmetriken an den Metrikspeicher von Azure Monitor unter Verwendung einer Azure Resource Manager-Vorlage für eine VM-Skalierungsgruppe von Windows
Hinweis
Der Azure Monitor-Agent (AMA) sammelt Überwachungsdaten vom Gastbetriebssystem von Azure-VMs und Hybrid-VMs sowie Virtual Machine Scale Sets und übermittelt sie an Azure Monitor für die Verwendung durch Features sowie für Erkenntnisse und andere Dienste wie Microsoft Sentinel und Microsoft Defender for Cloud.
Es wird empfohlen, den Azure Monitor-Agent zum Sammeln von Protokollen und Metriken aus Virtual Machine Scale Sets zu verwenden. Weitere Informationen finden Sie in der Übersicht über den Azure Monitor-Agent.
Die Azure-Diagnoseerweiterung für Windows (Windows Azure Diagnostics, WAD) von Azure Monitor ermöglicht es Ihnen, Metriken und Protokolle von einem Gastbetriebssystem (Gast-BS) zu erfassen, das als Teil eines virtuellen Computers, eines Clouddiensts oder eines Azure Service Fabric-Clusters ausgeführt wird. Die Erweiterung kann Telemetriedaten an viele verschiedene Standorte senden, die im zuvor verlinkten Artikel aufgeführt sind.
In diesem Artikel wird der Prozess zum Senden von Leistungsmetriken des Gastbetriebssystems für eine VM-Skalierungsgruppe von Windows an den Azure Monitor-Datenspeicher beschrieben. Ab Version 1.11 von Microsoft Azure-Diagnose können Sie Metriken direkt in den Azure Monitor-Metrikspeicher schreiben, in dem bereits Metriken der Standardplattformen gesammelt werden. Wenn Sie diesen Speicherort verwenden möchten, können Sie die gleichen Aktionen wie für Plattformmetriken nutzen. Zu den Aktionen gehören Benachrichtigung nahezu in Echtzeit, Diagrammerstellung, Routing, Zugriff über eine REST-API und vieles mehr. In der Vergangenheit hat die Microsoft Azure-Diagnoseerweiterung in Azure Storage geschrieben, aber nicht in den Azure Monitor-Datenspeicher.
Wenn Sie noch nicht mit Resource Manager-Vorlagen vertraut sind, informieren Sie sich über Vorlagenbereitstellungen sowie deren Struktur und Syntax.
Hinweis
Es wird empfohlen, das Azure Az PowerShell-Modul für die Interaktion mit Azure zu verwenden. Informationen zu den ersten Schritten finden Sie unter Installieren von Azure PowerShell. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.
Voraussetzungen
Ihr Abonnement muss mit Microsoft.Insights registriert werden.
Sie müssen Azure PowerShell installiert haben, oder Sie können Azure Cloud Shell verwenden.
Einrichten von Azure Monitor als Datensenke
Die Azure-Diagnoseerweiterung verwendet eine Feature namens Datensenken, um Metriken und Protokolle an verschiedene Orte zu leiten. Die folgenden Schritte zeigen, wie Sie eine Resource Manager-Vorlage und PowerShell verwenden, um eine VM mit der neuen Datensenke „Azure Monitor“ bereitzustellen.
Erstellen einer Resource Manager-Vorlage
Für dieses Beispiel können Sie eine öffentlich verfügbare Beispielvorlage verwenden:
Azuredeploy.json ist eine vorkonfigurierte Resource Manager-Vorlage für die Bereitstellung einer VM-Skalierungsgruppe.
Azuredeploy.parameters.json ist eine Parameterdatei, die Informationen wie Benutzername und Kennwort speichert, die Sie für Ihre VM festlegen. Während der Bereitstellung verwendet die Resource Manager-Vorlage die in dieser Datei festgelegten Parameter.
Laden Sie beide Dateien herunter und speichern Sie sie lokal.
Ändern von azuredeploy.parameters.json
Öffnen Sie die Datei azuredeploy.parameters.json:
- Geben Sie eine vmSKU an, die Sie bereitstellen möchten. Empfehlung: Standard_D2_v3.
- Geben Sie eine windowsOSVersion an, die Sie für Ihre VM-Skalierungsgruppe verwenden möchten. Empfehlung: 2016-Datacenter.
- Benennen Sie die bereitzustellende VM-Skalierungsgruppe mithilfe einer vmssName-Eigenschaft. Beispiel: VMSS-WAD-TEST.
- Geben Sie über die instanceCount-Eigenschaft die Anzahl der VMs an, die Sie in der VM-Skalierungsgruppe ausführen möchten.
- Geben Sie Werte für adminUsername und adminPassword für die VM-Skalierungsgruppe ein. Diese Parameter werden für den Remotezugriff auf die VMs in der Skalierungsgruppe verwendet. Verwenden Sie nicht die in dieser Vorlage enthaltenen Werte, um eine Übernahme Ihrer VM zu vermeiden. Bots durchsuchen das Internet nach Benutzernamen und Kennwörtern in öffentlichen GitHub-Repositorys. Es ist wahrscheinlich, dass sie VMs mit diesen Standardwerten testen.
Ändern von azuredeploy.json
Öffnen Sie die Datei azuredeploy.json.
Fügen Sie eine Variable hinzu, um die Informationen zum Speicherkonto in der Resource Manager-Vorlage zu speichern. Alle Protokolle und Leistungsindikatoren, die in der Diagnosekonfigurationsdatei angegeben sind, werden in den Metrikspeicher von Azure Monitor und das angegebene Speicherkonto geschrieben:
"variables": {
//add this line
"storageAccountName": "[concat('storage', uniqueString(resourceGroup().id))]",
...
}
Suchen Sie die Definition der VM-Skalierungsgruppe im Abschnitt „resources“, und fügen Sie der Konfiguration den Abschnitt identity hinzu. Mit dieser Ergänzung wird sichergestellt, dass Azure eine Systemidentität zuweist. Dieser Schritt stellt auch sicher, dass die VMs in der Skalierungsgruppe Gastmetriken über sich selbst an Azure Monitor senden können:
{
"type": "Microsoft.Compute/virtualMachineScaleSets",
"name": "[variables('namingInfix')]",
"location": "[resourceGroup().location]",
"apiVersion": "2017-03-30",
//add these lines below
"identity": {
"type": "systemAssigned"
},
//end of lines to add
...
}
Suchen Sie in der VM-Skalierungsgruppenressource den Abschnitt virtualMachineProfile. Fügen Sie ein neues Profil namens extensionsProfile hinzu, um Erweiterungen zu verwalten.
Fügen Sie der Vorlage in extensionProfile eine neue Erweiterung hinzu, wie im Abschnitt zur VMSS-WAD-Erweiterung veranschaulicht. Dieser Abschnitt ist die Erweiterung für verwaltete Identitäten für Azure-Ressourcen, die sicherstellt, dass die ausgegebenen Metriken von Azure Monitor akzeptiert werden. Das Feld Name kann einen beliebigen Namen enthalten.
Mit dem folgenden Code aus der MSI-Erweiterung wird die Diagnoseerweiterung und -konfiguration der VM-Skalierungsgruppenressource auch als Erweiterungsressource hinzugefügt. Sie können Leistungsindikatoren nach Bedarf hinzufügen oder entfernen:
"extensionProfile": {
"extensions": [
// BEGINNING of added code
// Managed identities for Azure resources
{
"name": "VMSS-WAD-extension",
"properties": {
"publisher": "Microsoft.ManagedIdentity",
"type": "ManagedIdentityExtensionForWindows",
"typeHandlerVersion": "1.0",
"autoUpgradeMinorVersion": true,
"settings": {
"port": 50342
},
"protectedSettings": {}
}
},
// add diagnostic extension. (Remove this comment after pasting.)
{
"name": "[concat('VMDiagnosticsVmExt','_vmNodeType0Name')]",
"properties": {
"type": "IaaSDiagnostics",
"autoUpgradeMinorVersion": true,
"protectedSettings": {
"storageAccountName": "[variables('storageAccountName')]",
"storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')),'2015-05-01-preview').key1]",
"storageAccountEndPoint": "https://core.windows.net/"
},
"publisher": "Microsoft.Azure.Diagnostics",
"settings": {
"WadCfg": {
"DiagnosticMonitorConfiguration": {
"overallQuotaInMB": "50000",
"PerformanceCounters": {
"scheduledTransferPeriod": "PT1M",
"sinks": "AzMonSink",
"PerformanceCounterConfiguration": [
{
"counterSpecifier": "\\Memory\\% Committed Bytes In Use",
"sampleRate": "PT15S"
},
{
"counterSpecifier": "\\Memory\\Available Bytes",
"sampleRate": "PT15S"
},
{
"counterSpecifier": "\\Memory\\Committed Bytes",
"sampleRate": "PT15S"
}
]
},
"EtwProviders": {
"EtwEventSourceProviderConfiguration": [
{
"provider": "Microsoft-ServiceFabric-Actors",
"scheduledTransferKeywordFilter": "1",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricReliableActorEventTable"
}
},
{
"provider": "Microsoft-ServiceFabric-Services",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricReliableServiceEventTable"
}
}
],
"EtwManifestProviderConfiguration": [
{
"provider": "cbd93bc2-71e5-4566-b3a7-595d8eeca6e8",
"scheduledTransferLogLevelFilter": "Information",
"scheduledTransferKeywordFilter": "4611686018427387904",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricSystemEventTable"
}
}
]
}
},
"SinksConfig": {
"Sink": [
{
"name": "AzMonSink",
"AzureMonitor": {}
}
]
}
},
"StorageAccount": "[variables('storageAccountName')]"
},
"typeHandlerVersion": "1.11"
}
}
]
},
// end of added code. Be sure that the number and type of brackets match properly when done.
{
"type": "Microsoft.Insights/autoscaleSettings",
...
}
Fügen Sie dependsOn für das Speicherkonto hinzu, um sicherzustellen, dass es in der richtigen Reihenfolge erstellt wird:
"dependsOn": [
"[concat('Microsoft.Network/loadBalancers/', variables('loadBalancerName'))]",
"[concat('Microsoft.Network/virtualNetworks/', variables('virtualNetworkName'))]",
//add this line below
"[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]"
]
Erstellen Sie ein Speicherkonto, wenn dieses nicht bereits in der Vorlage erstellt wurde:
"resources": [
// add this code
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('storageAccountName')]",
"apiVersion": "2015-05-01-preview",
"location": "[resourceGroup().location]",
"properties": {
"accountType": "Standard_LRS"
}
},
// end added code
{
"type": "Microsoft.Network/virtualNetworks",
"name": "[variables('virtualNetworkName')]",
...
}
]
Speichern und schließen Sie beide Dateien.
Bereitstellen der Resource Manager-Vorlage
Hinweis
Sie müssen die Azure-Diagnoseerweiterung Version 1.5 oder höher ausführen und die autoUpgradeMinorVersion: -Eigenschaft in Ihrer Resource Manager-Vorlage auf TRUE festgelegt haben. Azure lädt dann die richtige Erweiterung, wenn die VM gestartet wird. Wenn diese Einstellungen in Ihrer Vorlage nicht vorhanden sind, ändern Sie sie, und stellen Sie die Vorlage erneut bereit.
Für die Bereitstellung der Resource Manager-Vorlage wird Azure PowerShell verwendet:
Starten Sie PowerShell.
Melden Sie sich mit
Login-AzAccount
bei Azure an.Rufen Sie Ihre Liste der Abonnements mit
Get-AzSubscription
ab.Legen Sie das Abonnement fest, das Sie erstellen, oder aktualisieren Sie den virtuellen Computer:
Select-AzSubscription -SubscriptionName "<Name of the subscription>"
Erstellen Sie eine neue Ressourcengruppe für die bereitzustellende VM. Führen Sie den folgenden Befehl aus:
New-AzResourceGroup -Name "VMSSWADtestGrp" -Location "<Azure Region>"
Führen Sie die folgenden Befehle aus, um den virtuellen Computers bereitzustellen:
Hinweis
Wenn Sie eine bestehende Skalierungsgruppe aktualisieren möchten, fügen Sie an das Ende des folgenden Befehls -Mode Incremental an.
New-AzResourceGroupDeployment -Name "VMSSWADTest" -ResourceGroupName "VMSSWADtestGrp" -TemplateFile "<File path of your azuredeploy.JSON file>" -TemplateParameterFile "<File path of your azuredeploy.parameters.JSON file>"
Nach der erfolgreichen Bereitstellung sollte die VM-Skalierungsgruppe im Azure-Portal angezeigt werden. Sie sollte Metriken an Azure Monitor ausgeben.
Hinweis
Möglicherweise treten im Bereich um die vmSkuSize Fehler auf. Wechseln Sie in diesem Fall zurück zu Ihrer Datei azuredeploy.json, und aktualisieren Sie den Standardwert des Parameters vmSkuSize. Es wird empfohlen, Standard_DS1_v2 zu versuchen.
Erfassen Ihrer Metriken
Melden Sie sich beim Azure-Portal an.
Wählen Sie im Menü auf der linken Seite Monitor aus.
Wählen Sie auf der Seite Monitor die Option Metriken aus.
Ändern Sie den Aggregationszeitraum in Letzte 30 Minuten.
Wählen Sie im Dropdownliste mit den Ressourcen die VM-Skalierungsgruppe aus, die Sie erstellt haben.
Wählen Sie im Dropdownmenü „Namespaces“ die Option VM-Gast aus.
Wählen Sie im Dropdownmenü mit den Metriken Arbeitsspeicher > Zugesicherte verwendete Bytes (%) aus.
Sie können dann auch die Verwendung der Dimensionen zu dieser Metrik auswählen, um diese für eine bestimmte VM oder für jede VM in der Skalierungsgruppe zu zeichnen.
Nächste Schritte
- Erfahren Sie mehr über benutzerdefinierte Metriken.