Monitoraggio e diagnostica in Azure Service FabricMonitoring and diagnostics for Azure Service Fabric

Il monitoraggio e la diagnostica sono essenziali per lo sviluppo, il test e la distribuzione di applicazioni e servizi in qualsiasi ambiente.Monitoring and diagnostics are critical to developing, testing, and deploying applications and services in any environment. Le soluzioni di Service Fabric funzionano meglio quando si pianifica e si implementa il monitoraggio e la diagnostica che consentono di verificare che le applicazioni e i servizi funzionino come previsto in un ambiente di sviluppo locale o in fase di produzione.Service Fabric solutions work best when you plan and implement monitoring and diagnostics that help ensure applications and services are working as expected in a local development environment or in production.

Gli obiettivi principali di monitoraggio e diagnostica sono:The main goals of monitoring and diagnostics are to:

  • Rilevare e diagnosticare i problemi di hardware e infrastrutturaDetect and diagnose hardware and infrastructure issues
  • Rilevare i problemi di software e app, ridurre i tempi di inattività del servizioDetect software and app issues, reduce service downtime
  • Comprendere l'utilizzo delle risorse e supportare le decisioni operativeUnderstand resource consumption and help drive operations decisions
  • Ottimizzare le prestazioni delle applicazioni, dei servizi e delle infrastruttureOptimize application, service, and infrastructure performance
  • Generare informazioni aziendali dettagliate e identificare le aree di miglioramentoGenerate business insights and identify areas of improvement

Il flusso di lavoro generale di monitoraggio e diagnostica è costituito da tre passaggi:The overall workflow of monitoring and diagnostics consists of three steps:

  1. Generazione di eventi: sono inclusi eventi, ovvero log, tracce, eventi personalizzati, sia a livello infrastruttura, cioè cluster, che a livello piattaforma e applicazione/servizioEvent generation: this includes events (logs, traces, custom events) at the infrastructure (cluster), platform, and application / service level
  2. Aggregazione di eventi: gli eventi generati devono essere raccolti e aggregati prima di poter essere visualizzatiEvent aggregation: generated events need to be collected and aggregated before they can be displayed
  3. Analisi: gli eventi devono essere visualizzati e devono essere accessibili in un formato, per consentirne l'analisi e la visualizzazione in base alle esigenze specificheAnalysis: events need to be visualized and accessible in some format, to allow for analysis and display as needed

Sono disponibili molti prodotti che coprono le tre aree. Gli utenti sono liberi di scegliere tecnologie diverse per ognuno di essi.Multiple products are available that cover these three areas, and you are free to choose different technologies for each. Per disporre di una soluzione di monitoraggio end-to-end per il cluster, è importante assicurarsi che queste tecnologie funzionino in combinazione.It is important to make sure that the various pieces work together to deliver an end-to-end monitoring solution for your cluster.

Generazione di eventiEvent generation

Il primo passaggio nel flusso di lavoro del monitoraggio e della diagnostica è la creazione e la generazione di eventi e log.The first step in the monitoring and diagnostics workflow is the creation and generation of events and logs. Gli eventi, i log e le tracce possono essere generati a due livelli: al livello piattaforma, inclusi cluster, computer o azioni di Service Fabric, o al livello applicazione, ovvero qualsiasi strumentazione aggiunta alle app e ai servizi distribuiti nel cluster.These events, logs, and traces are generated at two levels: the platform layer (including the cluster, the machines, or Service Fabric actions) or the application layer (any instrumentation added to apps and services deployed to the cluster). Gli eventi di ognuno di questi livelli sono personalizzabili, anche se Service Fabric offre alcuni strumenti per impostazione predefinita.Events at each of these levels are customizable, though Service Fabric does provide some instrumentation by default.

Per comprendere ciò che viene offerto e come aggiungere altri strumenti, leggere altre informazioni su eventi a livello piattaforma ed eventi a livello di applicazione.Read more about platform level events and application level events to understand what is provided and how to add further instrumentation.

Dopo aver deciso quale provider di log usare, è necessario assicurarsi che i log vengono aggregati e archiviati correttamente.After making a decision on the logging provider you would like to use, you need to make sure your logs are being aggregated and stored correctly.

Aggregazione di eventiEvent aggregation

Per raccogliere i log e gli eventi generati dalle applicazioni e dal cluster, in genere è consigliabile usare Diagnostica di Azure, più simile alla raccolta di log basata su agenti, o EventFlow, una raccolta di log nel processo.For collecting the logs and events being generated by your applications and your cluster, we typically recommend using Azure Diagnostics (more similar to agent-based log collection) or EventFlow (in-process log collection).

Nei servizi di Service Fabric è possibile raccogliere log di applicazioni tramite l'estensione Diagnostica di Azure se il set di origini e destinazioni dei log non cambia spesso e se il mapping tra le origini e le relative destinazioni è semplice.Collecting application logs using Azure Diagnostics extension is a good option for Service Fabric services if the set of log sources and destinations does not change often and there is a straightforward mapping between the sources and their destinations. Questo perché la configurazione di Diagnostica di Azure avviene a livello di Resource Manager, pertanto per apportare modifiche importanti alla configurazione è necessario l'aggiornamento o la ridistribuzione del cluster.The reason for this is configuring Azure Diagnostics happens at the Resource Manager layer, so making significant changes to the configuration requires updating/redeploying the cluster. Inoltre, viene usato al meglio per assicurare che i log vengono archiviati in un luogo più permanente, dove è possibile accedervi tramite varie piattaforme di analisi.Additionally, it is best utilized in making sure your logs are being stored somewhere a little more permanent, from where they can be accessed by various analysis platforms. Ciò significa che è meno efficiente per una pipeline rispetto all'uso di un'opzione come EventFlow.This means that it ends up being less efficient of a pipeline than going with an option like EventFlow.

L'uso di EventFlow consente di usare servizi per inviare i log direttamente a una piattaforma di analisi e visualizzazione e/o di archiviazione.Using EventFlow allows you to have services send their logs directly to an analysis and visualization platform, and/or to storage. È possibile usare altre librerie, ILogger, Serilog e così via, per lo stesso scopo, ma EventFlow ha il vantaggio di essere stata progettata specificamente per la raccolta di log nel processo e per supportare i servizi di Service Fabric.Other libraries (ILogger, Serilog, etc.) might be used for the same purpose, but EventFlow has the benefit of having been designed specifically for in-process log collection and to support Service Fabric services. I potenziali vantaggi che ne derivano sono numerosi:This tends to have several potential advantages:

  • Facilità di configurazione e distribuzioneEasy configuration and deployment
    • La configurazione della raccolta dei dati di diagnostica è solo una parte della configurazione del servizioThe configuration of diagnostic data collection is just part of the service configuration. ed è facile mantenerla sempre "sincronizzata" con il resto dell'applicazioneIt is easy to always keep it "in sync" with the rest of the application
    • È facile ottenere la configurazione per ogni applicazione o servizioPer-application or per-service configuration is easily achievable
    • La configurazione delle destinazioni di dati tramite EventFlow dipende solo dall'aggiunta del pacchetto NuGet appropriato e dalla modifica del file eventFlowConfig.jsonConfiguring data destinations through EventFlow is just a matter of adding the appropriate NuGet package and changing the eventFlowConfig.json file
  • FlessibilitàFlexibility
    • L'applicazione può inviare i dati ogni volta che è necessario, purché sia disponibile una libreria client che supporta il sistema di archiviazione dati di destinazione.The application can send the data wherever it needs to go, as long as there is a client library that supports the targeted data storage system. È possibile aggiungere nuove destinazioni in base alle esigenzeNew destinations can be added as desired
    • È possibile implementare complesse regole di acquisizione, filtro e aggregazione datiComplex capture, filtering, and data-aggregation rules can be implemented
  • Accesso al contesto e ai dati di applicazione interniAccess to internal application data and context
    • Il sottosistema di diagnostica in esecuzione nel processo dell'applicazione o del servizio può facilmente aumentare le tracce con informazioni contestualiThe diagnostic subsystem running inside the application/service process can easily augment the traces with contextual information

È importante sottolineare che queste due opzioni non si escludono a vicenda. Pertanto se è possibile eseguire un processo simile usando l'uno o l'altro, sarebbe opportuno configurare entrambi.One thing to note is that these two options are not mutually exclusive and while it is possible to get a similar job done with using one or the other, it could also make sense for you to set up both. Nella maggior parte dei casi, la combinazione di un agente con la raccolta nel processo potrebbe comportare un flusso di lavoro del monitoraggio più affidabile.In most situations, combining an agent with in-process collection could lead to a more reliable monitoring workflow. L'estensione Diagnostica di Azure (agente) potrebbe essere il percorso scelto per i log a livello piattaforma, mentre EventFlow, ovvero la raccolta In-Process, potrebbe essere usata per i log a livello applicazione.The Azure Diagnostics extension (agent) could be your chosen path for platform level logs while you could use EventFlow (in-process collection) for your application level logs. Dopo aver individuato la soluzione più adatta per l'utente, è necessario pensare al modo in cui i dati devono essere analizzati e visualizzati.Once you have figured out what works best for you, it is time to think about how you want your data to be displayed and analyzed.

Analisi di eventiEvent analysis

Per quanto riguarda l'analisi e la visualizzazione dei dati di monitoraggio e diagnostica, nel mercato esistono diverse piattaforme molto funzionali.There are several great platforms that exist in the market when it comes to the analysis and visualization of monitoring and diagnostics data. Le due piattaforme consigliate, OMS e Application Insights, si integrano meglio con Service Fabric, ma si consiglia di considerare anche Elastic Stack, specialmente se si intende eseguire un cluster in un ambiente non in linea, Splunk o qualsiasi altra piattaforma preferita.The two that we recommend are OMS and Application Insights due to their better integration with Service Fabric, but you should also look into the Elastic Stack (especially if you are considering running a cluster in an offline environment), Splunk, or any other platform of your preference.

Nella scelta della piattaforma si deve considerare l'interfaccia utente e le opzioni di query, la possibilità di visualizzare i dati e creare dashboard facilmente leggibili, oltre agli strumenti aggiuntivi offerti per migliorare il monitoraggio, ad esempio gli avvisi automatici.The key points for any platform you choose should include how comfortable you are with the user interface and querying options, the ability to visualize data and create easily readable dashboards, and the additional tools they provide to enhance your monitoring, such as automated alerting.

Oltre alla piattaforma scelta, quando si configura un cluster di Service Fabric come una risorsa di Azure, è anche possibile accedere al servizio di monitoraggio pronto all'uso di Azure per i computer, che risulta utile per il monitoraggio di prestazioni e metriche specifiche.In addition to the platform you choose, when you set up a Service Fabric cluster as an Azure resource, you also get access to Azure's out-of-the-box monitoring for machines, which can be useful for specific performance and metric monitoring.

Monitoraggio di AzureAzure Monitor

È possibile usare Monitoraggio di Azure per monitorare molte risorse di Azure in cui viene creato un cluster di Service Fabric.You can use Azure Monitor to monitor many of the Azure resources on which a Service Fabric cluster is built. Un set di metriche per il set di scalabilità di macchine virtuali e per le singole macchine virtuali viene raccolto automaticamente e visualizzato nel portale di Azure.A set of metrics for the virtual machine scale set and individual virtual machines is automatically collected and displayed in the Azure portal. Per visualizzare le informazioni raccolte, nel portale di Azure selezionare il gruppo di risorse che contiene il cluster di Service Fabric.To view the collected information, in the Azure portal, select the resource group that contains the Service Fabric cluster. Selezionare quindi il set di scalabilità di macchine virtuali da visualizzare.Then, select the virtual machine scale set that you want to view. Nella sezione Monitoraggio selezionare Metriche per visualizzare un grafico dei valori.In the Monitoring section, select Metrics to view a graph of the values.

Visualizzazione del portale di Azure dei dati di metrica raccolti

Per personalizzare i grafici, seguire le istruzioni disponibili in Metriche in Microsoft Azure.To customize the charts, follow the instructions in Metrics in Microsoft Azure. È anche possibile creare avvisi in base a queste metriche, come illustrato in Creare avvisi in Monitoraggio di Azure per servizi di Azure.You also can create alerts based on these metrics, as described in Create alerts in Azure Monitor for Azure services. È possibile inviare avvisi a un servizio di notifica usando webhook, come illustrato in Configurare un webhook in un avviso relativo alle metriche di Azure.You can send alerts to a notification service by using web hooks, as described in Configure a web hook on an Azure metric alert. Monitoraggio di Azure supporta solo una sottoscrizione.Azure Monitor supports only one subscription. Se è necessario monitorare più sottoscrizioni o se sono necessarie funzionalità aggiuntive, Log Analytics, incluso in Microsoft Operations Management Suite, fornisce una soluzione olistica di gestione IT per l'infrastruttura locale e basata sul cloud.If you need to monitor multiple subscriptions, or if you need additional features, Log Analytics, part of Microsoft Operations Management Suite, provides a holistic IT management solution both for on-premises and cloud-based infrastructure. È possibile indirizzare i dati di Monitoraggio di Azure direttamente a Log Analytics, in modo da visualizzare le metriche e i log dell'intero ambiente in un'unica posizione.You can route data from Azure Monitor directly to Log Analytics, so you can see metrics and logs for your entire environment in a single place.

Passaggi successiviNext steps

WatchdogWatchdogs

Un watchdog è un servizio separato che può controllare l'integrità e il carico tra servizi e creare report di integrità per l'intera gerarchia di modello.A watchdog is a separate service that can watch health and load across services, and report health for anything in the health model hierarchy. Questo consente di evitare errori che non verrebbero rilevati visualizzando un singolo servizio.This can help prevent errors that would not be detected based on the view of a single service. Anche i watchdog sono utili per ospitare il codice che esegue azioni correttive senza l'intervento dell'utente, ad esempio, la cancellazione dei file di log nell'archiviazione a determinati intervalli di tempo.Watchdogs are also a good place to host code that performs remedial actions without user interaction (for example, cleaning up log files in storage at certain time intervals). È possibile trovare un'implementazione di esempio del servizio watchdog qui.You can find a sample watchdog service implementation here.

Introduzione alla generazione di eventi e log a livello piattaforma e a livello di applicazione.Get started with understanding how events and logs get generated at the platform level and the application level.