다음을 통해 공유


Windows Azure Diagnostics 확장을 사용하여 성능 모니터링

이 문서에서는 Windows 클러스터에 대한 WAD(Windows Azure Diagnostics) 확장을 통해 성능 카운터의 컬렉션을 설정하는 데 필요한 단계를 설명합니다. Linux 클러스터의 경우 Log Analytics 에이전트를 설정하여 노드에 대한 성능 카운터를 수집합니다.

참고 항목

WAD 확장은 이러한 단계가 작동하도록 클러스터에 배포되어야 합니다. 설정되지 않은 경우 Miscrosoft Azure Diagnostics를 사용하여 이벤트 집계 및 수집으로 이동합니다.

참고 항목

Azure Az PowerShell 모듈을 사용하여 Azure와 상호 작용하는 것이 좋습니다. 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.

WadCfg를 통해 성능 카운터 수집

WAD를 통해 성능 카운터를 수집하려면 클러스터의 Resource Manager 템플릿에서 구성을 적절하게 수정해야 합니다. 다음 단계를 따라 템플릿에 수집하려는 성능 카운터를 추가하고 리소스 관리자 리소스 업그레이드를 실행합니다.

  1. 클러스터의 템플릿에서 WAD 구성을 찾습니다. WadCfg를 찾습니다. DiagnosticMonitorConfiguration 아래에 수집할 성능 카운터를 추가합니다.

  2. 다음 섹션을 DiagnosticMonitorConfiguration에 추가하여 성능 카운터를 수집하는 구성을 설정합니다.

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

    scheduledTransferPeriod는 수집된 카운터의 값이 Azure 스토리지 테이블 및 구성된 싱크로 전송되는 빈도를 정의합니다.

  3. 이전 단계에서 선언된 PerformanceCounterConfiguration에 수집하려는 성능 카운터를 추가합니다. 수집하려는 각 카운터는 counterSpecifier, sampleRate, unit, annotation 및 관련 sinks로 정의됩니다.

총 프로세서 시간(CPU를 처리 작업에 사용하는 시간) 및 초당 Service Fabric 행위자 메서드 호출 횟수에 대한 카운터(Service Fabric 사용자 지정 성능 카운터 중 하나)를 사용한 구성의 예제는 다음과 같습니다. Service Fabric 사용자 지정 성능 카운터의 전체 목록은 Reliable Actor 성능 카운터Reliable 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",
                    }
                ]
            }
        }
      },

카운터에 대한 샘플 속도는 필요에 따라 수정될 수 있습니다. 그 형식은 PT<time><unit>이므로 1초마다 카운터를 수집하려는 경우 "sampleRate": "PT15S"라고 설정해야 합니다.

ARM 템플릿에서 변수를 사용하여 성능 카운터 배열을 수집할 수도 있습니다. 프로세스당 성능 카운터를 수집하는 경우 이 작업을 편리하게 수행할 수 있습니다. 다음 예제에서는 프로세스당 프로세서 시간 및 가비지 수집기 시간을 수집한 후, 변수를 사용하여 노드 자체에서 2개의 성능 카운터를 수집합니다.

"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. 수집되어야 하는 적절한 성능 카운터를 추가하면 실행 중인 클러스터에서 이러한 변경 내용이 반영되도록 클러스터 리소스를 업그레이드해야 합니다. 수정된 template.json을 저장하고 PowerShell을 엽니다. New-AzResourceGroupDeployment를 사용하여 클러스터를 업그레이드할 수 있습니다. 호출에는 리소스 그룹의 이름, 업데이트된 템플릿 파일 및 매개 변수 파일이 필요하며, 리소스 관리자가 업데이트한 리소스에 대해 적절하게 변경하도록 합니다. 계정에 로그인하고 올바른 구독에 있게 되면 다음 명령을 사용하여 업그레이드를 실행합니다.

    New-AzResourceGroupDeployment -ResourceGroupName <ResourceGroup> -TemplateFile <PathToTemplateFile> -TemplateParameterFile <PathToParametersFile> -Verbose
    
  2. 업그레이드가 롤아웃을 완료하면(첫 번째 배포인지 여부 및 리소스 그룹의 크기에 따라 15-45분 소요) WAD는 성능 카운터를 수집하고 클러스터와 연결된 스토리지 계정에서 WADPerformanceCountersTable이라는 표로 보내야 합니다. Resource Manager 템플릿에 AI 싱크를 추가하여 Application Insights에서 성능 카운터를 확인합니다.

다음 단계