Leistungsüberwachung mit der Microsoft Azure-Diagnoseerweiterung

In diesem Artikel erfahren Sie, wie Sie die Erfassung von Leistungsindikatoren über die Microsoft Azure-Diagnoseerweiterung für Windows-Cluster einrichten. Für Linux-Cluster muss der Log Analytics-Agent eingerichtet werden, um Leistungsindikatoren für die Knoten zu erfassen.

Hinweis

Die Microsoft Azure-Diagnoseerweiterung muss in Ihrem Cluster bereitgestellt sein, damit diese Schritte funktionieren. Falls sie nicht eingerichtet ist, helfen Ihnen die Informationen unter Ereignisaggregation und -sammlung mit der Microsoft Azure-Diagnose weiter.

Hinweis

Es wird empfohlen, das Azure Az PowerShell-Modul für die Interaktion mit Azure zu verwenden. Informationen zu den ersten Schritten finden Sie unter Installieren des Azure Az PowerShell-Moduls. Informationen zum Migrieren zum Az PowerShell-Modul finden Sie unter Migrieren von Azure PowerShell von AzureRM zum Az-Modul.

Erfassen von Leistungsindikatoren über WadCfg

Um Leistungsindikatoren über die Microsoft Azure-Diagnoseerweiterung erfassen zu können, müssen Sie die Konfiguration in der Resource Manager-Vorlage Ihres Clusters entsprechend ändern. Führen Sie die folgenden Schritte aus, um Ihrer Vorlage einen zu erfassenden Leistungsindikator hinzuzufügen und ein Upgrade der Resource Manager-Ressource durchzuführen.

  1. Suchen Sie in der Vorlage Ihres Clusters die Konfiguration der Microsoft Azure-Diagnoseerweiterung (WadCfg). Hier werden zu erfassende Leistungsindikatoren unter DiagnosticMonitorConfiguration hinzugefügt.

  2. Fügen Sie DiagnosticMonitorConfiguration den folgenden Abschnitt hinzu, um in Ihrer Konfiguration die Erfassung von Leistungsindikatoren einzurichten:

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

    scheduledTransferPeriod definiert, wie häufig die Werte der zu erfassenden Leistungsindikatoren an Ihre Azure-Speichertabelle sowie an ggf. konfigurierte Senken übertragen werden sollen.

  3. Fügen Sie PerformanceCounterConfiguration (wurde im vorherigen Schritt deklariert) die Leistungsindikatoren hinzu, die erfasst werden sollen. Jeder zu erfassende Leistungsindikator wird mit counterSpecifier, sampleRate, unit, annotation sowie mit allen relevanten sinks definiert.

Hier ist ein Beispiel für eine Konfiguration mit dem Leistungsindikator für Total Processor Time (Prozessorzeit gesamt; Dauer der Nutzung der CPU für Verarbeitungsvorgänge) und Service Fabric Actor Method Invocations per Second (Service Fabric Actor-Methode – Aufrufe pro Sekunde; einer der benutzerdefinierten Service Fabric-Leistungsindikatoren) angegeben. Eine vollständige Liste mit benutzerdefinierten Service Fabric-Leistungsindikatoren finden Sie in den Abschnitten zu Reliable Actors-Leistungsindikatoren und Reliable Services-Leistungsindikatoren.

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

Die Samplingrate für den Leistungsindikator kann gemäß Ihren Anforderungen angepasst werden. Das Format lautet PT<time><unit>. Wenn der Leistungsindikator also beispielsweise sekündlich erfasst werden soll, legen Sie Folgendes fest: "sampleRate": "PT15S".

Sie können in der ARM-Vorlage auch Variablen verwenden, um ein Array von-Leistungsindikatoren zu erfassen. Dies kann hilfreich sein, wenn Sie Leistungsindikatoren pro Prozess erfassen. Im folgenden Beispiel werden Prozessorzeit und Garbage Collector-Zeit pro Prozess sowie zwei Leistungsindikatoren für die eigentlichen Knoten erfasst. Dafür werden jeweils Variablen verwendet.

"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. Nach dem Hinzufügen der zu erfassenden Leistungsindikatoren müssen Sie Ihre Clusterressource upgraden, damit die Änderungen in Ihrem ausgeführten Cluster übernommen werden. Speichern Sie Ihre Änderungen an template.json, und öffnen Sie PowerShell. Das Upgrade des Clusters kann mithilfe von New-AzResourceGroupDeployment durchgeführt werden. Für den Aufruf müssen Sie den Namen der Ressourcengruppe, die aktualisierte Vorlagendatei und die Parameterdatei angeben. Durch den Aufruf wird Resource Manager angewiesen, entsprechende Änderungen an den von Ihnen aktualisierten Ressourcen vorzunehmen. Vergewissern Sie sich, dass Sie bei Ihrem Konto angemeldet sind und sich im richtigen Abonnement befinden, und führen Sie dann das Upgrade mithilfe des folgenden Befehls durch:

    New-AzResourceGroupDeployment -ResourceGroupName <ResourceGroup> -TemplateFile <PathToTemplateFile> -TemplateParameterFile <PathToParametersFile> -Verbose
    
  2. Nachdem der Rollout des Upgrades abgeschlossen ist (was zwischen 15 und 45 Minuten dauert – je nachdem, ob es sich um die erste Bereitstellung handelt und wie groß Ihre Ressourcengruppe ist), sollten die Leistungsindikatoren per Microsoft Azure-Diagnose erfasst und an die Tabelle „WADPerformanceCountersTable“ in dem Speicherkonto gesendet werden, das dem Cluster zugeordnet ist. Sie können die Leistungsindikatoren in Application Insights anzeigen, indem Sie die AI-Senke der Resource Manager-Vorlage hinzufügen.

Nächste Schritte