Share via


Dimensionamento automático com métricas de convidado num modelo de conjunto de dimensionamento do Linux

Existem dois tipos abrangentes de métricas no Azure que são recolhidas a partir de VMs e conjuntos de dimensionamento: Métricas de anfitrião e métricas de Convidado. A um nível elevado, se quiser utilizar métricas padrão de CPU, disco e rede, as métricas de anfitrião são adequadas. No entanto, se precisar de uma seleção maior de métricas, as métricas de convidado devem ser consultadas.

As métricas de anfitrião não necessitam de configuração adicional porque são recolhidas pela VM do anfitrião, enquanto as métricas de convidado exigem que instale a extensão do Windows Diagnóstico do Azure ou a extensão de Diagnóstico do Azure do Linux na VM convidada. Uma razão comum para utilizar métricas de convidado em vez de métricas de anfitrião é que as métricas de convidado fornecem uma maior seleção de métricas do que as métricas de anfitrião. Um desses exemplos são as métricas de consumo de memória, que só estão disponíveis através de métricas de convidado. As métricas de anfitrião suportadas estão listadas aqui e as métricas de convidado utilizadas frequentemente são listadas aqui. Este artigo mostra como modificar o modelo básico de conjunto de dimensionamento viável para utilizar regras de dimensionamento automático com base nas métricas de convidado para conjuntos de dimensionamento do Linux.

Alterar a definição do modelo

Num artigo anterior , criámos um modelo de conjunto de dimensionamento básico. Vamos agora utilizar esse modelo anterior e modificá-lo para criar um modelo que implemente um conjunto de dimensionamento do Linux com o dimensionamento automático baseado em métricas de convidado.

Primeiro, adicione parâmetros para storageAccountName e storageAccountSasToken. O agente de diagnóstico armazena dados de métricas numa tabela nesta conta de armazenamento. A partir da versão 3.0 do Agente de Diagnóstico do Linux, a utilização de uma chave de acesso de armazenamento já não é suportada. Em vez disso, utilize um Token de SAS.

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

Em seguida, modifique o conjunto de dimensionamento extensionProfile para incluir a extensão de diagnóstico. Nesta configuração, especifique o ID de recurso do conjunto de dimensionamento para recolher métricas, bem como a conta de armazenamento e o token SAS a utilizar para armazenar as métricas. Especifique a frequência com que as métricas são agregadas (neste caso, a cada minuto) e quais as métricas a controlar (neste caso, a percentagem de memória utilizada). Para obter informações mais detalhadas sobre esta configuração e métricas que não a percentagem de memória utilizada, veja esta documentação.

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

Por fim, adicione um autoscaleSettings recurso para configurar o dimensionamento automático com base nestas métricas. Este recurso tem uma dependsOn cláusula que referencia o conjunto de dimensionamento para garantir que o conjunto de dimensionamento existe antes de tentar dimensioná-lo automaticamente. Se escolher uma métrica diferente para dimensionar automaticamente, utilizará a counterSpecifier da configuração da extensão de diagnóstico como na metricName configuração de dimensionamento automático. Para obter mais informações sobre a configuração do dimensionamento automático, veja as melhores práticas de dimensionamento automático e a documentação de referência da API REST do Azure Monitor.

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

Passos seguintes

Pode seguir a documentação do Azure Resource Manager para implementar o modelo anterior.

Pode iniciar esta série de tutoriais a partir do artigo de modelo do conjunto de dimensionamento básico.

Pode ver como modificar o modelo de conjunto de dimensionamento básico para implementar o conjunto de dimensionamento numa rede virtual existente.

Pode ver como modificar o modelo do conjunto de dimensionamento básico para implementar o conjunto de dimensionamento com uma imagem personalizada.

Pode ver como modificar o modelo de conjunto de dimensionamento básico para implementar um conjunto de dimensionamento do Linux com o dimensionamento automático baseado em convidados.

Para obter mais informações sobre conjuntos de dimensionamento, veja a página de descrição geral do conjunto de dimensionamento.