Partilhar via


Monitoramento de desempenho com a extensão de diagnóstico do Windows Azure

Este documento aborda as etapas necessárias para configurar a coleção de contadores de desempenho por meio da extensão WAD (Diagnóstico do Windows Azure) para clusters do Windows. Para clusters Linux, configure o agente do Log Analytics para coletar contadores de desempenho para seus nós.

Nota

A extensão WAD deve ser implantada em seu cluster para que essas etapas funcionem para você. Se não estiver configurado, vá para Agregação e coleta de eventos usando o Diagnóstico do Windows Azure.

Nota

Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

Colete contadores de desempenho por meio do WadCfg

Para coletar contadores de desempenho via WAD, você precisa modificar a configuração adequadamente no modelo do Gerenciador de Recursos do cluster. Siga estas etapas para adicionar um contador de desempenho que você deseja coletar ao seu modelo e executar uma atualização de recursos do Gerenciador de Recursos.

  1. Encontre a configuração do WAD no modelo do cluster - localize WadCfg. Você adicionará contadores de desempenho para coletar no DiagnosticMonitorConfiguration.

  2. Configure sua configuração para coletar contadores de desempenho adicionando a seção a seguir ao .DiagnosticMonitorConfiguration

    "PerformanceCounters": {
        "scheduledTransferPeriod": "PT1M",
        "PerformanceCounterConfiguration": []
    }
    

    O scheduledTransferPeriod define com que frequência os valores dos contadores coletados são transferidos para sua tabela de armazenamento do Azure e para qualquer coletor configurado.

  3. Adicione os contadores de desempenho que você gostaria de coletar ao PerformanceCounterConfiguration que foi declarado na etapa anterior. Cada contador que você gostaria de coletar é definido com um counterSpecifier, , , unitannotation, e qualquer sinkssampleRate.

Aqui está um exemplo de uma configuração com o contador para o Tempo Total do Processador (a quantidade de tempo que a CPU esteve em uso para operações de processamento) e Invocações de Método do Ator do Service Fabric por Segundo, um dos contadores de desempenho personalizados do Service Fabric. Consulte Contadores de desempenho de ator confiáveis e Contadores de desempenho de serviço confiáveis para obter uma lista completa de contadores de desempenho personalizados do Service Fabric.

"WadCfg": {
        "DiagnosticMonitorConfiguration": {
          "overallQuotaInMB": "50000",
          "EtwProviders": {
            "EtwEventSourceProviderConfiguration": [
              {
                "provider": "Microsoft-ServiceFabric-Actors",
                "scheduledTransferKeywordFilter": "1",
                "scheduledTransferPeriod": "PT5M",
                "DefaultEvents": {
                  "eventDestination": "ServiceFabricReliableActorEventTable"
                }
              },
              {
                "provider": "Microsoft-ServiceFabric-Services",
                "scheduledTransferPeriod": "PT5M",
                "DefaultEvents": {
                  "eventDestination": "ServiceFabricReliableServiceEventTable"
                }
              }
            ],
            "EtwManifestProviderConfiguration": [
              {
                "provider": "cbd93bc2-71e5-4566-b3a7-595d8eeca6e8",
                "scheduledTransferLogLevelFilter": "Information",
                "scheduledTransferKeywordFilter": "4611686018427387904",
                "scheduledTransferPeriod": "PT5M",
                "DefaultEvents": {
                  "eventDestination": "ServiceFabricSystemEventTable"
                }
              }
            ]
          },
          "PerformanceCounters": {
                "scheduledTransferPeriod": "PT1M",
                "PerformanceCounterConfiguration": [
                    {
                        "counterSpecifier": "\\Processor(_Total)\\% Processor Time",
                        "sampleRate": "PT1M",
                        "unit": "Percent",
                        "annotation": [
                        ],
                        "sinks": ""
                    },
                    {
                        "counterSpecifier": "\\Service Fabric Actor Method(*)\\Invocations/Sec",
                        "sampleRate": "PT1M",
                    }
                ]
            }
        }
      },

A taxa de amostragem para o contador pode ser modificada de acordo com suas necessidades. O formato é PT<time><unit>, portanto, se você quiser que o contador seja coletado a cada segundo, então você deve definir o "sampleRate": "PT15S".

Você também pode usar variáveis em seu modelo ARM para coletar uma matriz de contadores de desempenho, o que pode ser útil quando você coleta contadores de desempenho por processo. No exemplo a seguir, coletamos o tempo do processador e o tempo do coletor de lixo por processo e, em seguida, dois contadores de desempenho nos próprios nós usando variáveis.

"variables": {
  "copy": [
      {
        "name": "processorTimeCounters",
        "count": "[length(parameters('monitoredProcesses'))]",
        "input": {
          "counterSpecifier": "\\Process([parameters('monitoredProcesses')[copyIndex('processorTimeCounters')]])\\% Processor Time",
          "sampleRate": "PT1M",
          "unit": "Percent",
          "sinks": "applicationInsights",
          "annotation": [
            {
              "displayName": "[concat(parameters('monitoredProcesses')[copyIndex('processorTimeCounters')],' Processor Time')]",
              "locale": "en-us"
            }
          ]
        }
      },
      {
        "name": "gcTimeCounters",
        "count": "[length(parameters('monitoredProcesses'))]",
        "input": {
          "counterSpecifier": "\\.NET CLR Memory([parameters('monitoredProcesses')[copyIndex('gcTimeCounters')]])\\% Time in GC",
          "sampleRate": "PT1M",
          "unit": "Percent",
          "sinks": "applicationInsights",
          "annotation": [
            {
              "displayName": "[concat(parameters('monitoredProcesses')[copyIndex('gcTimeCounters')],' Time in GC')]",
              "locale": "en-us"
            }
          ]
        }
      }
    ],
    "machineCounters": [
      {
        "counterSpecifier": "\\Memory\\Available Bytes",
        "sampleRate": "PT1M",
        "unit": "KB",
        "sinks": "applicationInsights",
        "annotation": [
          {
            "displayName": "Memory Available Kb",
            "locale": "en-us"
          }
        ]
      },
      {
        "counterSpecifier": "\\Memory\\% Committed Bytes In Use",
        "sampleRate": "PT15S",
        "unit": "percent",
        "annotation": [
          {
            "displayName": "Memory usage",
            "locale": "en-us"
          }
        ]
      }
    ]
  }
....
"WadCfg": {
    "DiagnosticMonitorConfiguration": {
      "overallQuotaInMB": "50000",
      "Metrics": {
        "metricAggregation": [
          {
            "scheduledTransferPeriod": "PT1M"
          }
        ],
        "resourceId": "[resourceId('Microsoft.Compute/virtualMachineScaleSets', variables('vmNodeTypeApp2Name'))]"
      },
      "PerformanceCounters": {
        "scheduledTransferPeriod": "PT1M",
        "PerformanceCounterConfiguration": "[concat(variables ('processorTimeCounters'), variables('gcTimeCounters'),  variables('machineCounters'))]"
      },
....
  1. Depois de adicionar os contadores de desempenho apropriados que precisam ser coletados, você precisa atualizar seu recurso de cluster para que essas alterações sejam refletidas no cluster em execução. Salve seu PowerShell modificado template.json e abra-o. Você pode atualizar seu cluster usando New-AzResourceGroupDeploymento . A chamada requer o nome do grupo de recursos, o arquivo de modelo atualizado e o arquivo de parâmetros e solicita que o Gerenciador de Recursos faça as alterações apropriadas nos recursos que você atualizou. Depois de entrar na sua conta e ter a assinatura correta, use o seguinte comando para executar a atualização:

    New-AzResourceGroupDeployment -ResourceGroupName <ResourceGroup> -TemplateFile <PathToTemplateFile> -TemplateParameterFile <PathToParametersFile> -Verbose
    
  2. Quando a atualização terminar de ser implementada (leva entre 15 a 45 minutos, dependendo se é a primeira implantação e o tamanho do seu grupo de recursos), o WAD deve coletar os contadores de desempenho e enviá-los para a tabela chamada WADPerformanceCountersTable na conta de armazenamento associada ao cluster. Veja seus contadores de desempenho no Application Insights adicionando o Coletor de IA ao modelo do Gerenciador de Recursos.

Próximos passos

  • Colete mais contadores de desempenho para seu cluster. Consulte Métricas de desempenho para obter uma lista de contadores que você deve coletar.
  • Use o monitoramento e o diagnóstico com uma VM do Windows e modelos do Azure Resource Manager para fazer mais modificações no seu WadCfg, incluindo a configuração de mais contas de armazenamento para as quais enviar dados de diagnóstico.
  • Visite o construtor WadCfg para criar um modelo do zero e certifique-se de que sua sintaxe está correta para criar um modelo do zero e certifique-se de que sua sintaxe esteja correta.