Eseguire la scalabilità automatica usando metriche guest in un modello di set di scalabilità Linux
Esistono due tipi generali di metriche in Azure raccolte da macchine virtuali e set di scalabilità: metriche host e metriche guest. A livello generale, se si vuole usare le metriche standard di CPU, disco e rete, le metriche host sono adatte. Se, tuttavia, è necessaria una selezione più ampia di metriche, le metriche guest devono essere esaminate.
Le metriche host non richiedono un'installazione aggiuntiva perché vengono raccolte dalla macchina virtuale host, mentre le metriche guest richiedono l'installazione dell'estensione windows Diagnostica di Azure o dell'estensione Diagnostica di Azure Linux nella macchina virtuale guest. È preferibile usare metriche guest anziché metriche host perché le metriche guest offrono una selezione più ampia di metriche. Le metriche relative al consumo di memoria, disponibili solo tramite metriche guest, ne sono un esempio. Le metriche host supportate sono elencate qui, mentre le metriche guest usate comunemente sono elencate qui. Questo articolo illustra come modificare il modello di set di scalabilità praticabile di base per usare le regole di scalabilità automatica basate sulle metriche guest per i set di scalabilità Linux.
Modificare la definizione del modello
In un articolo precedente è stato creato un modello di set di scalabilità di base. A questo punto si userà il modello precedente e lo si modificherà per creare un modello che distribuisce un set di scalabilità Linux con scalabilità automatica basata sulle metriche guest.
Per prima cosa, aggiungere i parametri per storageAccountName
e storageAccountSasToken
. L'agente di diagnostica archivia i dati di metrica in una tabella in questo account di archiviazione. A partire dalla versione 3.0 dell'agente di diagnostica Linux, non è più supportato l'uso di una chiave di accesso di archiviazione. Usare invece un token di firma di accesso condiviso.
},
"adminPassword": {
"type": "securestring"
+ },
+ "storageAccountName": {
+ "type": "string"
+ },
+ "storageAccountSasToken": {
+ "type": "securestring"
}
},
Successivamente, modificare il set di scalabilità extensionProfile
in modo da includere l'estensione di diagnostica. In questa configurazione specificare l'ID della risorsa del set di scalabilità da cui vengono raccolte le metriche, oltre all'account di archiviazione e al token di firma di accesso condiviso da usare per archiviare le metriche. Specificare la frequenza con cui vengono aggregate le metriche, in questo caso, ogni minuto, e le metriche di cui tenere traccia, in questo caso, la percentuale di memoria usata. Per informazioni più dettagliate su questa configurazione e sulle metriche diverse dalla percentuale di memoria usata, vedere questa documentazione.
}
}
]
+ },
+ "extensionProfile": {
+ "extensions": [
+ {
+ "name": "LinuxDiagnosticExtension",
+ "properties": {
+ "publisher": "Microsoft.Azure.Diagnostics",
+ "type": "LinuxDiagnostic",
+ "typeHandlerVersion": "3.0",
+ "settings": {
+ "StorageAccount": "[parameters('storageAccountName')]",
+ "ladCfg": {
+ "diagnosticMonitorConfiguration": {
+ "performanceCounters": {
+ "sinks": "WADMetricJsonBlob",
+ "performanceCounterConfiguration": [
+ {
+ "unit": "percent",
+ "type": "builtin",
+ "class": "memory",
+ "counter": "percentUsedMemory",
+ "counterSpecifier": "/builtin/memory/percentUsedMemory",
+ "condition": "IsAggregate=TRUE"
+ }
+ ]
+ },
+ "metrics": {
+ "metricAggregation": [
+ {
+ "scheduledTransferPeriod": "PT1M"
+ }
+ ],
+ "resourceId": "[resourceId('Microsoft.Compute/virtualMachineScaleSets', 'myScaleSet')]"
+ }
+ }
+ }
+ },
+ "protectedSettings": {
+ "storageAccountName": "[parameters('storageAccountName')]",
+ "storageAccountSasToken": "[parameters('storageAccountSasToken')]",
+ "sinksConfig": {
+ "sink": [
+ {
+ "name": "WADMetricJsonBlob",
+ "type": "JsonBlob"
+ }
+ ]
+ }
+ }
+ }
+ }
+ ]
}
}
}
Aggiungere infine una risorsa autoscaleSettings
per configurare la scalabilità automatica in base a queste metriche. Questa risorsa include una clausola dependsOn
che fa riferimento al set di scalabilità per verificarne l'esistenza prima di tentare l'applicazione della scalabilità automatica. Se si sceglie una metrica diversa su cui basare la scalabilità automatica, si dovrebbe usare counterSpecifier
della configurazione per l'estensione di diagnostica come metricName
nella configurazione di scalabilità automatica. Per altre informazioni sulla configurazione della scalabilità automatica, vedere Procedure consigliate per la scalabilità automatica e la documentazione di riferimento sulle API REST di monitoraggio di Azure.
+ },
+ {
+ "type": "Microsoft.Insights/autoscaleSettings",
+ "apiVersion": "2015-04-01",
+ "name": "guestMetricsAutoscale",
+ "location": "[resourceGroup().location]",
+ "dependsOn": [
+ "Microsoft.Compute/virtualMachineScaleSets/myScaleSet"
+ ],
+ "properties": {
+ "name": "guestMetricsAutoscale",
+ "targetResourceUri": "[resourceId('Microsoft.Compute/virtualMachineScaleSets', 'myScaleSet')]",
+ "enabled": true,
+ "profiles": [
+ {
+ "name": "Profile1",
+ "capacity": {
+ "minimum": "1",
+ "maximum": "10",
+ "default": "3"
+ },
+ "rules": [
+ {
+ "metricTrigger": {
+ "metricName": "/builtin/memory/percentUsedMemory",
+ "metricNamespace": "",
+ "metricResourceUri": "[resourceId('Microsoft.Compute/virtualMachineScaleSets', 'myScaleSet')]",
+ "timeGrain": "PT1M",
+ "statistic": "Average",
+ "timeWindow": "PT5M",
+ "timeAggregation": "Average",
+ "operator": "GreaterThan",
+ "threshold": 60
+ },
+ "scaleAction": {
+ "direction": "Increase",
+ "type": "ChangeCount",
+ "value": "1",
+ "cooldown": "PT1M"
+ }
+ },
+ {
+ "metricTrigger": {
+ "metricName": "/builtin/memory/percentUsedMemory",
+ "metricNamespace": "",
+ "metricResourceUri": "[resourceId('Microsoft.Compute/virtualMachineScaleSets', 'myScaleSet')]",
+ "timeGrain": "PT1M",
+ "statistic": "Average",
+ "timeWindow": "PT5M",
+ "timeAggregation": "Average",
+ "operator": "LessThan",
+ "threshold": 30
+ },
+ "scaleAction": {
+ "direction": "Decrease",
+ "type": "ChangeCount",
+ "value": "1",
+ "cooldown": "PT1M"
+ }
+ }
+ ]
+ }
+ ]
+ }
}
]
}
Passaggi successivi
È possibile distribuire il modello precedente seguendo quanto indicato nella documentazione di Azure Resource Manager.
Questa serie di esercitazioni può essere avviata dall'articolo sul modello di set di scalabilità di base.
È possibile vedere come modificare il modello di set di scalabilità di base per distribuire il set di scalabilità in una rete virtuale esistente.
È possibile vedere come modificare il modello di set di scalabilità di base per distribuire il set di scalabilità con un'immagine personalizzata.
È possibile vedere come modificare il modello di set di scalabilità di base per distribuire un set di scalabilità Linux con scalabilità automatica basata su guest.
Per altre informazioni al riguardo, vedere la panoramica sui set di scalabilità.