Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Metriken der Azure Batch-Kontoplattform liefern Informationen über Pools, Knoten, Kerne, Jobs und Aufgaben. Um die Leistung des Gastbetriebssystems wie CPU-, Speicher-, Festplatten- und Netzwerknutzung zu überwachen, installieren Sie den Azure Monitor Agent (AMA) auf den Pool-Rechenknoten.
In diesem Artikel wird gezeigt, wie:
- Erstelle einen Batch-Pool mit einer vom Benutzer zugewiesenen verwalteten Identität und AMA.
- Erstellen Sie eine Datenerfassungsregel (DCR) für Linux-Leistungszähler und Syslog.
- Verknüpfe den DCR mit der Batch-Pool-Ressource.
- Verifiziere Daten in Log Analytics und Azure Monitor Metrics.
Die Beispiele verwenden Azure CLI und einen Linux-Pool. Die gleiche Architektur unterstützt Windows-Pools mit der Windows AMA-Erweiterung und Windows-Datenquellen.
Important
Die Überwachung von Batch-Pool-Compute-Knoten mit AMA wird nur für Batch-Konten unterstützt, die den User-Subscription-Pool-Allokationsmodus verwenden. Im Batch-Servicepool-Allokationsmodus werden Rechenknoten in Batch-verwalteten Abonnements erstellt, auf die Kunden keinen Zugriff haben.
Wie die Node-Überwachung funktioniert
Ein überwachter Batch-Pool verwendet folgende Ressourcen:
- Ein Batch-Konto im Poolzuweisungsmodus für Benutzerabonnements.
- Ein Batch-Pool mit einer vom Benutzer zugewiesenen verwalteten Identität.
- Die Azure Monitor Agent-Erweiterung wird installiert, wenn der Pool erstellt wird.
- Ein DCR, das die zu sammelnden Daten und die Ziele angibt.
- Eine DCR-Assoziation, deren Ziel die Batch-Pool Azure Resource Manager-Ressource ist.
- Ein Log Analytics-Arbeitsbereich für Logdaten und optional Azure Monitor Metrics für Gastmetriken.
Verknüpfen Sie den DCR mit der Batch-Pool-Ressourcen-ID:
/subscriptions/<subscription-id>/resourceGroups/<resource-group>/
providers/Microsoft.Batch/batchAccounts/<batch-account>/pools/<pool-name>
Verknüpfe den DCR nicht nur mit dem Skalierungsset der virtuellen Maschine, das Batch für den Pool erstellt. Batch verwaltet den Lebenszyklus dieses Skalierungssets. Wenn ein Pool auf null Knoten skaliert, kann Batch das Skalierungsset löschen und bei einer späteren Größenänderung ein neues erstellen.
Log Analytics-Datensätze speichern die Ressourcen-ID der von Batch erstellten Compute-Ressource. Gastmetriken sind für die aktuelle, von Batch erstellte Skalierungsgruppe für virtuelle Computer im Namespace azure.vm.linux.guestmetrics für Linux oder im Namespace Virtual Machine Guest (Windows) für Windows verfügbar.
Voraussetzungen
Bevor Sie beginnen, benötigen Sie Folgendes:
- Ein Azure Batch-Konto im Benutzerabonnement-Poolzuweisungsmodus.
- Berechtigung, Pools über die Batch-Managementebene zu erstellen.
- Ein Log Analytics-Arbeitsbereich.
- Eine vom Benutzer zugewiesene verwaltete Identität im selben Microsoft Entra-Tenant wie das Batch-Konto.
- Erlaubnis zur Erstellung von DCRs und DCR-Assoziationen. Für Details siehe Datensammlungsregeln erstellen und bearbeiten in Azure Monitor.
- Azure CLI ist installiert und für das Abonnement authentifiziert.
Erstellen Sie den DCR, den Log Analytics-Arbeitsbereich und den Batch-Pool in derselben Azure-Region. Wenn der Pool ein virtuelles Netzwerk mit eingeschränktem Outbound-Zugriff nutzt, prüfen Sie die Netzwerkanforderungen von Azure Monitor Agent.
Tip
Pools mit Erweiterungen müssen die Virtual Machine Configuration verwenden. Du kannst keine Erweiterungen zu einem bestehenden Pool hinzufügen. Um AMA hinzuzufügen, zu entfernen oder zu aktualisieren, erstelle einen neuen Pool. Weitere Informationen finden Sie unter Erweiterungen mit Batch-Pools verwenden.
Festlegen von Umgebungsvariablen
Setze Variablen für deine Ressourcen. Ersetzen Sie die folgenden Platzhalterwerte.
subscriptionId="<subscription-id>"
resourceGroup="<resource-group>"
location="<location>"
batchAccount="<batch-account-name>"
poolName="<pool-name>"
workspaceName="<log-analytics-workspace-name>"
identityName="<managed-identity-name>"
dcrName="<data-collection-rule-name>"
az account set --subscription "$subscriptionId"
identityId=$(az identity show \
--resource-group "$resourceGroup" \
--name "$identityName" \
--query id \
--output tsv)
workspaceId=$(az monitor log-analytics workspace show \
--resource-group "$resourceGroup" \
--workspace-name "$workspaceName" \
--query id \
--output tsv)
batchAccountId="/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.Batch/batchAccounts/$batchAccount"
poolResourceId="$batchAccountId/pools/$poolName"
dcrId="/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.Insights/dataCollectionRules/$dcrName"
Erstellen einer Datensammlungsregel
Die folgende Datenerhebungsregel (DCR) sammelt alle 60 Sekunden gängige Linux-Leistungszähler. Es sendet die Zähler sowohl an die Perf Tabelle in Log Analytics als auch an Azure Monitor Metrics. Es sendet außerdem Warnungen und höherwertige Syslog-Datensätze an Log Analytics.
Azure Monitor Metrics ist als Ziel für Leistungsindikatoren von Gästen als Vorschau verfügbar. Für aktuelle Einschränkungen siehe Collect Performance Counters with Azure Monitor Agent.
Erstelle eine Datei namens dcr.json. Ersetzen Sie <location> und <workspace-resource-id> durch Ihre eigenen Werte.
{
"location": "<location>",
"kind": "Linux",
"properties": {
"dataSources": {
"performanceCounters": [
{
"name": "batchNodePerformance",
"streams": [
"Microsoft-Perf",
"Microsoft-InsightsMetrics"
],
"samplingFrequencyInSeconds": 60,
"counterSpecifiers": [
"\\Processor(*)\\% Processor Time",
"\\Processor(*)\\% User Time",
"\\Processor(*)\\% Privileged Time",
"\\Processor(*)\\% Idle Time",
"\\Memory\\% Available Memory",
"\\Memory\\Used Memory MBytes",
"\\Memory\\% Used Memory",
"\\Logical Disk(*)\\% Free Space",
"\\Logical Disk(*)\\Free Megabytes",
"\\Logical Disk(*)\\Disk Reads/sec",
"\\Logical Disk(*)\\Disk Writes/sec",
"\\Logical Disk(*)\\Disk Read Bytes/sec",
"\\Logical Disk(*)\\Disk Write Bytes/sec",
"\\Network(*)\\Total Bytes Transmitted",
"\\Network(*)\\Total Bytes Received",
"\\Network(*)\\Total Bytes",
"\\System\\Uptime"
]
}
],
"syslog": [
{
"name": "batchNodeSyslog",
"streams": [
"Microsoft-Syslog"
],
"facilityNames": [
"auth",
"authpriv",
"cron",
"daemon",
"kern",
"syslog",
"user"
],
"logLevels": [
"Warning",
"Error",
"Critical",
"Alert",
"Emergency"
]
}
]
},
"destinations": {
"logAnalytics": [
{
"name": "batchMonitorWorkspace",
"workspaceResourceId": "<workspace-resource-id>"
}
],
"azureMonitorMetrics": {
"name": "azureMonitorMetrics-default"
}
},
"dataFlows": [
{
"streams": [
"Microsoft-Perf"
],
"destinations": [
"batchMonitorWorkspace"
]
},
{
"streams": [
"Microsoft-InsightsMetrics"
],
"destinations": [
"azureMonitorMetrics-default"
]
},
{
"streams": [
"Microsoft-Syslog"
],
"destinations": [
"batchMonitorWorkspace"
]
}
]
}
}
Erstellen oder aktualisieren Sie die DCR:
az rest \
--method put \
--url "https://management.azure.com${dcrId}?api-version=2022-06-01" \
--body @dcr.json
Informationen zur Auswahl von Zählern und zur Steuerung der Erfassungskosten finden Sie unter Leistungsindikatoren mit Azure Monitor Agent erfassen.
Einen Pool mit Azure Monitor Agent erstellen
Erstelle eine Datei namens pool.json. Das folgende Beispiel verwendet Ubuntu 22.04 und installiert die Linux AMA-Erweiterung. Ersetzen Sie <managed-identity-resource-id> durch den Wert von $identityId.
{
"name": "<pool-name>",
"type": "Microsoft.Batch/batchAccounts/pools",
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<managed-identity-resource-id>": {}
}
},
"properties": {
"vmSize": "STANDARD_D2S_V3",
"taskSlotsPerNode": 1,
"taskSchedulingPolicy": {
"nodeFillType": "Pack"
},
"deploymentConfiguration": {
"virtualMachineConfiguration": {
"imageReference": {
"publisher": "canonical",
"offer": "0001-com-ubuntu-server-jammy",
"sku": "22_04-lts",
"version": "latest"
},
"nodeAgentSkuId": "batch.node.ubuntu 22.04",
"extensions": [
{
"name": "AzureMonitorAgent",
"publisher": "Microsoft.Azure.Monitor",
"type": "AzureMonitorLinuxAgent",
"typeHandlerVersion": "1.0",
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
"settings": {
"authentication": {
"managedIdentity": {
"identifier-name": "mi_res_id",
"identifier-value": "<managed-identity-resource-id>"
}
}
}
}
]
}
},
"scaleSettings": {
"fixedScale": {
"targetDedicatedNodes": 1,
"targetLowPriorityNodes": 0,
"resizeTimeout": "PT15M"
}
}
}
}
Erstellen Sie den Pool mit der Batch-Management-API:
az rest \
--method put \
--url "https://management.azure.com${poolResourceId}?api-version=2024-07-01" \
--body @pool.json
Für einen Windows-Pool verwenden Sie:
- Erweiterungstyp
AzureMonitorWindowsAgent. - Ein Windows-Image und eine kompatible Batch-Node-Agent-SKU.
- Ein Windows DCR mit
kind, das aufWindowsfestgelegt ist. - Windows-Leistungszähler und, falls nötig, Windows-Ereigniserfassung statt Syslog.
Verwende nicht einen DCR für sowohl Windows- als auch Linux-Zähler. Manche Zählernamen lassen sich derselben Metrik zuordnen und verursachen dadurch eine doppelte Erfassung.
Verknüpfe das DCR mit dem Batch-Pool
Erstellen Sie die Zuordnung für die Batchpool-Ressource:
az monitor data-collection rule association create \
--name "batch-pool-monitoring" \
--resource "$poolResourceId" \
--rule-id "$dcrId"
Bestätigen Sie die Verbindung:
az monitor data-collection rule association list \
--resource "$poolResourceId" \
--output table
Die Assoziation bleibt im Pool, wenn Knoten entfernt oder ersetzt werden. Ersetzen Sie sie nicht durch eine Zuordnung, die nur auf die aktuelle, von Batch erstellte VM-Skalierungsgruppe abzielt.
Agent und Protokollerfassung überprüfen
Warten Sie bis zu fünf Minuten, nachdem der Knoten den Leerlaufstatus erreicht hat, bis die ersten Datensätze eintreffen.
Überprüfen Sie den Herzschlag des Agenten
Führen Sie folgende Abfrage im Log Analytics-Arbeitsbereich aus:
Heartbeat
| where TimeGenerated > ago(30m)
| summarize
Samples = count(),
FirstSeen = min(TimeGenerated),
LastSeen = max(TimeGenerated),
AgentVersion = any(Version)
by Computer, _ResourceId
Ein operativer Agent sendet normalerweise pro Minute einen Herzschlag.
Leistungszähler überprüfen
Perf
| where TimeGenerated > ago(30m)
| summarize
Samples = count(),
Average = avg(CounterValue),
P95 = percentile(CounterValue, 95),
Maximum = max(CounterValue)
by Computer, ObjectName, CounterName, InstanceName
| order by ObjectName asc, CounterName asc
Linux-Logik-Festplattenzähler enthalten mehrere Mount-Point-Instanzen. Filtere beim Erstellen von Diagrammen oder Warnungen nach InstanceName, damit schreibgeschützte und temporäre Mounts das Ergebnis nicht verzerren.
Syslog überprüfen
Syslog
| where TimeGenerated > ago(30m)
| project
TimeGenerated,
Computer,
Facility,
SeverityLevel,
ProcessName,
SyslogMessage,
_ResourceId
| order by TimeGenerated desc
Gastmetriken anzeigen
Wenn der DCR den Microsoft-InsightsMetrics-Datenstrom an das Ziel „Azure Monitor Metrics“ sendet, werden Gastmetriken in der aktuell von Batch erstellten Skalierungsgruppe für virtuelle Computer angezeigt.
- Im Azure-Portal öffnen Sie das Skalierungsset der virtuellen Maschine, das Batch für den Pool erstellt hat.
- Klicken Sie auf Metriken.
- Für Metrik-Namespace wählen Sie
azure.vm.linux.guestmetricsfür Linux oder Virtual Machine Guest (Windows) für Windows. - Wählen Sie eine Metrik und aggregieren Sie.
Sie können die aktuelle Compute Resource ID in den aktuellen Perf Datensätzen finden:
Perf
| where TimeGenerated > ago(30m)
| summarize arg_max(TimeGenerated, _ResourceId) by Computer
Note
Wenn ein Pool auf null Knoten skaliert, kann Batch sein Backing Virtual Machine Scale Set löschen. Die Gastmetrik-Ressource ist nicht verfügbar, solange der Skalensatz nicht existiert. Log Analytics-Daten, die bereits im Arbeitsbereich gesammelt wurden, bleiben gemäß den Arbeitsflächen-Aufbewahrungseinstellungen weiterhin verfügbar.
Überwachen Sie Batch-Plattformmetriken mit Knotendaten
Die Node-Gastdaten ergänzen die automatisch gesammelten Metriken der Batch-Kontoplattform. Nutzen Sie beide Quellen:
- Verwenden Sie Metriken des Batch-Kontos wie
TotalNodeCount,RunningNodeCount,IdleNodeCount,UnusableNodeCount,TaskStartEventundTaskCompleteEvent, um den Dienst- und Zeitplanstatus zu überwachen. - Verwenden Sie Gastleistungszähler, um CPU-, Speicher-, Festplatten- und Netzwerkbedingungen auf den Rechenknoten zu untersuchen.
- Verwenden Sie Batch-Service-Logs, um Pool-, Job- und Aufgabenlebenszyklusereignisse mit dem Verhalten des Knotens zu korrelieren.
Für Metrikdefinitionen und Aggregationsrichtlinien siehe Azure Batch monitoring data reference und Monitor Azure Batch.
Fehlersuche bei der Datensammlung
Verwenden Sie die folgenden Prüfungen, wenn keine Daten eintreffen:
| Symptom | Prüfungen |
|---|---|
| Kein Herzschlag | Bestätigen Sie, dass die AMA-Erweiterung erfolgreich bereitgestellt wurde, die vom Benutzer zugewiesene Identität an den Pool angehängt und in den Erweiterungseinstellungen referenziert ist und die erforderlichen Azure Monitor-Endpunkte erreichbar sind. |
| AMA berichtet, dass die Ressource nicht mit einem DCR verbunden ist. | Bestätigen Sie, dass die DCR-Assoziation auf die Batch-Pool-Resource ID abzielt. Eine Assoziation, die nur auf dem Backing Virtual Machine Scale Set basiert, ist kein Ersatz für die Pool-Assoziation. |
Heartbeat kommt an, aber Perf ist leer |
Bestätigen Sie, dass Microsoft-Perf sowohl in der Performance-Counter-Datenquelle als auch in einem Datenfluss enthalten ist, der an Log Analytics sendet. Überprüfen Sie die Zählerpfade und den Typ des DCR-Betriebssystems. |
| Gastmetrik-Namespace ist nicht verfügbar | Bestätigen Sie, dass Microsoft-InsightsMetrics auf azureMonitorMetrics-default verweist, warten Sie einige Minuten, bis die Aggregation abgeschlossen ist, und bestätigen Sie, dass der Pool derzeit Knoten und eine zugrunde liegende Skalierungsgruppe enthält. |
| Doppelte Datensätze | Prüfen Sie, ob mehrere DCRs dieselben Daten aus dem Pool sammeln. Doppelte Datenerfassung erhöht die Erfassungskosten. |
Für AMA-Logstandorte und Festplattenanforderungen siehe Azure Monitor Agent-Anforderungen. Für Batch-Allokation und Knotenfehler siehe Azure Batch pool und Knotenfehler.
Kostenaspekte
Azure Monitor-Gebühren können für Log Analytics-Aufnahme, -Speicherung, Warnungen und andere aktivierte Funktionen anfallen. Um die Kosten zu kontrollieren:
- Sammle nur die Zähler und Protokolle, die für deine Überwachungsziele erforderlich sind.
- Verwenden Sie eine Abtastfrequenz, die für Ihre Arbeitsbelastung geeignet ist.
- Filtern Sie Festplattendaten in Abfragen und Warnungen nach sinnvollen Mount-Point-Instanzen.
- Ordnen Sie demselben Pool keine sich überschneidenden DCRs zu.
- Überprüfen Sie die Aufbewahrungseinstellungen für den Arbeitsbereich.
Weitere Informationen finden Sie unter Azure Monitor Kosten und Nutzung und Plan zur Kostenverwaltung für Azure Batch.
Bereinigen von Ressourcen
Wenn du den überwachten Pool nicht mehr brauchst, lösche den Pool und alle Überwachungsressourcen, die nicht mit anderen Workloads geteilt werden.
Um die Pool-Konfiguration beizubehalten, ohne weiterhin Rechenknoten ausführen zu müssen, vergrößern Sie den Pool auf null:
az batch account login \
--resource-group "$resourceGroup" \
--name "$batchAccount"
az batch pool resize \
--pool-id "$poolName" \
--target-dedicated-nodes 0 \
--target-low-priority-nodes 0
Die Skalierung auf null kann die zugrunde liegende Skalierungsgruppe für virtuelle Computer entfernen. Daten, die bereits in Log Analytics gespeichert sind, bleiben gemäß den Einstellungen für Arbeitsbereichsspeicherung weiterhin verfügbar.