Monitoraggio delle prestazioni con l'estensione Diagnostica di Microsoft Azure
Questo documento illustra la procedura necessaria per configurare la raccolta dei contatori delle prestazioni tramite l'estensione Diagnostica di Microsoft Azure per i cluster Windows. Per i cluster Linux, configurare l'agente di Log Analytics per raccogliere i contatori delle prestazioni per i nodi.
Nota
Perché questa procedura funzioni, l'estensione Diagnostica di Microsoft Azure deve essere distribuita nel cluster. Se non è configurata, vedere Aggregazione e raccolta di eventi con Diagnostica di Microsoft Azure.
Nota
È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.
Raccogliere i contatori delle prestazioni tramite WadCfg
Per raccogliere i contatori delle prestazioni tramite Diagnostica di Microsoft Azure, è necessario modificare correttamente la configurazione nel modello di Resource Manager del cluster. Seguire questa procedura per aggiungere al modello un contatore delle prestazioni che si vuole raccogliere ed eseguire un aggiornamento delle risorse di Resource Manager.
Trovare la configurazione di Diagnostica di Microsoft Azure nel modello del cluster:
WadCfg
. Si aggiungeranno contatori delle prestazioni da raccogliere inDiagnosticMonitorConfiguration
.Impostare la configurazione per raccogliere i contatori delle prestazioni aggiungendo la sezione seguente a
DiagnosticMonitorConfiguration
."PerformanceCounters": { "scheduledTransferPeriod": "PT1M", "PerformanceCounterConfiguration": [] }
scheduledTransferPeriod
definisce la frequenza con cui i valori dei contatori raccolti vengono trasferiti alla tabella di archiviazione di Azure e ai sink configurati.Aggiungere i contatori delle prestazioni che si vuole raccogliere all'elemento
PerformanceCounterConfiguration
dichiarato nel passaggio precedente. Ogni contatore che si vuole raccogliere viene definito concounterSpecifier
,sampleRate
,unit
,annotation
ed eventualisinks
pertinenti.
Di seguito è riportato un esempio di configurazione con il contatore Tempo totale processore (tempo in cui la CPU ha eseguito le operazioni di elaborazione) e le chiamate al metodo di Service Fabric Actor al secondo, uno dei contatori delle prestazioni personalizzati di Service Fabric. Vedere Contatori delle prestazioni di Actor affidabili e Contatori delle prestazioni del Servizio affidabili per un elenco completo dei contatori delle prestazioni affidabili di Service Fabric.
"WadCfg": {
"DiagnosticMonitorConfiguration": {
"overallQuotaInMB": "50000",
"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"
}
}
]
},
"PerformanceCounters": {
"scheduledTransferPeriod": "PT1M",
"PerformanceCounterConfiguration": [
{
"counterSpecifier": "\\Processor(_Total)\\% Processor Time",
"sampleRate": "PT1M",
"unit": "Percent",
"annotation": [
],
"sinks": ""
},
{
"counterSpecifier": "\\Service Fabric Actor Method(*)\\Invocations/Sec",
"sampleRate": "PT1M",
}
]
}
}
},
La frequenza di campionamento per il contatore può essere modificata a seconda delle esigenze. Poiché il formato è PT<time><unit>
, se si vuole raccogliere il contatore ogni secondo, è consigliabile impostare "sampleRate": "PT15S"
.
È anche possibile usare variabili nel modello ARM per raccogliere una matrice di contatori delle prestazioni, che può essere utile quando si raccolgono contatori delle prestazioni per processo. Nell'esempio seguente, vengono raccolti il tempo di elaborazione e il tempo di Garbage Collector per ogni processo e quindi due contatori delle prestazioni nei nodi stessi, che usano tutti variabili.
"variables": {
"copy": [
{
"name": "processorTimeCounters",
"count": "[length(parameters('monitoredProcesses'))]",
"input": {
"counterSpecifier": "\\Process([parameters('monitoredProcesses')[copyIndex('processorTimeCounters')]])\\% Processor Time",
"sampleRate": "PT1M",
"unit": "Percent",
"sinks": "applicationInsights",
"annotation": [
{
"displayName": "[concat(parameters('monitoredProcesses')[copyIndex('processorTimeCounters')],' Processor Time')]",
"locale": "en-us"
}
]
}
},
{
"name": "gcTimeCounters",
"count": "[length(parameters('monitoredProcesses'))]",
"input": {
"counterSpecifier": "\\.NET CLR Memory([parameters('monitoredProcesses')[copyIndex('gcTimeCounters')]])\\% Time in GC",
"sampleRate": "PT1M",
"unit": "Percent",
"sinks": "applicationInsights",
"annotation": [
{
"displayName": "[concat(parameters('monitoredProcesses')[copyIndex('gcTimeCounters')],' Time in GC')]",
"locale": "en-us"
}
]
}
}
],
"machineCounters": [
{
"counterSpecifier": "\\Memory\\Available Bytes",
"sampleRate": "PT1M",
"unit": "KB",
"sinks": "applicationInsights",
"annotation": [
{
"displayName": "Memory Available Kb",
"locale": "en-us"
}
]
},
{
"counterSpecifier": "\\Memory\\% Committed Bytes In Use",
"sampleRate": "PT15S",
"unit": "percent",
"annotation": [
{
"displayName": "Memory usage",
"locale": "en-us"
}
]
}
]
}
....
"WadCfg": {
"DiagnosticMonitorConfiguration": {
"overallQuotaInMB": "50000",
"Metrics": {
"metricAggregation": [
{
"scheduledTransferPeriod": "PT1M"
}
],
"resourceId": "[resourceId('Microsoft.Compute/virtualMachineScaleSets', variables('vmNodeTypeApp2Name'))]"
},
"PerformanceCounters": {
"scheduledTransferPeriod": "PT1M",
"PerformanceCounterConfiguration": "[concat(variables ('processorTimeCounters'), variables('gcTimeCounters'), variables('machineCounters'))]"
},
....
Dopo avere aggiunto i contatori delle prestazioni appropriati che devono essere raccolti, è necessario aggiornare la risorsa cluster in modo che queste modifiche vengano riflesse nel cluster in esecuzione. Salvare il file
template.json
modificato e aprire PowerShell. È possibile aggiornare il cluster usandoNew-AzResourceGroupDeployment
. La chiamata richiede il nome del gruppo di risorse e il file del modello aggiornato e chiede a Resource Manager di apportare le modifiche appropriate alle risorse aggiornate. Dopo avere eseguito l'accesso all'account e alla sottoscrizione corretta, usare il comando seguente per eseguire l'aggiornamento:New-AzResourceGroupDeployment -ResourceGroupName <ResourceGroup> -TemplateFile <PathToTemplateFile> -TemplateParameterFile <PathToParametersFile> -Verbose
Al termine della distribuzione dell'aggiornamento (da 15 a 45 minuti, a seconda che si tratti della prima distribuzione o meno e in base alle dimensioni del gruppo di risorse), Diagnostica di Microsoft Azure raccoglierà i contatori delle prestazioni e li invierà a una tabella denominata WADPerformanceCountersTable nell'account di archiviazione associato al cluster. Vedere i contatori delle prestazioni in Application Insights aggiungendo il sink di Application Insights al modello di Resource Manager.
Passaggi successivi
- Raccogliere altri contatori delle prestazioni per il cluster. Vedere Metriche delle prestazioni per un elenco di contatori da raccogliere.
- Usare monitoraggio e diagnostica con una macchina virtuale Windows e modelli di Azure Resource Manager per apportare altre modifiche a
WadCfg
, inclusa la configurazione di account di archiviazione aggiuntivi a cui inviare i dati di diagnostica. - Visitare il generatore WadCfg per compilare un modello da zero e assicurarsi che la sintassi sia corretta per compilare un modello da zero e assicurarsi che la sintassi sia corretta.