Aggregazione e raccolta di eventi con Diagnostica di Microsoft AzureEvent aggregation and collection using Windows Azure Diagnostics

Quando si esegue un cluster Azure Service Fabric, è consigliabile raccogliere i log da tutti i nodi in una posizione centrale.When you're running an Azure Service Fabric cluster, it's a good idea to collect the logs from all the nodes in a central location. Il salvataggio dei log in una posizione centrale semplifica l'analisi e la risoluzione di eventuali problemi nel cluster o nelle applicazioni e nei servizi in esecuzione nel cluster.Having the logs in a central location helps you analyze and troubleshoot issues in your cluster, or issues in the applications and services running in that cluster.

Un modo per caricare e raccogliere i log consiste nell'usare l'estensione Diagnostica di Microsoft Azure, che carica i log in Archiviazione di Azure e offre anche la possibilità di inviarli ad Azure Application Insights o Hub eventi.One way to upload and collect logs is to use the Windows Azure Diagnostics (WAD) extension, which uploads logs to Azure Storage, and also has the option to send logs to Azure Application Insights or Event Hubs. È anche possibile usare un processo esterno per leggere gli eventi dalla risorsa di archiviazione e inserirli in una piattaforma di analisi come Log Analytics o in un'altra soluzione di analisi di log.You can also use an external process to read the events from storage and place them in an analysis platform product, such as Log Analytics or another log-parsing solution.

prerequisitiPrerequisites

In questo articolo vengono usati gli strumenti seguenti:The following tools are used in this article:

Eventi della piattaforma Service FabricService Fabric platform events

Service Fabric offre alcuni canali di registrazione predefiniti. Tra questi, i canali seguenti vengono preconfigurati con l'estensione per inviare i dati di monitoraggio e diagnostica a una tabella di archiviazione o un'altra posizione:Service Fabric sets you up with a few out-of-the-box logging channels, of which the following channels are pre-configured with the extension to send monitoring and diagnostics data to a storage table or elsewhere:

Distribuire l'estensione Diagnostica tramite il portaleDeploy the Diagnostics extension through the portal

Il primo passaggio per la raccolta dei log consiste nel distribuire l'estensione Diagnostica nei nodi del set di scalabilità di macchine virtuali nel cluster Service Fabric.The first step in collecting logs is to deploy the Diagnostics extension on the virtual machine scale set nodes in the Service Fabric cluster. Questa estensione raccoglie i log in ogni VM e li carica nell'account di archiviazione specificato.The Diagnostics extension collects logs on each VM and uploads them to the storage account that you specify. La procedura seguente illustra come eseguire questa operazione per i cluster nuovi ed esistenti tramite il portale di Azure e i modelli di Azure Resource Manager.The following steps outline how to accomplish this for new and existing clusters through the Azure portal and Azure Resource Manager templates.

Distribuire l'estensione Diagnostica nell'ambito della creazione del cluster tramite il portale di AzureDeploy the Diagnostics extension as part of cluster creation through Azure portal

Quando si crea il cluster, nel passaggio di configurazione del cluster espandere le impostazioni facoltative e verificare che Diagnostica sia impostata su Attivato (impostazione predefinita).When creating your cluster, in the cluster configuration step, expand the optional settings and ensure that Diagnostics is set to On (the default setting).

Impostazioni di diagnostica di Azure nel portale per la creazione del cluster

Si consiglia di scaricare il modello prima di fare clic su Crea nel passaggio finale.We highly recommend that you download the template before you click Create in the final step. Per informazioni dettagliate, vedere Configurare un cluster di Service Fabric usando un modello di Azure Resource Manager.For details, refer to Set up a Service Fabric cluster by using an Azure Resource Manager template. Il modello è necessario per apportare modifiche ai canali (elencati in precedenza) da cui raccogliere i dati.You need the template to make changes on what channels (listed above) to gather data from.

Modello di cluster

Dopo aver impostato l'aggregazione di eventi in Archiviazione di Azure, configurare Log Analytics per ottenere informazioni dettagliate ed eseguire query su tali informazioni nel portale di Log Analytics.Now that you're aggregating events in Azure Storage, set up Log Analytics to gain insights and query them in the Log Analytics portal

Nota

Attualmente non è possibile filtrare o eliminare gli eventi inviati alle tabelle. Se non si implementa un processo per rimuovere gli eventi dalla tabella, le dimensioni della tabella continueranno ad aumentare (il limite massimo è di 50 GB). Le istruzioni su come modificare questa impostazione sono disponibili più avanti in questo articolo. Inoltre, è disponibile un esempio di servizio di eliminazione dati in esecuzione nel watchdog di esempio. È consigliabile scriverne uno personalizzato, a meno che non esista un motivo valido per archiviare i log per un intervallo di tempo superiore a 30 o 90 giorni.

Distribuire l'estensione Diagnostica tramite Azure Resource ManagerDeploy the Diagnostics extension through Azure Resource Manager

Creare un cluster con l'estensione DiagnosticaCreate a cluster with the diagnostics extension

Per creare un cluster tramite Resource Manager, è necessario aggiungere il file JSON di configurazione di Diagnostica al modello di Resource Manager completo prima di creare il cluster.To create a cluster by using Resource Manager, you need to add the Diagnostics configuration JSON to the full Resource Manager template before you create the cluster. Gli esempi relativi ai modelli di Gestione risorse includono un modello di cluster con 5 VM con aggiunta della configurazione di Diagnostica,We provide a sample five-VM cluster Resource Manager template with Diagnostics configuration added to it as part of our Resource Manager template samples. disponibile nella raccolta di esempi di Azure nella pagina relativa all'esempio di modello di Resource Manager di cluster con cinque nodi con Diagnostica.You can see it at this location in the Azure Samples gallery: Five-node cluster with Diagnostics Resource Manager template sample.

Per visualizzare l'impostazione di Diagnostica nel modello di Resource Manager, aprire il file azuredeploy.json e cercare IaaSDiagnostics.To see the Diagnostics setting in the Resource Manager template, open the azuredeploy.json file and search for IaaSDiagnostics. Per creare un cluster con questo modello, è sufficiente selezionare il pulsante di distribuzione in Azure disponibile nel collegamento precedente.To create a cluster by using this template, select the Deploy to Azure button available at the previous link.

In alternativa, è possibile scaricare l'esempio di Resource Manager, modificarlo e creare un cluster con il modello modificato mediante il comando New-AzureRmResourceGroupDeployment in una finestra di Azure PowerShell.Alternatively, you can download the Resource Manager sample, make changes to it, and create a cluster with the modified template by using the New-AzureRmResourceGroupDeployment command in an Azure PowerShell window. Per i parametri passati al comando, vedere il codice seguente.See the following code for the parameters that you pass in to the command. Per informazioni dettagliate sulla distribuzione di un gruppo di risorse con PowerShell, vedere l'articolo su come distribuire un gruppo di risorse con un modello di Azure Resource Manager.For detailed information on how to deploy a resource group by using PowerShell, see the article Deploy a resource group with the Azure Resource Manager template.

Aggiungere l'estensione Diagnostica in un cluster esistenteAdd the diagnostics extension to an existing cluster

Se in un cluster esistente non è stata distribuita l'estensione Diagnostica, è possibile aggiungerla o aggiornarla tramite il modello del cluster.If you have an existing cluster that doesn't have Diagnostics deployed, you can add or update it via the cluster template. Modificare il modello di Resource Manager usato per creare il cluster esistente o scaricare il modello dal portale come descritto in precedenza.Modify the Resource Manager template that's used to create the existing cluster or download the template from the portal as described earlier. Modificare il file template.json eseguendo le attività seguenti:Modify the template.json file by performing the following tasks:

Aggiungere una nuova risorsa di archiviazione al modello nella sezione risorse.Add a new storage resource to the template by adding to the resources section.

{
  "apiVersion": "2015-05-01-preview",
  "type": "Microsoft.Storage/storageAccounts",
  "name": "[parameters('applicationDiagnosticsStorageAccountName')]",
  "location": "[parameters('computeLocation')]",
  "sku": {
    "accountType": "[parameters('applicationDiagnosticsStorageAccountType')]"
  },
  "tags": {
    "resourceType": "Service Fabric",
    "clusterName": "[parameters('clusterName')]"
  }
},

Aggiungere quindi alla sezione parametri subito dopo le definizioni dell'account di archiviazione, tra supportLogStorageAccountName.Next, add to the parameters section just after the storage account definitions, between supportLogStorageAccountName. Sostituire il testo segnaposto storage account name goes here con il nome dell'account di archiviazione preferito.Replace the placeholder text storage account name goes here with the name of the storage account you'd like.

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

Aggiornare quindi la sezione VirtualMachineProfile del file template.json aggiungendo quanto segue all'interno della matrice delle estensioni.Then, update the VirtualMachineProfile section of the template.json file by adding the following code within the extensions array. Assicurarsi di aggiungere una virgola all'inizio o alla fine, a seconda del punto di inserimento.Be sure to add a comma at the beginning or the end, depending on where it's inserted.

{
    "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"
                    }
                }
                ]
            }
            }
        },
        "StorageAccount": "[parameters('applicationDiagnosticsStorageAccountName')]"
        },
        "typeHandlerVersion": "1.5"
    }
}

Dopo aver modificato il file template.json come descritto, pubblicare nuovamente il modello di Resource Manager.After you modify the template.json file as described, republish the Resource Manager template. Se il modello è stato esportato, eseguire il file deploy.ps1 per pubblicarlo di nuovo.If the template was exported, running the deploy.ps1 file republishes the template. Dopo la distribuzione, assicurarsi che il valore di ProvisioningState sia Succeeded.After you deploy, ensure that ProvisioningState is Succeeded.

Suggerimento

Se si distribuiranno contenitori nel cluster, abilitare l'acquisizione delle statistiche Docker in Diagnostica di Microsoft Azure aggiungendo quanto segue alla sezione WadCfg > DiagnosticMonitorConfiguration.

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

Aggiornare la quota di archiviazioneUpdate storage quota

Dato che le tabelle popolate dall'estensione aumentano fino al raggiungimento della quota, è possibile valutare la possibilità di ridurre le dimensioni della quota.Since the tables populated by the extension grows until the quota is hit, you may want to consider decreasing the quota size. Il valore predefinito è 50 GB e può essere configurato nel modello nel campo overallQuotainMB in DiagnosticMonitorConfiguration.The default value is 50 GB and is configurable in the template under the overallQuotainMB field under DiagnosticMonitorConfiguration

"overallQuotaInMB": "50000",

Configurazioni di raccolta logLog collection configurations

Sono disponibili per la raccolta anche log da canali aggiuntivi; di seguito sono riportare alcune delle configurazioni più comuni che è possibile apportare nel modello per i cluster in esecuzione in Azure.Logs from additional channels are also available for collection, here are some of the most common configurations you can make in the template for clusters running in Azure.

  • Canale operativo - Base: abilitato per impostazione predefinita, operazioni generali eseguite da Service Fabric e dal cluster, inclusi gli eventi per l'attivazione di un nodo, la distribuzione di una nuova applicazione, il ripristino dello stato precedente a un aggiornamento e così via. Per un elenco di eventi, consultare gli Eventi del canale operativo.Operational Channel - Base: Enabled by default, high-level operations performed by Service Fabric and the cluster, including events for a node coming up, a new application being deployed, or an upgrade rollback, etc. For a list of events, refer to Operational Channel Events.
      scheduledTransferKeywordFilter: "4611686018427387904"
  • Canale operativo - Dettagliato: sono inclusi i rapporti sull'integrità e le decisioni sul bilanciamento del carico, oltre a tutti gli elementi del canale operativo di base.Operational Channel - Detailed: This includes health reports and load balancing decisions, plus everything in the base operational channel. Questi eventi sono generati dal sistema o dal codice usando le API di creazione di report di integrità o caricamento, ad esempio ReportPartitionHealth o ReportLoad.These events are generated by either the system or your code by using the health or load reporting APIs such as ReportPartitionHealth or ReportLoad. Per visualizzare tali eventi nel visualizzatore eventi di diagnostica di Visual Studio, aggiungere "Microsoft-ServiceFabric:4:0x4000000000000008" all'elenco di provider ETW.To view these events in Visual Studio's Diagnostic Event Viewer add "Microsoft-ServiceFabric:4:0x4000000000000008" to the list of ETW providers.
      scheduledTransferKeywordFilter: "4611686018427387912"
  • Canale per la messaggistica e i dati - Base: registri ed eventi critici generati nella messaggistica (attualmente solo il ReverseProxy) e il percorso dei dati, oltre ai log dettagliati sul canale operativo.Data and Messaging Channel - Base: Critical logs and events generated in the messaging (currently only the ReverseProxy) and data path, in addition to detailed operational channel logs. Questi eventi riguardano errori di elaborazione delle richieste e altri problemi critici nel ReverseProxy, oltre alle richieste elaborate.These events are request processing failures and other critical issues in the ReverseProxy, as well as requests processed. Questa è l'indicazione per la registrazione completa.This is our recommendation for comprehensive logging. Per visualizzare tali eventi nel visualizzatore eventi di diagnostica di Visual Studio, aggiungere "Microsoft-ServiceFabric:4:0x4000000000000010" all'elenco di provider ETW.To view these events in Visual Studio's Diagnostic Event Viewer, add "Microsoft-ServiceFabric:4:0x4000000000000010" to the list of ETW providers.
      scheduledTransferKeywordFilter: "4611686018427387928"
  • Canale per la messaggistica e i dati - Dettagliato: canale dettagliato che contiene tutti i registri non critici di dati e messaggistica nel cluster, oltre ai log dettagliati sul canale operativo.Data & Messaging Channel - Detailed: Verbose channel that contains all the non-critical logs from data and messaging in the cluster and the detailed operational channel. Per informazioni dettagliate sulla risoluzione dei problemi relativi a tutti gli eventi del proxy inverso, vedere la guida alla diagnostica dei problemi relativi al proxy inverso.For detailed troubleshooting of all reverse proxy events, refer to the reverse proxy diagnostics guide. Per visualizzare tali eventi nel visualizzatore eventi di diagnostica di Visual Studio, aggiungere "Microsoft-ServiceFabric:4:0x4000000000000020" all'elenco di provider ETW.To view these events in Visual Studio's Diagnostic Event viewer, add "Microsoft-ServiceFabric:4:0x4000000000000020" to the list of ETW providers.
      scheduledTransferKeywordFilter: "4611686018427387944"

Nota

Questo canale ha un volume molto elevato di eventi; permettendo la raccolta di eventi da questo canale dettagliato vengono generate numerose tracce e pertanto ciò può comportare un maggiore uso della capacità di archiviazione. Attivare questa funzionalità solo quando è strettamente necessario.

Per abilitare il Canale per la messaggistica e i dati si consiglia una registrazione completa; EtwManifestProviderConfiguration nel modello WadCfg avrà un aspetto simile al seguente:To enable the Base Data and Messaging Channel our recommendation for comprehensive logging, The EtwManifestProviderConfiguration in the WadCfg of your template would look like the following:

  "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": "4611686018427387928",
                "scheduledTransferPeriod": "PT5M",
                "DefaultEvents": {
                  "eventDestination": "ServiceFabricSystemEventTable"
                }
              }
            ]
          }
        }
      },

Eseguire la raccolta dai nuovi canali EventSourceCollect from new EventSource channels

Per aggiornare Diagnostica in modo da raccogliere log da nuovi canali EventSource che rappresentano una nuova applicazione da distribuire, eseguire gli stessi passaggi descritti in precedenza per la configurazione di Diagnostica per un cluster esistente.To update Diagnostics to collect logs from new EventSource channels that represent a new application that you're about to deploy, perform the same steps as previously described for the setup of Diagnostics for an existing cluster.

Aggiornare la sezione EtwEventSourceProviderConfiguration nel file template.json per aggiungere voci per i nuovi canali EventSource prima di applicare l'aggiornamento della configurazione tramite il comando New-AzureRmResourceGroupDeployment di PowerShell.Update the EtwEventSourceProviderConfiguration section in the template.json file to add entries for the new EventSource channels before you apply the configuration update by using the New-AzureRmResourceGroupDeployment PowerShell command. Il nome dell'origine evento è definito come parte del codice del file ServiceEventSource.cs generato da Visual Studio.The name of the event source is defined as part of your code in the Visual Studio-generated ServiceEventSource.cs file.

Ad esempio, se l'origine evento è denominato My Eventsource, aggiungere il codice seguente per inserire gli eventi da My Eventsource in una tabella denominata MyDestinationTableName.For example, if your event source is named My-Eventsource, add the following code to place the events from My-Eventsource into a table named MyDestinationTableName.

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

Per raccogliere i contatori delle prestazioni o i log eventi, modificare il modello di Resource Manager tramite gli esempi forniti in Creare una macchina virtuale Windows con monitoraggio e diagnostica mediante i modelli di Azure Resource Manager.To collect performance counters or event logs, modify the Resource Manager template by using the examples provided in Create a Windows virtual machine with monitoring and diagnostics by using an Azure Resource Manager template. Pubblicare di nuovo il modello di Resource Manager.Then, republish the Resource Manager template.

Raccogliere i contatori delle prestazioniCollect Performance Counters

Per raccogliere metriche delle prestazioni dal cluster, aggiungere i contatori delle prestazioni a "WadCfg > DiagnosticMonitorConfiguration" nel modello di Resource Manager per il cluster.To collect performance metrics from your cluster, add the performance counters to your "WadCfg > DiagnosticMonitorConfiguration" in the Resource Manager template for your cluster. Vedere Monitoraggio delle prestazioni con Diagnostica di Microsoft Azure per le istruzioni su come modificare WadCfg per raccogliere contatori delle prestazioni specifici.See Performance monitoring with WAD for steps on modifying your WadCfg to collect specific performance counters. Per l'elenco dei contatori delle prestazioni che è consigliabile raccogliere, vedere l'articolo relativo ai contatori delle prestazioni in Service Fabric.Reference Service Fabric Performance Counters for a list of performance counters that we recommend collecting.

Se si usa un sink di Application Insights, come descritto nella sezione di seguito, e si vuole che queste metriche vengano visualizzate in Application Insights, aggiungere il nome del sink nella sezione "sinks" illustrata sopra.If you are using an Application Insights sink, as described in the section below, and want these metrics to show up in Application Insights, then make sure to add the sink name in the "sinks" section as shown above. I contatori delle prestazioni configurati singolarmente verranno inviati automaticamente alla risorsa di Application Insights.This will automatically send the performance counters that are individually configured to your Application Insights resource.

Inviare i log ad Application InsightsSend logs to Application Insights

L'invio dei dati di monitoraggio e diagnostica ad Application Insights può essere eseguito nell'ambito della configurazione di Diagnostica di Microsoft Azure.Sending monitoring and diagnostics data to Application Insights (AI) can be done as part of the WAD configuration. Se si decide di usare Application Insights per l'analisi e la visualizzazione degli eventi, vedere la procedura per configurare un sink di Application Insights nel file di configurazione "WadCfg".If you decide to use AI for event analysis and visualization, read how to set up an AI sink as part of your "WadCfg".

Passaggi successiviNext steps

Dopo aver configurato correttamente Diagnostica di Azure, sarà possibile visualizzare i dati nelle tabelle di archiviazione dai log EventSource ed ETW.Once you have correctly configured Azure diagnostics, you will see data in your Storage tables from the ETW and EventSource logs. Se si sceglie di usare Log Analytics, Kibana o qualsiasi altra piattaforma di analisi e visualizzazione dati non configurata direttamente nel modello di Resource Manager, assicurarsi di configurare la piattaforma scelta per la lettura dei dati da queste tabelle di archiviazione.If you choose to use Log Analytics, Kibana, or any other data analytics and visualization platform that is not directly configured in the Resource Manager template, make sure to set up the platform of your choice to read in the data from these storage tables. Questa operazione, relativamente semplice per Log Analytics, è illustrata in Analisi e visualizzazione degli eventi.Doing this for Log Analytics is relatively trivial, and is explained in Event and log analysis. Application Insights è un caso particolare sotto questo aspetto, perché può essere configurato nell'ambito della configurazione dell'estensione Diagnostica. Se si sceglie di usare Application Insights, vedere l'articolo appropriato.Application Insights is a bit of a special case in this sense, since it can be configured as part of the Diagnostics extension configuration, so refer to the appropriate article if you choose to use AI.

Nota

Attualmente non è possibile filtrare o eliminare gli eventi inviati alla tabella. Se non si implementa un processo per rimuovere gli eventi dalla tabella, le dimensioni della tabella continueranno ad aumentare. È attualmente disponibile un esempio di servizio di eliminazione dati in esecuzione nel watchdog di esempio. È consigliabile scriverne uno personalizzato, a meno che non esista un motivo valido per archiviare i log per un intervallo di tempo superiore a 30 o 90 giorni.