azurescalingautoscalingazure-autoscaling-block

VMSS with service fabric cluster autoscale


I want to scale out or scale in the service fabric application. For this I have added the autoscalesettings with CPU metric on VM scale set. And in VM scale set, I have the extension section with wadcfg section with counter on CPU metric. And the data is successfully getting emitted to storage account which I have specified.But scale out or scale on options are not getting done with VMSS and service fabric cluster. I have gone through trouble shooting steps which were specified in azure portal.https://azure.microsoft.com/en-us/documentation/articles/virtual-machine-scale-sets-troubleshoot/

And without service fabric, the same CPU metric is working fine and VM scale set is getting scale out.

Checked subscription limit as well. But could not able to find the issue. But, we are getting a mail notification saying, could not able to read the diagnostics data for autoscale when vmss and service fabric together deployed.


Solution

  • Service Fabric does support AutoScale it's just not very well documented. Here is a basic documentation - https://azure.microsoft.com/en-us/documentation/articles/service-fabric-cluster-scale-up-down/ which uses "XmlCfg" element to configure counters. However there is a way to do it via JSON as well which is more readable. Here is a snippet of a "settings" block from "IaaSDiagnostics" extension.

    Note the inclusion of "PerformanceCounters" and "Metrics" elements under "DiagnosticMonitorConfiguration".

    {
      "name": "Windows_VMDiagnosticsVmExt",
      "properties": {
        "type": "IaaSDiagnostics",
        "autoUpgradeMinorVersion": true,
        "protectedSettings": {
          "storageAccountName": "[variables('applicationDiagnosticsStorageAccountName')]",
          "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('applicationDiagnosticsStorageAccountName')),'2016-01-01').keys[0].value]",
          "storageAccountEndPoint": "https://core.windows.net/"
        },
        "publisher": "Microsoft.Azure.Diagnostics",
        "settings": {
          "WadCfg": {
            "DiagnosticMonitorConfiguration": {
              "overallQuotaInMB": "50000",
              "PerformanceCounters": {
                "PerformanceCounterConfiguration": [
                  {
                    "annotation": [],
                    "scheduledTransferPeriod": "PT1M",
                    "counterSpecifier": "\\Processor(_Total)\\% Processor Time",
                    "sampleRate": "PT1M"
                  },
                  {
                    "annotation": [],
                    "scheduledTransferPeriod": "PT1M",
                    "counterSpecifier": "\\Memory\\% Committed Bytes in Use",
                    "sampleRate": "PT1M"
                  }
                ]
              },
              "Metrics": {
                "resourceId": "[resourceId('Microsoft.Compute/virtualMachineScaleSets', variables('defaultVMNodeTypeName'))]",
                "MetricAggregation": [
                  { "scheduledTransferPeriod": "PT1H" },
                  { "scheduledTransferPeriod": "PT1M" }
                ]
              },
              "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"
                    }
                  }
                ]
              }
            }
          },
          "StorageAccount": "[variables('applicationDiagnosticsStorageAccountName')]"
        },
        "typeHandlerVersion": "1.5"
      }
    }