Generazione di eventi e log a livello piattaformaPlatform level event and log generation

Monitoraggio del clusterMonitoring the cluster

Il monitoraggio a livello piattaforma è importante per determinare se l'hardware e il cluster abbiano o meno il comportamento previsto.It is important to monitor at the platform level to determine whether or not your hardware and cluster are behaving as expected. Service Fabric può mantenere in esecuzione le applicazioni durante un errore hardware, ma è comunque necessario diagnosticare se l'errore si sia verificato in un'applicazione o nell'infrastruttura sottostante.Though Service Fabric can keep applications running during a hardware failure, but you still need to diagnose whether an error is occurring in an application or in the underlying infrastructure. È consigliabile monitorare i cluster anche per pianificare in modo più efficiente la capacità e supportare le decisioni in merito all'aggiunta o alla rimozione dell'hardware.You also should monitor your clusters to better plan for capacity, helping in decisions about adding or removing hardware.

Service Fabric fornisce i seguenti canali di log già pronti:Service Fabric provides the following log channels out-of-the-box:

  • Canale operativo: 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.Operational channel: 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.
  • Canale di informazioni operativo: report di integrità e decisioni di bilanciamento del caricoOperational channel - detailed: health reports and load balancing decisions
  • Canale per la messaggistica e i dati: registri ed eventi critici generati nella messaggistica (attualmente solo il ReverseProxy) e il percorso dei dati (modelli di servizi affidabili)Data & Messaging channel: critical logs and events generated in the messaging (currently only the ReverseProxy) and data path (reliable services models)
  • Canale di informazioni per la messaggistica e i dati: canale dettagliato che contiene tutti i registri non critici di dati e messaggistica nel cluster. Questo canale ha un volume molto elevato di eventiData & Messaging channel - detailed: verbose channel that contains all the non-critical logs from data and messaging in the cluster (this channel has a very high volume of events)

Oltre a questi, sono forniti due canali EventSource strutturati, nonché log che vengono raccolti a scopo di supporto.In addition to these, there are two structured EventSource channels provided, as well as logs that we collect for support purposes.

  • Eventi di Reliable Services: eventi specifici del modello di programmazioneReliable Services events: programming model specific events
  • Eventi di Reliable Actors: eventi e contatori delle prestazioni specifici del modello di programmazioneReliable Actors events: programming model specific events and performance counters
  • Log di supporto: log di sistema generati da Service Fabric solo per l'uso da parte di Microsoft per fornire supportoSupport logs: system logs generated by Service Fabric only to be used by us when providing support

Questi diversi canali coprono la maggior parte della registrazione consigliabile a livello piattaforma.These various channels cover most of the platform level logging that is recommended. Per migliorare la registrazione a livello piattaforma, valutare la possibilità di comprendere meglio il modello di integrità e aggiungere report sull'integrità personalizzati e contatori delle prestazioni personalizzati per ottenere una conoscenza in tempo reale dell'impatto dei servizi e delle applicazioni sul cluster.To improve platform level logging, consider investing in better understanding the health model and adding custom health reports, and adding custom Performance Counters to build a real-time understanding of the impact of your services and applications on the cluster.

Creazione di report su integrità e carico di Azure Service FabricAzure Service Fabric health and load reporting

Service Fabric offre un modello di integrità specifico, descritto in dettaglio in questi articoli:Service Fabric has its own health model, which is described in detail in these articles:

Il monitoraggio dell'integrità è fondamentale per vari aspetti dell'uso di un servizio.Health monitoring is critical to multiple aspects of operating a service. Il monitoraggio dell'integrità è particolarmente importante quando Service Fabric esegue l'aggiornamento di un'applicazione denominata.Health monitoring is especially important when Service Fabric performs a named application upgrade. Dopo l'aggiornamento di ogni dominio di aggiornamento del servizio, quando il dominio è disponibile per i clienti, è necessario che superi controlli di integrità prima che la distribuzione passi al dominio di aggiornamento successivo.After each upgrade domain of the service is upgraded and is available to your customers, the upgrade domain must pass health checks before the deployment moves to the next upgrade domain. Se non è possibile ottenere uno stato di integrità ottimale, viene eseguito il rollback della distribuzione, in modo che l'applicazione raggiunga uno stato positivo noto.If good health status cannot be achieved, the deployment is rolled back, so that the application is in a known, good state. Anche se è possibile che alcuni clienti subiscano interruzioni prima del rollback del servizio, la maggior parte dei clienti non riscontra problemi.Although some customers might be affected before the services are rolled back, most customers won't experience an issue. La risoluzione è inoltre relativamente veloce, senza dovere attendere l'intervento di un tecnico.Also, a resolution occurs relatively quickly, and without having to wait for action from a human operator. Con un numero maggiore di controlli di integrità inclusi nel codice, il servizio sarà più resistente alle problematiche di distribuzione.The more health checks that are incorporated into your code, the more resilient your service is to deployment issues.

Un altro aspetto dell'integrità del servizio è dato dalla creazione di report sulle metriche del servizio.Another aspect of service health is reporting metrics from the service. Le metriche sono importanti in Service Fabric perché vengono usate per bilanciare l'uso delle risorse.Metrics are important in Service Fabric because they are used to balance resource usage. Possono anche essere usate come un indicatore dell'integrità del sistema.Metrics also can be an indicator of system health. È ad esempio possibile che sia presente un'applicazione con molti servizi e che ogni istanza segnali una metrica relativa alle richieste al secondo.For example, you might have an application that has many services, and each instance reports a requests per second (RPS) metric. Se uno dei servizi usa più risorse rispetto a un altro, Service Fabric sposta le istanze del servizio nel cluster, provando a mantenere un uso bilanciato delle risorse stesse.If one service is using more resources than another service, Service Fabric moves service instances around the cluster, to try to maintain even resource utilization. Per una spiegazione più dettagliata del funzionamento dell'utilizzo delle risorse, vedere Gestione dell'utilizzo delle risorse e del carico in Service Fabric con le metriche.For a more detailed explanation of how resource utilization works, see Manage resource consumption and load in Service Fabric with metrics.

Le metriche consentono anche di ottenere informazioni approfondite sulle prestazioni del servizio.Metrics also can help give you insight into how your service is performing. Nel corso del tempo, è possibile usare le metriche per assicurarsi che il servizio stia operando entro i parametri previsti.Over time, you can use metrics to check that the service is operating within expected parameters. Se, ad esempio, le tendenze indicano che alle 9:00 del lunedì mattina la media delle richieste al secondo è pari a 1.000, è possibile configurare un report di integrità che genera un avviso se le richieste al secondo sono inferiori a 500 o superiori a 1.500.For example, if trends show that at 9 AM on Monday morning the average RPS is 1,000, then you might set up a health report that alerts you if the RPS is below 500 or above 1,500. È possibile che non si verifichino problemi, ma è comunque consigliabile controllare per assicurare la migliore esperienza possibile per i clienti.Everything might be perfectly fine, but it might be worth a look to be sure that your customers are having a great experience. Il servizio può definire una serie di metriche di cui eseguire il report per l'integrità. Questo comunque non influirà sul bilanciamento delle risorse del cluster.Your service can define a set of metrics that can be reported for health check purposes, but that don't affect the resource balancing of the cluster. Per ottenere questo risultato, impostare il peso delle metriche su zero.To do this, set the metric weight to zero. È consigliabile avviare tutte le metriche con peso zero e non aumentare il peso fino a quando non si è sicuri di aver compreso l'impatto della ponderazione sul bilanciamento delle risorse nel cluster.We recommend that you start all metrics with a weight of zero, and not increase the weight until you are sure that you understand how weighting the metrics affects resource balancing for your cluster.

Suggerimento

Non usare un numero eccessivo di metriche ponderate.Don't use too many weighted metrics. Potrebbe essere difficile comprendere i motivi dello spostamento delle istanze del servizio per il bilanciamento del carico.It can be difficult to understand why service instances are being moved around for balancing. Anche un numero ridotto di metriche può essere molto utile.A few metrics can go a long way!

Tutte le informazioni che possono indicare l'integrità e le prestazioni dell'applicazione possono essere usate per report relativi alle metriche e all'integrità.Any information that can indicate the health and performance of your application is a candidate for metrics and health reports. Un contatore delle prestazioni della CPU può indicare l'uso di un nodo ma non consente di capire se un servizio specifico sia integro, poiché su quel nodo potrebbero essere in esecuzione più servizi.A CPU performance counter can tell you how your node is utilized, but it doesn't tell you whether a particular service is healthy, because multiple services might be running on a single node. Le metriche relative alle richieste al secondo, agli elementi elaborati e alla latenza delle richieste, tuttavia, possono indicare l'integrità di un servizio specifico.But, metrics like RPS, items processed, and request latency all can indicate the health of a specific service.

Per segnalare l'integrità, usare codice analogo al seguente:To report health, use code similar to this:

  if (!result.HasValue)
  {
      HealthInformation healthInformation = new HealthInformation("ServiceCode", "StateDictionary", HealthState.Error);
      this.Partition.ReportInstanceHealth(healthInformation);
  }

Per segnalare una metrica, usare codice analogo al seguente:To report a metric, use code similar to this:

  this.Partition.ReportLoad(new List<LoadMetric> { new LoadMetric("MemoryInMb", 1234), new LoadMetric("metric1", 42) });

Log di supporto di Service FabricService Fabric support logs

Se è necessario contattare il supporto Microsoft per assistenza con il cluster di Azure Service Fabric, saranno quasi sempre richiesti i log di supporto.If you need to contact Microsoft support for help with your Azure Service Fabric cluster, support logs are almost always required. Se il cluster è ospitato in Azure, questi log vengono automaticamente configurati e raccolti in fase di creazione di un cluster.If your cluster is hosted in Azure, support logs are automatically configured and collected as part of creating a cluster. I log vengono archiviati in un account di archiviazione dedicato nel gruppo di risorse del cluster.The logs are stored in a dedicated storage account in your cluster's resource group. L'account di archiviazione non ha un nome predefinito, ma nell'account vengono visualizzati contenitori BLOB e tabelle con nomi che iniziano con fabric.The storage account doesn't have a fixed name, but in the account, you see blob containers and tables with names that start with fabric. Per informazioni sulla configurazione di raccolte di log per un cluster autonomo, vedere Creare un cluster autonomo di Azure Service Fabric e Impostazioni di configurazione per un cluster autonomo in Windows.For information about setting up log collections for a standalone cluster, see Create and manage a standalone Azure Service Fabric cluster and Configuration settings for a standalone Windows cluster. Per istanze autonome di Service Fabric, i log devono essere inviati a una condivisione file locale.For standalone Service Fabric instances, the logs should be sent to a local file share. È obbligatorio disporre di questi log per ottenere assistenza. I log devono essere usati solo dal team di assistenza clienti Microsoft.You are required to have these logs for support, but they are not intended to be usable by anyone outside of the Microsoft customer support team.

Abilitazione della diagnostica per un clusterEnabling Diagnostics for a cluster

Per sfruttare questi log, è consigliabile che durante la creazione del cluster sia abilitata la diagnostica.In order to take advantage of these logs, it is highly recommended that during cluster creation, "Diagnostics" is enabled. Attivando la diagnostica, durante la distribuzione del cluster Diagnostica di Microsoft Azure può riconoscere il canale operativo e quelli di Reliable Services e Reliable Actors e archiviare i dati come illustrato con maggiore dettaglio Aggregare eventi con Diagnostica di Azure.By turning on diagnostics, when the cluster is deployed, Windows Azure Diagnostics is able to acknowledge the Operational, Reliable Services, and Reliable actors channels, and store the data as explained further in Aggregate events with Azure Diagnostics.

Come illustrato sopra, c'è anche un campo facoltativo per aggiungere una chiave di strumentazione di Application Insights (AI).As seen above, there is also an optional field to add an Application Insights (AI) instrumentation key. Se si sceglie di usare AI per l'analisi degli eventi (per altre informazioni, vedere Analisi di eventi con Application Insights), includere la chiave di strumentazione (GUID) della risorsa di AppInsights in questo campo.If you choose to use AI for any event analysis (read more about this in Event Analysis with Application Insights), include the AppInsights resource instrumentationKey (GUID) here.

Se si distribuiranno contenitori nel cluster, abilitare l'acquisizione delle statistiche Docker in Diagnostica di Microsoft Azure aggiungendo quanto segue a "WadCfg > DiagnosticMonitorConfiguration":If you are going to deploy containers to your cluster, enable WAD to pick up docker stats by adding this to your "WadCfg > DiagnosticMonitorConfiguration":

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

Misurazione delle prestazioniMeasuring performance

La misurazione delle prestazioni del cluster consentirà di comprenderne la capacità di gestire il carico e prendere decisioni in merito al ridimensionamento del cluster. Vedere altre informazioni sul ridimensionamento di un cluster in Azure o in locale.Measure performance of your cluster will help you understand how it is able to handle load and drive decisions around scaling your cluster (see more about scaling a cluster on Azure, or on-premises). I dati sulle prestazioni sono utili anche rispetto alle azioni eseguite dall'utente oppure dalle applicazioni e dai servizi, per la futura analisi dei log.Performance data is also useful when compared to actions you or your applications and services may have taken, when analyzing logs in the future.

Per un elenco dei contatori delle prestazioni da raccogliere quando si usa Service Fabric, vedere l'articolo relativo ai contatori delle prestazioni in Service Fabric.For a list of performance counters to collect when using Service Fabric, see Performance Counters in Service Fabric

Di seguito sono illustrati due modi comuni disponibili per configurare la raccolta dei dati sulle prestazioni del cluster.Here are two common ways in which you can set up collecting performance data for your cluster:

  • Uso di un agente: è il modo preferito per raccogliere i dati sulle prestazioni da un computer, perché gli agenti includono in genere un elenco di possibili metriche delle prestazioni disponibili per la raccolta e scegliere o modificare le metriche da raccogliere è un processo relativamente semplice.Using an agent: this is the preferred way of collecting performance from a machine, since agents usually have a list of possible performance metrics that can be collected, and it is a relatively easy process to choose the metrics you want to collect or change them. Per altre informazioni sull'agente OMS, un agente di monitoraggio di questo tipo che può acquisire i dati sulle prestazioni delle VM del cluster e dei contenitori distribuiti, vedere gli articoli su come configurare OMS per Service Fabric e sulla configurazione dell'agente Windows di OMS.Read about how to configure the OMS for Service Fabric and Setting up the OMS Windows Agent articles to learn more about the OMS agent, which is one such monitoring agent that is able to pick up performance data for cluster VMs and deployed containers.

  • Configurazione della diagnostica per la scrittura dei contatori delle prestazioni in una tabella: per i cluster in Azure, è necessario modificare la configurazione di Diagnostica di Azure in modo da acquisire i contatori delle prestazioni appropriati per le VM del cluster e, se verranno distribuiti contenitori, abilitare l'acquisizione delle statistiche Docker.Configuring diagnostics to write performance counters to a table: for clusters on Azure, this means changing the Azure Diagnostics configuration to pick up the appropriate performance counters from the VMs in your cluster, and enabling it to pick up docker stats if you will be deploying any containers. Per configurare la raccolta dei contatori delle prestazioni, leggere l'articolo relativo alla configurazione dei contatori delle prestazioni in Diagnostica di Microsoft Azure per Service Fabric.Read about configuring Performance Counters in WAD in Service Fabric to set up performance counter collection.

Passaggi successiviNext steps

Per poter essere inviati a qualsiasi piattaforma di analisi, i log e gli eventi devono prima essere aggregati.Your logs and events need to be aggregated before they can be sent to any analysis platform. Per comprendere meglio alcune delle opzioni consigliate, vedere gli articoli relativi a EventFlow e Diagnostica di Microsoft Azure.Read about EventFlow and WAD to better understand some of the recommended options.