Condividi tramite


Orleans osservabilità

L'osservabilità è uno degli aspetti più importanti di un sistema distribuito. È la capacità di comprendere lo stato del sistema in qualsiasi momento. È possibile ottenere questo risultato in diversi modi, tra cui registrazione, metriche e traccia distribuita.

Registrazione

Orleans utilizza Microsoft.Extensions.Logging per registrare tutti i log di silo e client. È possibile usare qualsiasi provider di registrazione compatibile con Microsoft.Extensions.Logging. Il codice dell'app si basa sull'inserimento delle dipendenze per ottenere un'istanza di ILogger<TCategoryName> e la usa per registrare i messaggi. Per altre informazioni, vedere Registrazione in .NET.

Metriche

Le metriche sono misurazioni numeriche segnalate nel tempo. Spesso vengono usati per monitorare l'integrità di un'applicazione e generare avvisi. Per altre informazioni, vedere Metriche in .NET. Orleans usa le API System.Diagnostics.Metrics per raccogliere le metriche. Queste metriche vengono esposte al progetto OpenTelemetry , che le esporta in vari sistemi di monitoraggio.

Per monitorare l'app senza apportare modifiche al codice, usare lo dotnet counters strumento di diagnostica .NET. Per monitorare OrleansActivitySource i contatori per uno specifico <ProcessName>, usare il dotnet counters monitor comando come illustrato:

dotnet counters monitor -n <ProcessName> --counters Microsoft.Orleans

Immagina di eseguire Orleans e di monitorarla in un terminale separato con il comando. L'output seguente è tipico:

Press p to pause, r to resume, q to quit.
    Status: Running
[Microsoft.Orleans]
    orleans-app-requests-latency-bucket (Count / 1 sec)                    0
        duration=10000ms                                                   0
        duration=1000ms                                                    0
        duration=100ms                                                     0
        duration=10ms                                                      0
        duration=15000ms                                                   0
        duration=1500ms                                                    0
        duration=1ms                                                   2,530
        duration=2000ms                                                    0
        duration=200ms                                                     0
        duration=2ms                                                       0
        duration=400ms                                                     0
        duration=4ms                                                       0
        duration=5000ms                                                    0
        duration=50ms                                                      0
        duration=6ms                                                       0
        duration=800ms                                                     0
        duration=8ms                                                       0
        duration=9223372036854775807ms                                     0
    orleans-app-requests-latency-count (Count / 1 sec)                 2,530
    orleans-app-requests-latency-sum (Count / 1 sec)                       0
    orleans-catalog-activation-working-set                                36
    orleans-catalog-activations                                           38
    orleans-consistent-ring-range-percentage-average                     100
    orleans-consistent-ring-range-percentage-local                       100
    orleans-consistent-ring-size                                           1
    orleans-directory-cache-size                                          27
    orleans-directory-partition-size                                      26
    orleans-directory-ring-local-portion-average-percentage              100
    orleans-directory-ring-local-portion-distance                          0
    orleans-directory-ring-local-portion-percentage                        0
    orleans-directory-ring-size                                        1,295
    orleans-gateway-received (Count / 1 sec)                           1,291
    orleans-gateway-sent (Count / 1 sec)                               2,582
    orleans-messaging-processing-activation-data                           0
    orleans-messaging-processing-dispatcher-forwarded (Count / 1           0
    orleans-messaging-processing-dispatcher-processed (Count / 1       2,543
        Direction=Request,Status=Ok                                    2,582
    orleans-messaging-processing-dispatcher-received (Count / 1        1,271
        Context=Grain,Direction=Request                                1,291
        Context=None,Direction=Request                                 1,291
    orleans-messaging-processing-ima-enqueued (Count / 1 sec)          5,113

Per altre informazioni, vedere Analizzare i contatori delle prestazioni (contatori-dotnet).

Orleans Metri

Orleans usa le API System.Diagnostics.Metrics per raccogliere le metriche. Orleans classifica ogni contatore in problematiche incentrate sul dominio, ad esempio rete, messaggistica, gateway e così via. Le sottosezioni seguenti descrivono gli utilizzi dei contatori Orleans .

Rete

La tabella seguente mostra una raccolta di contatori di rete usati per monitorare il Orleans livello di rete.

Nome contatore TIPO Descrizione
orleans-networking-sockets-closed Counter<T> Conteggio dei socket chiusi.
orleans-networking-sockets-opened Counter<T> Conteggio dei socket aperti.

Messaggistica

Nella tabella seguente viene illustrata una raccolta di contatori di messaggistica usati per monitorare il Orleans livello di messaggistica.

Nome contatore TIPO Descrizione
orleans-messaging-sent-messages-size Histogram<T> Istogramma che rappresenta le dimensioni dei messaggi in byte inviati.
orleans-messaging-received-messages-size Histogram<T> Istogramma che rappresenta le dimensioni dei messaggi in byte ricevuti.
orleans-messaging-sent-header-size ObservableCounter<T> Contatore osservabile che rappresenta il numero di byte dell'intestazione inviati.
orleans-messaging-received-header-size ObservableCounter<T> Contatore osservabile che rappresenta il numero di byte di intestazione ricevuti.
orleans-messaging-sent-failed Counter<T> Conta dei messaggi non inviati.
orleans-messaging-sent-dropped Counter<T> Conteggio dei messaggi inviati e non consegnati.
orleans-messaging-processing-dispatcher-received ObservableCounter<T> Contatore osservabile che rappresenta il numero di messaggi ricevuti dal dispatcher.
orleans-messaging-processing-dispatcher-processed ObservableCounter<T> Contatore osservabile che rappresenta il numero di messaggi elaborati dal dispatcher.
orleans-messaging-processing-dispatcher-forwarded ObservableCounter<T> Contatore osservabile che rappresenta il numero di messaggi inoltrati del dispatcher.
orleans-messaging-processing-ima-received ObservableCounter<T> Contatore osservabile che rappresenta il numero di messaggi in arrivo ricevuti.
orleans-messaging-processing-ima-enqueued ObservableCounter<T> Contatore osservabile che rappresenta il numero di messaggi accodati in arrivo.
orleans-messaging-processing-activation-data ObservableGauge<T> Misuratore osservabile che rappresenta tutti i dati di attivazione dell'elaborazione.
orleans-messaging-pings-sent Counter<T> Conteggio dei ping inviati.
orleans-messaging-pings-received Counter<T> Numero di ping ricevuti.
orleans-messaging-pings-reply-received Counter<T> Numero di risposte ping ricevute.
orleans-messaging-pings-reply-missed Counter<T> Conteggio di risposte ping perse.
orleans-messaging-expired" Counter<T> Numero di messaggi scaduti.
orleans-messaging-rejected Counter<T> Numero di messaggi rifiutati.
orleans-messaging-rerouted Counter<T> Numero di messaggi reindirizzati.
orleans-messaging-sent-local ObservableCounter<T> Contatore osservabile che rappresenta il numero di messaggi locali inviati.

Porta di accesso

La tabella seguente illustra un insieme di contatori gateway usati per monitorare il livello del Orleans gateway.

Nome contatore TIPO Descrizione
orleans-gateway-connected-clients UpDownCounter<T> Contatore verso l'alto o verso il basso che rappresenta il numero di client connessi.
orleans-gateway-sent Counter<T> Conteggio dei messaggi del gateway inviati.
orleans-gateway-received Counter<T> Numero di messaggi del gateway ricevuti.
orleans-gateway-load-shedding Counter<T> Numero di messaggi gateway (load shedding) rifiutati a causa del sovraccarico del gateway.

Tempo di esecuzione

La tabella seguente illustra una raccolta di metri di runtime usati per monitorare il livello di runtime Orleans.

Nome contatore TIPO Descrizione
orleans-scheduler-long-running-turns Counter<T> Conteggio dei turni con esecuzione prolungata all'interno dello schedulatore.
orleans-runtime-total-physical-memory ObservableCounter<T> Contatore osservabile che rappresenta il numero totale di memoria (in MB) del Orleans runtime.
orleans-runtime-available-memory ObservableCounter<T> Contatore osservabile che rappresenta la memoria disponibile (in MB) per il Orleans runtime.

Catalogo

La tabella seguente mostra una raccolta di contatori utilizzati per monitorare il livello del catalogo Orleans.

Nome contatore TIPO Descrizione
orleans-catalog-activations ObservableGauge<T> Misuratore osservabile che rappresenta il numero di attivazioni del catalogo.
orleans-catalog-activation-working-set ObservableGauge<T> Misuratore osservabile che rappresenta il numero di attivazioni all'interno del working set.
orleans-catalog-activation-created Counter<T> Conteggio delle attivazioni create.
orleans-catalog-activation-destroyed Counter<T> Conteggio delle attivazioni distrutte.
orleans-catalog-activation-failed-to-activate Counter<T> Numero di attivazioni non riuscite.
orleans-catalog-activation-collections Counter<T> Conteggio delle raccolte di attivazioni inattive.
orleans-catalog-activation-shutdown Counter<T> Conteggio delle attivazioni di arresto.
orleans-catalog-activation-non-existent Counter<T> Conteggio delle attivazioni inesistenti.
orleans-catalog-activation-concurrent-registration-attempts Counter<T> Conteggio dei tentativi di registrazione dell'attivazione simultanea.

Directory

Nella tabella seguente viene illustrata una raccolta di contatori di directory usati per monitorare il Orleans livello della directory.

Nome contatore TIPO Descrizione
orleans-directory-lookups-local-issued Counter<T> Conteggio delle ricerche locali eseguite.
orleans-directory-lookups-local-successes Counter<T> Conteggio delle ricerche locali riuscite.
orleans-directory-lookups-full-issued Counter<T> Numero di ricerche complete di directory effettuate.
orleans-directory-lookups-remote-sent Counter<T> Conteggio delle ricerche di directory remote inviate.
orleans-directory-lookups-remote-received Counter<T> Conteggio delle ricerche di directory remote ricevute.
orleans-directory-lookups-local-directory-issued Counter<T> Conteggio delle ricerche di directory locali effettuate.
orleans-directory-lookups-local-directory-successes Counter<T> Conteggio delle ricerche della directory locale riuscite.
orleans-directory-lookups-cache-issued Counter<T> Conteggio delle ricerche memorizzate nella cache effettuate.
orleans-directory-lookups-cache-successes Counter<T> Conteggio delle ricerche riuscite memorizzate nella cache.
orleans-directory-validations-cache-sent Counter<T> Conteggio delle convalide della cache della directory inviate.
orleans-directory-validations-cache-received Counter<T> Conteggio delle convalide della cache della directory ricevute.
orleans-directory-partition-size ObservableGauge<T> Misuratore osservabile indicante la dimensione della partizione della directory.
orleans-directory-cache-size ObservableGauge<T> Misuratore osservabile che rappresenta le dimensioni della cache della directory.
orleans-directory-ring-size ObservableGauge<T> Indicatore osservabile che rappresenta la dimensione del ring della directory.
orleans-directory-ring-local-portion-distance ObservableGauge<T> Indicatore osservabile che rappresenta l'intervallo ad anello posseduto dalla partizione della directory locale.
orleans-directory-ring-local-portion-percentage ObservableGauge<T> Misuratore osservabile che rappresenta l'intervallo circolare di proprietà della directory locale, rappresentato come percentuale dell'intervallo totale.
orleans-directory-ring-local-portion-average-percentage ObservableGauge<T> Misuratore osservabile che rappresenta la percentuale media della gamma di anelli di directory posseduta da ciascun silo, fornendo una rappresentazione di quanto sia bilanciata la proprietà della directory.
orleans-directory-registrations-single-act-issued Counter<T> Conteggio delle registrazioni di attivazione singola della directory rilasciate.
orleans-directory-registrations-single-act-local Counter<T> Conteggio delle registrazioni di attivazione singola della directory gestite dalla partizione della directory locale.
orleans-directory-registrations-single-act-remote-sent Counter<T> Conteggio delle registrazioni di attivazione singola della directory inviate a una partizione di directory remota.
orleans-directory-registrations-single-act-remote-received Counter<T> Numero di registrazioni di attivazione singola della directory ricevute da host remoti.
orleans-directory-unregistrations-issued Counter<T> Conteggio delle cancellazioni della registrazione della directory effettuate.
orleans-directory-unregistrations-local Counter<T> Conteggio delle deregistrazioni di directory gestite dalla partizione di directory locale.
orleans-directory-unregistrations-remote-sent Counter<T> Conteggio delle cancellazioni di directory inviate alle partizioni di directory remote.
orleans-directory-unregistrations-remote-received Counter<T> Conteggio delle deregistrazioni di directory ricevute dagli host remoti.
orleans-directory-unregistrations-many-issued Counter<T> Conteggio delle cancellazioni di attivazione multipla della directory effettuate.
orleans-directory-unregistrations-many-remote-sent Counter<T> Conteggio delle deregistrazioni delle multi-attivazioni della directory inviate alle partizioni di directory remote.
orleans-directory-unregistrations-many-remote-received Counter<T> Conteggio delle deregistrazioni di attivazione multipla della directory ricevute dagli host remoti.

Anello coerente

Nella tabella seguente viene illustrata una raccolta di misuratori ad anello coerenti usati per monitorare lo strato ad anello Orleans coerente.

Nome contatore TIPO Descrizione
orleans-consistent-ring-size ObservableGauge<T> Misuratore osservabile che rappresenta le dimensioni coerenti dell'anello.
orleans-consistent-ring-range-percentage-local ObservableGauge<T> Indicatore osservabile che rappresenta la percentuale locale costante dell'anello.
orleans-consistent-ring-range-percentage-average ObservableGauge<T> Misuratore osservabile che rappresenta la percentuale media dell'anello costante.

Cane da guardia

La tabella seguente mostra una raccolta di contatori watchdog usati per sorvegliare il Orleans livello watchdog.

Nome contatore TIPO Descrizione
orleans-watchdog-health-checks Counter<T> Conteggio dei controlli di integrità del watchdog.
orleans-watchdog-health-checks-failed Counter<T> Conteggio dei controlli di integrità del watchdog non riusciti.

Cliente

La tabella seguente mostra una raccolta di contatori client usati per monitorare il Orleans livello client.

Nome contatore TIPO Descrizione
orleans-client-connected-gateways ObservableGauge<T> Misuratore osservabile che rappresenta il numero di client gateway connessi.

Misto

La tabella seguente mostra una raccolta di contatori vari usati per monitorare vari livelli.

Nome contatore TIPO Descrizione
orleans-grains Counter<T> Conteggio che rappresenta il numero di grani.
orleans-system-targets Counter<T> Conteggio che rappresenta il numero di destinazioni di sistema.

Richieste di app

La tabella seguente mostra una raccolta di contatori usati per monitorare il livello delle richieste dell'applicazione Orleans.

Nome contatore TIPO Descrizione
orleans-app-requests-latency ObservableCounter<T> Contatore osservabile che rappresenta la latenza della richiesta dell'app.
orleans-app-requests-timedout ObservableCounter<T> Contatore osservabile che rappresenta le richieste delle app scadute.

Promemoria

Nella tabella seguente viene illustrata una raccolta di contatori dei promemoria usati per monitorare il livello di Orleans promemoria.

Nome contatore TIPO Descrizione
orleans-reminders-tardiness Histogram<T> Un istogramma che rappresenta il numero di secondi di ritardo di un promemoria.
orleans-reminders-active ObservableGauge<T> Misuratore osservabile che rappresenta il numero di promemoria attivi.
orleans-reminders-ticks-delivered Counter<T> Conteggio che rappresenta il numero di notifiche di promemoria consegnate.

Immagazzinamento

La tabella seguente illustra una raccolta di contatori di archiviazione usati per monitorare il Orleans livello di archiviazione.

Nome contatore TIPO Descrizione
orleans-storage-read-errors Counter<T> Quantità rappresentante il numero di errori di lettura della memoria.
orleans-storage-write-errors Counter<T> Conteggio che rappresenta il numero di errori di scrittura di archiviazione.
orleans-storage-clear-errors Counter<T> Conteggio che rappresenta il numero di errori di cancellazione dello spazio di archiviazione.
orleans-storage-read-latency Histogram<T> Istogramma che rappresenta la latenza di lettura dell'archiviazione in millisecondi.
orleans-storage-write-latency Histogram<T> Istogramma che rappresenta la latenza di scrittura dell'archiviazione in millisecondi.
orleans-storage-clear-latency Histogram<T> Istogramma che rappresenta la latenza di archiviazione non crittografata in millisecondi.

Flussi

La tabella seguente mostra una raccolta di contatori di flusso utilizzati per monitorare lo strato del flusso Orleans.

Nome contatore TIPO Descrizione
orleans-streams-pubsub-producers-added Counter<T> Conteggio di produttori pubsub in streaming aggiunti.
orleans-streams-pubsub-producers-removed Counter<T> Conteggio dei producer pubsub di streaming rimossi.
orleans-streams-pubsub-producers Counter<T> Conteggio dei produttori di streaming Pub/Sub.
orleans-streams-pubsub-consumers-added Counter<T> Conteggio dei consumatori pubsub di streaming aggiunti.
orleans-streams-pubsub-consumers-removed Counter<T> Conteggio dei consumer pubsub di streaming rimossi.
orleans-streams-pubsub-consumers Counter<T> Conteggio dei consumatori dello streaming pubsub.
orleans-streams-persistent-stream-pulling-agents ObservableGauge<T> Misuratore osservabile che rappresenta il numero di agenti di stream pull persistenti.
orleans-streams-persistent-stream-messages-read Counter<T> Conteggio dei messaggi di flusso persistente letti.
orleans-streams-persistent-stream-messages-sent Counter<T> Conteggio dei messaggi di flusso persistente inviati.
orleans-streams-persistent-stream-pubsub-cache-size ObservableGauge<T> Indicatore osservabile che rappresenta la dimensione della cache pubsub del flusso persistente.
orleans-streams-queue-initialization-failures Counter<T> Numero degli errori di inizializzazione della coda Steam.
orleans-streams-queue-initialization-duration Counter<T> Conteggio delle occorrenze di inizializzazione della coda di vapore.
orleans-streams-queue-initialization-exceptions Counter<T> Conteggio delle eccezioni di inizializzazione della coda Steam.
orleans-streams-queue-read-failures Counter<T> Numero di errori di lettura della coda di attesa del vapore.
orleans-streams-queue-read-duration Counter<T> Conteggio delle occorrenze di lettura della coda di Steam.
orleans-streams-queue-read-exceptions Counter<T> Numero di eccezioni di lettura della coda di Steam.
orleans-streams-queue-shutdown-failures Counter<T> Conteggio degli errori di arresto della coda di vapore.
orleans-streams-queue-shutdown-duration Counter<T> Conteggio delle occorrenze di arresto della coda di vapore.
orleans-streams-queue-shutdown-exceptions Counter<T> Conteggio delle eccezioni di arresto della coda di vapore.
orleans-streams-queue-messages-received ObservableCounter<T> Contatore osservabile che rappresenta il numero di messaggi della coda di flusso ricevuti.
orleans-streams-queue-oldest-message-enqueue-age ObservableGauge<T> Misuratore monitorabile che rappresenta l'età del messaggio in coda più vecchio.
orleans-streams-queue-newest-message-enqueue-age ObservableGauge<T> Misuratore osservabile che rappresenta l'età del messaggio accodato più recente.
orleans-streams-block-pool-total-memory ObservableCounter<T> Contatore osservabile che rappresenta la memoria totale del pool di blocchi di flusso in byte.
orleans-streams-block-pool-available-memory ObservableCounter<T> Contatore osservabile che rappresenta la memoria disponibile in byte del pool di blocchi di flusso.
orleans-streams-block-pool-claimed-memory ObservableCounter<T> Contatore osservabile che rappresenta la memoria richiesta in byte del pool di blocchi di flusso.
orleans-streams-block-pool-released-memory ObservableCounter<T> Contatore osservabile che rappresenta la memoria rilasciata in byte del pool di blocchi di flusso.
orleans-streams-block-pool-allocated-memory ObservableCounter<T> Contatore osservabile che rappresenta la memoria allocata in byte del pool di blocchi di flusso.
orleans-streams-queue-cache-size ObservableCounter<T> Contatore osservabile che rappresenta la dimensione della cache della coda di flusso in byte.
orleans-streams-queue-cache-length ObservableCounter<T> Contatore osservabile che rappresenta la lunghezza della coda del flusso.
orleans-streams-queue-cache-messages-added ObservableCounter<T> Contatore osservabile che rappresenta i messaggi della coda di flusso aggiunti.
orleans-streams-queue-cache-messages-purged ObservableCounter<T> Un contatore osservabile che rappresenta i messaggi eliminati dalla coda di flusso.
orleans-streams-queue-cache-memory-allocated ObservableCounter<T> Contatore osservabile che rappresenta la memoria della coda di flusso allocata.
orleans-streams-queue-cache-memory-released ObservableCounter<T> Contatore osservabile che rappresenta la memoria della coda di flusso rilasciata.
orleans-streams-queue-cache-oldest-to-newest-duration ObservableGauge<T> Indicatore osservabile che rappresenta la durata dalla cache della coda di flusso più antica alla più recente.
orleans-streams-queue-cache-oldest-age ObservableGauge<T> Indicatore osservabile che rappresenta l'età del messaggio nella cache più vecchio.
orleans-streams-queue-cache-pressure ObservableGauge<T> Misuratore osservabile che rappresenta la pressione sulla cache della coda di streaming.
orleans-streams-queue-cache-under-pressure ObservableGauge<T> Misuratore osservabile che indica se la cache della coda di flusso è sotto pressione.
orleans-streams-queue-cache-pressure-contribution-count ObservableCounter<T> Contatore osservabile che rappresenta i contributi di pressione della cache della coda di flusso.

Transazioni

Nella tabella seguente viene illustrata una raccolta di contatori delle transazioni usati per monitorare il Orleans livello delle transazioni.

Nome contatore TIPO Descrizione
orleans-transactions-started ObservableCounter<T> Contatore osservabile che rappresenta il numero di transazioni avviate.
orleans-transactions-successful ObservableCounter<T> Contatore osservabile che rappresenta il numero di transazioni riuscite.
orleans-transactions-failed ObservableCounter<T> Contatore osservabile che rappresenta il numero di transazioni non riuscite.
orleans-transactions-throttled ObservableCounter<T> Contatore osservabile che rappresenta il numero di transazioni limitate.

Prometeo

Diversi provider di metriche di terze parti sono disponibili per l'uso con Orleans. Un esempio comune è Prometheus, che è possibile usare per raccogliere metriche dall'app con OpenTelemetry.

Per usare OpenTelemetry e Prometheus con Orleans, chiamare il metodo di estensione seguente IServiceCollection :

builder.Services.AddOpenTelemetry()
    .WithMetrics(metrics =>
    {
        metrics
            .AddPrometheusExporter()
            .AddMeter("Microsoft.Orleans");
    });

Importante

Entrambi i pacchetti NuGet OpenTelemetry.Exporter.Prometheus e OpenTelemetry.Exporter.Prometheus.AspNetCore sono attualmente in anteprima come candidati al rilascio. Non sono consigliati per l'uso in produzione.

Il AddPrometheusExporter metodo garantisce che l'oggetto PrometheusExporter venga aggiunto all'oggetto builder. Orleans usa un Meter oggetto denominato "Microsoft.Orleans" per creare Counter<T> istanze per molte Orleansmetriche specifiche. Utilizzare il AddMeter metodo per specificare il nome del contatore a cui sottoscrivere, in questo caso . "Microsoft.Orleans"

Dopo aver configurato l'utilità di esportazione e costruito l'app, chiamate MapPrometheusScrapingEndpoint su IEndpointRouteBuilder (l'istanza app) per esporre le metriche a Prometheus. Per esempio:

WebApplication app = builder.Build();

app.MapPrometheusScrapingEndpoint();
app.Run();

Tracciamento distribuito

La traccia distribuita è un set di strumenti e procedure per il monitoraggio e la risoluzione dei problemi delle applicazioni distribuite. Si tratta di un componente chiave dell'osservabilità e di uno strumento critico per comprendere il comportamento dell'app. Orleans supporta la traccia distribuita con OpenTelemetry.

Indipendentemente dall'esportatore di tracciamento distribuito scelto, chiamate:

In alternativa, impostare l'opzione EnableDistributedTracing di configurazione su true.

Facendo riferimento all'appOrleans di esempio GPS Tracker, è possibile usare il sistema di traccia distribuita Zipkin per monitorare l'app aggiornando Program.cs. Per usare OpenTelemetry e Zipkin con Orleans, chiamare il metodo di estensione seguente IServiceCollection :

builder.Services.AddOpenTelemetry()
    .WithTracing(tracing =>
    {
        // Set a service name
        tracing.SetResourceBuilder(
            ResourceBuilder.CreateDefault()
                .AddService(serviceName: "GPSTracker", serviceVersion: "1.0"));

        tracing.AddSource("Microsoft.Orleans.Runtime");
        tracing.AddSource("Microsoft.Orleans.Application");

        tracing.AddZipkinExporter(zipkin =>
        {
            zipkin.Endpoint = new Uri("http://localhost:9411/api/v2/spans");
        });
    });

Importante

Il pacchetto NuGet OpenTelemetry.Exporter.Zipkin è attualmente in anteprima come candidato al rilascio. Non è consigliabile per l'uso in produzione.

La traccia Zipkin viene visualizzata nell'interfaccia utente di Jaeger (un'alternativa a Zipkin che usa lo stesso formato di dati):

Orleans App di esempio gps Tracker: traccia dell'interfaccia utente Jaeger.

Per altre informazioni, vedere Traccia distribuita.

Orleans restituisce le statistiche di runtime e le metriche tramite l'interfaccia ITelemetryConsumer . L'applicazione può registrare uno o più consumatori di telemetria per i suoi silo e client per ricevere statistiche e metriche che il Orleans runtime pubblica periodicamente. Questi possono essere utenti per soluzioni comuni o personalizzate di analisi dei dati di telemetria per qualsiasi altra destinazione e scopo. Attualmente sono inclusi tre consumatori di telemetria nella codebase Orleans.

Vengono rilasciati come pacchetti NuGet separati:

  • Microsoft.Orleans.OrleansTelemetryConsumers.AI: per la pubblicazione in Azure Application Insights.

  • Microsoft.Orleans.OrleansTelemetryConsumers.Counters: per la pubblicazione nei contatori delle prestazioni di Windows. Il Orleans runtime li aggiorna continuamente. Lo strumento CounterControl.exe , incluso nel Microsoft.Orleans.CounterControl pacchetto NuGet, consente di registrare le categorie di contatori delle prestazioni necessarie. Deve essere eseguito con privilegi elevati. Monitorare i contatori delle prestazioni usando qualsiasi strumento di monitoraggio standard.

  • Microsoft.Orleans.OrleansTelemetryConsumers.NewRelic: per la pubblicazione in New Relic.

Per configurare il silo e il client affinché utilizzino i consumatori di telemetria, il codice di configurazione del silo sarà simile al seguente:

var siloHostBuilder = new HostBuilder()
    .UseOrleans(c =>
    {
        c.AddApplicationInsightsTelemetryConsumer("INSTRUMENTATION_KEY");
    });

Il codice di configurazione client è simile al seguente:

var clientBuilder = new ClientBuilder();
clientBuilder.AddApplicationInsightsTelemetryConsumer("INSTRUMENTATION_KEY");

Per usare un TelemetryConfiguration personalizzato (che potrebbe avere TelemetryProcessors, TelemetrySinks, e così via), il codice di configurazione del silo è simile al seguente:

var telemetryConfiguration = TelemetryConfiguration.CreateDefault();
var siloHostBuilder = new HostBuilder()
    .UseOrleans(c =>
    {
        c.AddApplicationInsightsTelemetryConsumer(telemetryConfiguration);
    });

Il codice di configurazione client è simile al seguente:

var clientBuilder = new ClientBuilder();
var telemetryConfiguration = TelemetryConfiguration.CreateDefault();
clientBuilder.AddApplicationInsightsTelemetryConsumer(telemetryConfiguration);

Vedere anche