Condividi tramite


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 CPU, disco e metriche di rete standard, 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 una configurazione aggiuntiva perché vengono raccolte dalla macchina virtuale host, mentre le metriche guest richiedono di installare l'estensione windows Diagnostica di Azure o l'estensione Linux Diagnostica di Azure 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à valida di base per usare le regole di scalabilità automatica in base alle 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. Verrà ora usato il modello precedente e modificato 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à.