Share via


Gebeurtenisaggregatie en -verzameling met Windows Azure Diagnostics

Wanneer u een Azure Service Fabric-cluster uitvoert, is het een goed idee om de logboeken van alle knooppunten op een centrale locatie te verzamelen. Met de logboeken op een centrale locatie kunt u problemen in uw cluster analyseren en oplossen, of problemen in de toepassingen en services die in dat cluster worden uitgevoerd.

Een manier om logboeken te uploaden en te verzamelen is door de WAD-extensie (Windows Azure Diagnostics) te gebruiken, die logboeken uploadt naar Azure Storage en ook de mogelijkheid heeft om logboeken te verzenden naar Azure-toepassing Insights of Event Hubs. U kunt ook een extern proces gebruiken om de gebeurtenissen uit de opslag te lezen en in een analyseplatformproduct te plaatsen, zoals Azure Monitor-logboeken of een andere oplossing voor het parseren van logboeken .

Notitie

Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Vereisten

De volgende hulpprogramma's worden in dit artikel gebruikt:

Service Fabric-platform-gebeurtenissen

Service Fabric stelt u in met een aantal out-of-the-box-logboekregistratiekanalen, waarvan de volgende kanalen vooraf zijn geconfigureerd met de extensie voor het verzenden van bewakings- en diagnostische gegevens naar een opslagtabel of elders:

De diagnostische extensie implementeren via de portal

De eerste stap bij het verzamelen van logboeken is het implementeren van de diagnostische extensie op de knooppunten van de virtuele-machineschaalset in het Service Fabric-cluster. De diagnostische extensie verzamelt logboeken op elke virtuele machine en uploadt deze naar het opslagaccount dat u opgeeft. In de volgende stappen wordt beschreven hoe u dit kunt doen voor nieuwe en bestaande clusters via Azure Portal en Azure Resource Manager-sjablonen.

De diagnostische extensie implementeren als onderdeel van het maken van een cluster via Azure Portal

Wanneer u uw cluster maakt, vouwt u in de stap clusterconfiguratie de optionele instellingen uit en zorgt u ervoor dat Diagnostische gegevens zijn ingesteld op Aan (de standaardinstelling).

Azure Diagnostics-instellingen in de portal voor het maken van clusters

We raden u ten zeerste aan de sjabloon te downloaden voordat u in de laatste stap op Maken klikt. Raadpleeg een Service Fabric-cluster instellen met behulp van een Azure Resource Manager-sjabloon voor meer informatie. U hebt de sjabloon nodig om wijzigingen aan te brengen in de kanalen (hierboven vermeld) om gegevens te verzamelen.

Clustersjabloon

Nu u gebeurtenissen in Azure Storage samenvoegt, stelt u Azure Monitor-logboeken in om inzichten te verkrijgen en er query's op uit te voeren in de Azure Monitor-logboekenportal

Notitie

Er is momenteel geen manier om de gebeurtenissen te filteren of op te splitsen die naar de tabellen worden verzonden. Als u geen proces implementeert om gebeurtenissen uit de tabel te verwijderen, blijft de tabel groeien (de standaardlimiet is 50 GB). Instructies voor het wijzigen hiervan worden verderop in dit artikel beschreven. Daarnaast is er een voorbeeld van een service voor het opschonen van gegevens die wordt uitgevoerd in het Watchdog-voorbeeld, en het wordt aanbevolen dat u er ook zelf een schrijft, tenzij er een goede reden is om logboeken op te slaan buiten een tijdsbestek van 30 of 90 dagen.

De diagnostische extensie implementeren via Azure Resource Manager

Een cluster maken met de diagnostische extensie

Als u een cluster wilt maken met Resource Manager, moet u de JSON voor diagnostische configuratie toevoegen aan de volledige Resource Manager-sjabloon. We bieden een Resource Manager-voorbeeldsjabloon met vijf VM-clusters met diagnostische configuratie toegevoegd als onderdeel van onze Resource Manager-sjabloonvoorbeelden. U kunt deze op deze locatie zien in de galerie met Azure-voorbeelden: cluster met vijf knooppunten met voorbeeld van een Diagnostische Resource Manager-sjabloon.

Als u de instelling Diagnostische gegevens in de Resource Manager-sjabloon wilt zien, opent u het azuredeploy.json-bestand en zoekt u naar IaaSDiagnostics. Als u een cluster wilt maken met behulp van deze sjabloon, selecteert u de knop Implementeren in Azure die beschikbaar is op de vorige koppeling.

U kunt ook het Resource Manager-voorbeeld downloaden, er wijzigingen in aanbrengen en een cluster maken met de gewijzigde sjabloon met behulp van de New-AzResourceGroupDeployment opdracht in een Azure PowerShell-venster. Zie de volgende code voor de parameters die u aan de opdracht doorgeeft. Zie het artikel Een resourcegroep implementeren met de Azure Resource Manager-sjabloon voor gedetailleerde informatie over het implementeren van een resourcegroep met behulp van PowerShell.

De diagnostische extensie toevoegen aan een bestaand cluster

Als u een bestaand cluster hebt waarvoor geen diagnostische gegevens zijn geïmplementeerd, kunt u het toevoegen of bijwerken via de clustersjabloon. Wijzig de Resource Manager-sjabloon die wordt gebruikt om het bestaande cluster te maken of download de sjabloon vanuit de portal, zoals eerder beschreven. Wijzig het bestand template.json door de volgende taken uit te voeren:

Voeg een nieuwe opslagresource toe aan de sjabloon door deze toe te voegen aan de sectie Resources.

{
	"apiVersion": "2018-07-01",
	"type": "Microsoft.Storage/storageAccounts",
	"name": "[parameters('applicationDiagnosticsStorageAccountName')]",
	"location": "[parameters('computeLocation')]",
	"sku": {
	"name": "[parameters('applicationDiagnosticsStorageAccountType')]"
	"tier": "standard"
  },
	"tags": {
	"resourceType": "Service Fabric",
	"clusterName": "[parameters('clusterName')]"
  }
},

Voeg vervolgens toe aan de sectie parameters net na de definities van het opslagaccount, tussen supportLogStorageAccountName. Vervang de tijdelijke aanduiding voor de naam van het opslagaccount hier door de naam van het gewenste opslagaccount.

    "applicationDiagnosticsStorageAccountType": {
      "type": "string",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS"
      ],
      "defaultValue": "Standard_LRS",
      "metadata": {
        "description": "Replication option for the application diagnostics storage account"
      }
    },
    "applicationDiagnosticsStorageAccountName": {
      "type": "string",
      "defaultValue": "**STORAGE ACCOUNT NAME GOES HERE**",
      "metadata": {
        "description": "Name for the storage account that contains application diagnostics data from the cluster"
      }
    },

Werk vervolgens de VirtualMachineProfile sectie van het template.json-bestand bij door de volgende code toe te voegen in de extensiematrix. Zorg ervoor dat u een komma toevoegt aan het begin of einde, afhankelijk van waar deze is ingevoegd.

{
    "name": "[concat(parameters('vmNodeType0Name'),'_Microsoft.Insights.VMDiagnosticsSettings')]",
    "properties": {
        "type": "IaaSDiagnostics",
        "autoUpgradeMinorVersion": true,
        "protectedSettings": {
        "storageAccountName": "[parameters('applicationDiagnosticsStorageAccountName')]",
        "storageAccountKey": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('applicationDiagnosticsStorageAccountName')),'2015-05-01-preview').key1]",
        "storageAccountEndPoint": "https://core.windows.net/"
        },
        "publisher": "Microsoft.Azure.Diagnostics",
        "settings": {
        "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"
                    }
                },
                {
                    "provider": "02d06793-efeb-48c8-8f7f-09713309a810",
                    "scheduledTransferLogLevelFilter": "Information",
                    "scheduledTransferKeywordFilter": "4611686018427387904",
                    "scheduledTransferPeriod": "PT5M",
                    "DefaultEvents": {
                    "eventDestination": "ServiceFabricSystemEventTable"
                    }
                }
                ]
            }
            }
        },
        "StorageAccount": "[parameters('applicationDiagnosticsStorageAccountName')]"
        },
        "typeHandlerVersion": "1.5"
    }
}

Nadat u het template.json-bestand hebt gewijzigd zoals beschreven, publiceert u de Resource Manager-sjabloon opnieuw. Als de sjabloon is geëxporteerd, wordt de sjabloon opnieuw gepubliceerd met het bestand deploy.ps1. Nadat u de implementatie hebt uitgevoerd, controleert u of ProvisioningState is voltooid.

Tip

Als u containers in uw cluster gaat implementeren, schakelt u WAD in om docker-statistieken op te halen door deze toe te voegen aan de sectie DiagnostischeMonitorConfiguration van WadCfg>.

"DockerSources": {
    "Stats": {
        "enabled": true,
        "sampleRate": "PT1M"
    }
},

Opslagquotum bijwerken

Omdat de tabellen die door de extensie zijn gevuld, toenemen totdat het quotum is bereikt, kunt u overwegen om de quotumgrootte te verlagen. De standaardwaarde is 50 GB en kan worden geconfigureerd in de sjabloon onder het overallQuotaInMB veld onder DiagnosticMonitorConfiguration

"overallQuotaInMB": "50000",

Configuraties van logboekverzameling

Logboeken van extra kanalen zijn ook beschikbaar voor verzameling. Hier volgen enkele van de meest voorkomende configuraties die u kunt maken in de sjabloon voor clusters die worden uitgevoerd in Azure.

  • Operationeel kanaal - Basis: Standaard ingeschakeld, bewerkingen op hoog niveau die worden uitgevoerd door Service Fabric en het cluster, inclusief gebeurtenissen voor een knooppunt dat wordt geïmplementeerd, een nieuwe toepassing die wordt geïmplementeerd of een terugdraaiactie voor een upgrade, enzovoort. Raadpleeg Operational Channel Events voor een lijst met gebeurtenissen.

      "scheduledTransferKeywordFilter": "4611686018427387904"
    
  • Operationeel kanaal - gedetailleerd: dit omvat statusrapporten en taakverdelingsbeslissingen, plus alles in het operationele basiskanaal. Deze gebeurtenissen worden gegenereerd door het systeem of uw code met behulp van de status- of belastingrapportage-API's, zoals ReportPartitionHealth of ReportLoad. Als u deze gebeurtenissen in de diagnostische Logboeken van Visual Studio wilt weergeven, voegt u Microsoft-ServiceFabric:4:0x4000000000000008 toe aan de lijst met ETW-providers.

      "scheduledTransferKeywordFilter": "4611686018427387912"
    
  • Gegevens- en berichtenkanaal - Basis: Kritieke logboeken en gebeurtenissen die zijn gegenereerd in de berichten (momenteel alleen reverseProxy) en gegevenspad, naast gedetailleerde operationele kanaallogboeken. Deze gebeurtenissen zijn verwerkingsfouten van aanvragen en andere kritieke problemen in de ReverseProxy, evenals aanvragen die worden verwerkt. Dit is onze aanbeveling voor uitgebreide logboekregistratie. Als u deze gebeurtenissen wilt weergeven in de diagnostische Logboeken van Visual Studio, voegt u Microsoft-ServiceFabric:4:0x4000000000000010 toe aan de lijst met ETW-providers.

      "scheduledTransferKeywordFilter": "4611686018427387928"
    
  • Data & Messaging-kanaal - Gedetailleerd: Uitgebreid kanaal dat alle niet-kritieke logboeken van gegevens en berichten in het cluster en het gedetailleerde operationele kanaal bevat. Raadpleeg de handleiding voor diagnostische gegevens over omgekeerde proxy's voor gedetailleerde probleemoplossing van alle omgekeerde proxygebeurtenissen. Als u deze gebeurtenissen wilt weergeven in de viewer voor diagnostische logboeken van Visual Studio, voegt u 'Microsoft-ServiceFabric:4:0x4000000000000020' toe aan de lijst met ETW-providers.

      "scheduledTransferKeywordFilter": "4611686018427387944"
    

Notitie

Dit kanaal heeft een zeer groot aantal gebeurtenissen, waardoor het verzamelen van gebeurtenissen vanuit dit gedetailleerde kanaal resulteert in een groot aantal traceringen die snel worden gegenereerd en opslagcapaciteit kunnen verbruiken. Schakel dit alleen in als dat absoluut noodzakelijk is.

Als u het Operationele Basiskanaal wilt inschakelen, wordt onze aanbeveling voor uitgebreide logboekregistratie met de minste hoeveelheid ruis weergegeven: EtwManifestProviderConfiguration De in de WadCfg sjabloon ziet er als volgt uit:

  "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"
                }
              },
              {
                "provider": "02d06793-efeb-48c8-8f7f-09713309a810",
                "scheduledTransferLogLevelFilter": "Information",
                "scheduledTransferKeywordFilter": "4611686018427387904",
                "scheduledTransferPeriod": "PT5M",
                "DefaultEvents": {
                "eventDestination": "ServiceFabricSystemEventTable"
                }
              }
            ]
          }
        }
      },

Verzamelen van nieuwe EventSource-kanalen

Als u diagnostische gegevens wilt bijwerken om logboeken te verzamelen van nieuwe EventSource-kanalen die een nieuwe toepassing vertegenwoordigen die u gaat implementeren, moet u dezelfde stappen uitvoeren als eerder beschreven voor de installatie van Diagnostische gegevens voor een bestaand cluster.

Werk de EtwEventSourceProviderConfiguration sectie in het template.json-bestand bij om vermeldingen toe te voegen voor de nieuwe EventSource-kanalen voordat u de configuratie-update toepast met behulp van de New-AzResourceGroupDeployment PowerShell-opdracht. De naam van de gebeurtenisbron wordt gedefinieerd als onderdeel van uw code in het door Visual Studio gegenereerde ServiceEventSource.cs-bestand.

Als uw gebeurtenisbron bijvoorbeeld My-Eventsource heet, voegt u de volgende code toe om de gebeurtenissen uit My-Eventsource in een tabel met de naam MyDestinationTableName te plaatsen.

{
  "provider": "My-Eventsource",
  "scheduledTransferPeriod": "PT5M",
  "DefaultEvents": {
    "eventDestination": "MyDestinationTableName"
  }
}

Als u prestatiemeteritems of gebeurtenislogboeken wilt verzamelen, wijzigt u de Resource Manager-sjabloon met behulp van de voorbeelden in Een virtuele Windows-machine maken met bewaking en diagnose met behulp van een Azure Resource Manager-sjabloon. Publiceer vervolgens de Resource Manager-sjabloon opnieuw.

Prestatiemeteritems verzamelen

Als u metrische prestatiegegevens van uw cluster wilt verzamelen, voegt u de prestatiemeteritems toe aan uw WadCfg > DiagnosticMonitorConfiguration in de Resource Manager-sjabloon voor uw cluster. Zie Prestatiebewaking met WAD voor stappen voor het wijzigen van uw WadCfg prestatiemeteritems om specifieke prestatiemeteritems te verzamelen. Raadpleeg Service Fabric-prestatiemeteritems voor een lijst met prestatiemeteritems die u kunt verzamelen.

Als u een Application Insights-sink gebruikt, zoals beschreven in de onderstaande sectie en deze metrische gegevens wilt weergeven in Application Insights, moet u de sinknaam toevoegen in de sectie 'sinks', zoals hierboven wordt weergegeven. Hiermee worden automatisch de prestatiemeteritems verzonden die afzonderlijk zijn geconfigureerd voor uw Application Insights-resource.

Logboeken verzenden naar Application Insights

Application Insights configureren met WAD

Notitie

Dit is momenteel alleen van toepassing op Windows-clusters.

Er zijn twee primaire manieren om gegevens van WAD te verzenden naar Azure-toepassing Insights. Dit wordt bereikt door een Application Insights-sink toe te voegen aan de WAD-configuratie, via de Azure-portal of via een Azure Resource Manager-sjabloon.

Een Application Insights Instrumentation-sleutel toevoegen bij het maken van een cluster in Azure Portal

Een AIKey toevoegen

Wanneer u een cluster maakt en Diagnostische gegevens is ingeschakeld, wordt een optioneel veld weergegeven om een Application Insights Instrumentation-sleutel in te voeren. Als u hier uw Application Insights-sleutel plakt, wordt de Application Insights-sink automatisch voor u geconfigureerd in de Resource Manager-sjabloon die wordt gebruikt om uw cluster te implementeren.

De Application Insights-sink toevoegen aan de Resource Manager-sjabloon

Voeg in de WadCfg van de Resource Manager-sjabloon een sink toe door de volgende twee wijzigingen op te slaan:

  1. Voeg de sinkconfiguratie direct toe nadat de declaratie van de DiagnosticMonitorConfiguration sink is voltooid:

    "SinksConfig": {
        "Sink": [
            {
                "name": "applicationInsights",
                "ApplicationInsights": "***ADD INSTRUMENTATION KEY HERE***"
            }
        ]
    }
    
    
  2. Neem de sink op in de DiagnosticMonitorConfiguration sink door de volgende regel toe te voegen aan de DiagnosticMonitorConfigurationWadCfg (rechts voordat de EtwProviders sink wordt gedeclareerd):

    "sinks": "applicationInsights"
    

In beide voorgaande codefragmenten werd de naam applicationInsights gebruikt om de sink te beschrijven. Dit is geen vereiste en zolang de naam van de sink is opgenomen in 'sinks', kunt u de naam instellen op een willekeurige tekenreeks.

Momenteel worden logboeken van het cluster weergegeven als traceringen in de logboekviewer van Application Insights. Aangezien de meeste traceringen die afkomstig zijn van het platform informatieniveau hebben, kunt u ook overwegen om de sinkconfiguratie te wijzigen zodat alleen logboeken van het type Waarschuwing of Fout worden verzonden. U kunt dit doen door kanalen toe te voegen aan uw sink, zoals beschreven in dit artikel.

Notitie

Als u een onjuiste Application Insights-sleutel gebruikt in de portal of in uw Resource Manager-sjabloon, moet u de sleutel handmatig wijzigen en het cluster bijwerken/opnieuw implementeren.

Volgende stappen

Zodra u de diagnostische gegevens van Azure correct hebt geconfigureerd, ziet u gegevens in uw Storage-tabellen uit de ETW- en EventSource-logboeken. Als u ervoor kiest om Azure Monitor-logboeken, Kibana of een ander gegevensanalyse- en visualisatieplatform te gebruiken dat niet rechtstreeks is geconfigureerd in de Resource Manager-sjabloon, moet u het platform van uw keuze instellen om de gegevens uit deze opslagtabellen te lezen. Dit doet u voor Azure Monitor-logboeken is relatief triviaal en wordt uitgelegd in gebeurtenis- en logboekanalyse. Application Insights is een beetje een speciaal geval in deze zin, omdat het kan worden geconfigureerd als onderdeel van de configuratie van de diagnostische extensie, dus raadpleeg het juiste artikel als u ervoor kiest OM AI te gebruiken.

Notitie

Er is momenteel geen manier om de gebeurtenissen te filteren of op te zoeken die naar de tabel worden verzonden. Als u geen proces implementeert om gebeurtenissen uit de tabel te verwijderen, blijft de tabel groeien. Op dit moment is er een voorbeeld van een service voor het opschonen van gegevens die wordt uitgevoerd in het Watchdog-voorbeeld. Het wordt aanbevolen dat u er ook zelf een schrijft, tenzij u een goede reden hebt om logboeken op te slaan buiten een tijdsbestek van 30 of 90 dagen.