Compartilhar via


Dimensionamento automático usando métricas de convidado em um modelo de conjunto de dimensionamento do Linux

Há dois tipos amplos de métricas no Azure que são coletados de VMs e conjuntos de dimensionamento: métricas de host e métricas de convidado. Em um nível alto, se você quiser usar métricas de rede, disco e CPU padrão, as métricas de host serão uma boa opção. Mas se você precisar de uma seleção maior de métricas, as métricas de convidado devem ser investigadas.

Métricas de host não exigem configuração adicional porque são coletadas pela VM de host, enquanto as métricas de convidado exigem instalar a extensão de Diagnóstico do Microsoft Azure ou a extensão de Diagnóstico do Linux Azure na VM convidada. Um motivo comum para usar métricas de convidado, em vez de métricas de host, é que as métricas de convidado fornecem uma seleção maior de métricas do que as métricas de host. Um exemplo disso são as métricas de consumo de memória, que só estão disponíveis por meio de métricas de convidado. As métricas de host com suporte estão listadas aqui e métricas de convidado comumente usadas estão listadas aqui. Este artigo mostra como modificar o modelo de conjunto de dimensionamento viável básico para usar regras de dimensionamento automático com base nas métricas de convidado para conjuntos de dimensionamento do Linux.

Alterar a definição do modelo

Em um artigo anterior, criamos um modelo de conjunto de dimensionamento básico. Agora vamos usar esse modelo anterior e modificá-lo para criar um modelo que implanta um conjunto de dimensionamento do Linux com dimensionamento automático baseado na métrica de convidado.

Primeiro, adicione parâmetros para storageAccountName e storageAccountSasToken. O agente de diagnóstico armazena dados de métrica em uma tabela nesta conta de armazenamento. Do Agente de Diagnóstico do Linux versão 3.0 em diante, não há mais suporte para usar uma chave de acesso de armazenamento. Nesse caso, use um Token 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. Nessa configuração, especifique a ID do recurso do conjunto de dimensionamento cujas métricas serão coletadas, bem como a conta de armazenamento e o token SAS a serem usados para armazenar as métricas. Especifique com que frequência as métricas são agregadas (neste caso, a cada minuto) e quais métricas devem ser acompanhadas (neste caso, o percentual de memória usada). Para obter informações mais detalhadas sobre essa configuração e métricas diferentes da porcentagem de memória usada, consulte 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"
+                        }
+                      ]
+                    }
+                  }
+                }
+              }
+            ]
           }
         }
       }

Finalmente, adicione um recurso autoscaleSettings para configurar o dimensionamento automático com base nessas métricas. Esse recurso tem uma cláusula dependsOn que faz referência a conjunto de dimensionamento para garantir que o conjunto de dimensionamento exista antes de tentar realizar seu dimensionamento automático. Se você escolher uma métrica diferente para fazer o dimensionamento automático, use o counterSpecifier da configuração de extensão de diagnóstico, como o metricName na configuração de dimensionamento automático. Para obter mais informações sobre a configuração de dimensionamento automático, consulte as práticas recomendadas 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"
+                }
+              }
+            ]
+          }
+        ]
+      }
     }
   ]
 }

Próximas etapas

É possível implantar o modelo anterior seguindo a documentação do Azure Resource Manager.

Você pode iniciar esta série de tutoriais pelo artigo sobre o modelo de conjunto de dimensionamento básico.

Você pode ver como modificar o modelo de conjunto de dimensionamento básico para implantar o conjunto de dimensionamento em uma rede virtual existente.

Você pode ver como modificar o modelo de conjunto de dimensionamento básico para implantar o conjunto de dimensionamento com uma imagem personalizada.

Você pode ver como modificar o modelo de conjunto de dimensionamento básico para implantar um conjunto de dimensionamento do Linux com o dimensionamento automático baseado no convidado.

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