Share via


Automatisch schalen met behulp van metrische gastgegevens in een Linux-schaalsetsjabloon

Er zijn twee algemene typen metrische gegevens in Azure die worden verzameld van VM's en schaalsets: metrische gegevens van host en metrische gegevens van gasten. Als u op hoog niveau standaard metrische gegevens over CPU, schijf en netwerk wilt gebruiken, zijn metrische hostgegevens een goede keuze. Als u echter een grotere selectie metrische gegevens nodig hebt, moet u de metrische gegevens van gasten bekijken.

Voor metrische hostgegevens is geen aanvullende installatie vereist omdat deze worden verzameld door de host-VM, terwijl u voor metrische gegevens van gasten de Extensie Windows Azure Diagnostics of de Linux-extensie Azure Diagnostics in de gast-VM moet installeren. Een veelvoorkomende reden om metrische gegevens van gasten te gebruiken in plaats van metrische hostgegevens, is dat metrische gegevens van gasten een grotere selectie van metrische gegevens bieden dan hostgegevens. Een voorbeeld hiervan zijn metrische gegevens over geheugenverbruik, die alleen beschikbaar zijn via metrische gegevens van gasten. De ondersteunde metrische hostgegevens worden hier vermeld en veelgebruikte metrische gastgegevens worden hier vermeld. In dit artikel wordt beschreven hoe u de eenvoudige levensvatbare schaalsetsjabloon wijzigt om regels voor automatisch schalen te gebruiken op basis van metrische gastgegevens voor Linux-schaalsets.

De sjabloondefinitie wijzigen

In een vorig artikel hebben we een eenvoudige schaalsetsjabloon gemaakt. We gaan deze eerdere sjabloon nu gebruiken en aanpassen om een sjabloon te maken waarmee een Linux-schaalset wordt geïmplementeerd met automatische schaalaanpassing op basis van gastgegevens.

Voeg eerst parameters toe voor storageAccountName en storageAccountSasToken. De diagnostische agent slaat metrische gegevens op in een tabel in dit opslagaccount. Vanaf versie 3.0 van de Linux Diagnostics Agent wordt het gebruik van een opslagtoegangssleutel niet meer ondersteund. Gebruik in plaats daarvan een SAS-token.

     },
     "adminPassword": {
       "type": "securestring"
+    },
+    "storageAccountName": {
+      "type": "string"
+    },
+    "storageAccountSasToken": {
+      "type": "securestring"
     }
   },

Wijzig vervolgens de schaalset extensionProfile zodat deze de extensie voor diagnostische gegevens bevat. Geef in deze configuratie de resource-id op van de schaalset waaruit metrische gegevens moeten worden verzameld, evenals het opslagaccount en het SAS-token dat moet worden gebruikt om de metrische gegevens op te slaan. Geef op hoe vaak de metrische gegevens worden geaggregeerd (in dit geval elke minuut) en welke metrische gegevens moeten worden bijgehouden (in dit geval percentage gebruikt geheugen). Raadpleeg deze documentatie voor meer gedetailleerde informatie over deze configuratie en andere metrische gegevens dan het percentage gebruikte geheugen.

                 }
               }
             ]
+          },
+          "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"
+                        }
+                      ]
+                    }
+                  }
+                }
+              }
+            ]
           }
         }
       }

Voeg ten slotte een autoscaleSettings resource toe om automatische schaalaanpassing te configureren op basis van deze metrische gegevens. Deze resource heeft een dependsOn component die verwijst naar de schaalset om ervoor te zorgen dat de schaalset bestaat voordat u probeert deze automatisch te schalen. Als u een andere metrische waarde kiest om automatisch te schalen, gebruikt u de counterSpecifier uit de configuratie van de diagnostische extensie als de metricName in de configuratie voor automatisch schalen. Zie de best practices voor automatisch schalen en de referentiedocumentatie voor Azure Monitor REST API voor meer informatie over de configuratie van automatische schaalaanpassing.

+    },
+    {
+      "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"
+                }
+              }
+            ]
+          }
+        ]
+      }
     }
   ]
 }

Volgende stappen

U kunt de voorgaande sjabloon implementeren met behulp van de Azure Resource Manager-documentatie.

U kunt deze reeks zelfstudies starten vanuit het artikel standaardsjabloon voor schaalsets.

U kunt zien hoe u de sjabloon voor de basisschaalsetwijzigt om de schaalset te implementeren in een bestaand virtueel netwerk.

U kunt zien hoe u de sjabloon voor de basisschaalsetwijzigt om de schaalset te implementeren met een aangepaste installatiekopieën.

U kunt zien hoe u de sjabloon voor de basisschaalsetwijzigt om een Linux-schaalset te implementeren met automatische schaalaanpassing op basis van gasten.

Raadpleeg de overzichtspagina van de schaalset voor meer informatie over schaalsets.