Monitorowanie wydajności za pomocą rozszerzenia Diagnostyka Azure systemu Windows
W tym dokumencie opisano kroki wymagane do skonfigurowania zbierania liczników wydajności za pośrednictwem rozszerzenia Windows Diagnostyka Azure (WAD) dla klastrów systemu Windows. W przypadku klastrów systemu Linux skonfiguruj agenta usługi Log Analytics w celu zbierania liczników wydajności dla węzłów.
Uwaga
Rozszerzenie WAD należy wdrożyć w klastrze, aby wykonać te kroki. Jeśli nie jest skonfigurowana, przejdź do opcji Agregacja i zbieranie zdarzeń przy użyciu Diagnostyka Azure systemu Windows.
Uwaga
Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Aby rozpocząć, zobacz Instalowanie programu Azure PowerShell. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.
Zbieranie liczników wydajności za pośrednictwem narzędzia WadCfg
Aby zbierać liczniki wydajności za pośrednictwem wad, należy odpowiednio zmodyfikować konfigurację w szablonie usługi Resource Manager klastra. Wykonaj następujące kroki, aby dodać licznik wydajności, który chcesz zebrać do szablonu i uruchomić uaktualnienie zasobów usługi Resource Manager.
Znajdź konfigurację wad w szablonie klastra — znajdź
WadCfg
. Dodasz liczniki wydajności do zbierania w obszarzeDiagnosticMonitorConfiguration
.Skonfiguruj konfigurację w celu zbierania liczników wydajności, dodając następującą sekcję do elementu
DiagnosticMonitorConfiguration
."PerformanceCounters": { "scheduledTransferPeriod": "PT1M", "PerformanceCounterConfiguration": [] }
Określa
scheduledTransferPeriod
, jak często są przesyłane wartości zebranych liczników do tabeli usługi Azure Storage i do dowolnego skonfigurowanego ujścia.Dodaj liczniki wydajności, które chcesz zebrać do
PerformanceCounterConfiguration
zadeklarowanej w poprzednim kroku. Każdy licznik, który chcesz zebrać, jest definiowany za pomocą elementucounterSpecifier
, ,sampleRate
unit
,annotation
i dowolnego odpowiedniegosinks
.
Oto przykład konfiguracji z licznikiem łącznego czasu procesora (ilość czasu użycia procesora przez procesor dla operacji przetwarzania) i wywołania metody aktora usługi Service Fabric na sekundę, jeden z niestandardowych liczników wydajności usługi Service Fabric. Aby uzyskać pełną listę niestandardowych liczników wydajności wydajności usługi Service Fabric, zapoznaj się z tematem Reliable Actor Performance Counters (Liczniki wydajności niezawodnego aktora i liczniki wydajności usługi Reliable Service Service Service).
"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",
}
]
}
}
},
Częstotliwość próbkowania licznika można modyfikować zgodnie z potrzebami. Format to PT<time><unit>
, więc jeśli chcesz, aby licznik został zebrany co sekundę, należy ustawić wartość "sampleRate": "PT15S"
.
Możesz również użyć zmiennych w szablonie usługi ARM, aby zebrać tablicę liczników wydajności, które mogą przydać się podczas zbierania liczników wydajności na proces. W poniższym przykładzie zbieramy czas procesora i czas modułu odśmiecywania pamięci na proces, a następnie dwa liczniki wydajności na samych węzłach przy użyciu zmiennych.
"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'))]"
},
....
Po dodaniu odpowiednich liczników wydajności, które należy zebrać, należy uaktualnić zasób klastra, aby te zmiany zostały odzwierciedlone w uruchomionym klastrze. Zapisz zmodyfikowane
template.json
i otwórz program PowerShell. Klaster można uaktualnić przy użyciu poleceniaNew-AzResourceGroupDeployment
. Wywołanie wymaga nazwy grupy zasobów, zaktualizowanego pliku szablonu i pliku parametrów oraz monituje usługę Resource Manager o wprowadzenie odpowiednich zmian w zaktualizowanych zasobach. Po zalogowaniu się do konta i przejściu do właściwej subskrypcji użyj następującego polecenia, aby uruchomić uaktualnienie:New-AzResourceGroupDeployment -ResourceGroupName <ResourceGroup> -TemplateFile <PathToTemplateFile> -TemplateParameterFile <PathToParametersFile> -Verbose
Po zakończeniu uaktualniania (trwa od 15 do 45 minut w zależności od tego, czy jest to pierwsze wdrożenie i rozmiar grupy zasobów), wad powinien zbierać liczniki wydajności i wysyłać je do tabeli o nazwie WADPerformanceCountersTable na koncie magazynu skojarzonym z klastrem. Zobacz liczniki wydajności w usłudze Application Insights, dodając ujście sztucznej inteligencji do szablonu usługi Resource Manager.
Następne kroki
- Zbierz więcej liczników wydajności dla klastra. Zobacz Metryki wydajności, aby uzyskać listę liczników, które należy zebrać.
- Użyj monitorowania i diagnostyki z maszyną wirtualną z systemem Windows i szablonami usługi Azure Resource Manager, aby wprowadzić dalsze modyfikacje w programie
WadCfg
, w tym skonfigurowanie większej liczby kont magazynu w celu wysyłania danych diagnostycznych. - Odwiedź konstruktor WadCfg, aby utworzyć szablon od podstaw i upewnij się, że składnia jest poprawna do utworzenia szablonu od podstaw i upewnij się, że składnia jest poprawna.