Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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. |
Esportare le metriche
Diversi provider di metriche di terze parti sono disponibili per l'uso con Orleans. Esportare le metriche dall'app usando il protocollo OpenTelemetry (OTLP). Molte piattaforme di osservabilità usano i dati OTLP direttamente o tramite un agente di raccolta OpenTelemetry, tra cui Prometheus, Grafana e Monitoraggio di Azure.
Per esportare le metriche usando OTLP con Orleans, installare il pacchetto NuGet OpenTelemetry.Exporter.OpenTelemetryProtocol e chiamare il metodo di estensione seguente IServiceCollection :
builder.Services.AddOpenTelemetry()
.WithMetrics(metrics =>
{
metrics
.AddOtlpExporter()
.AddMeter("Microsoft.Orleans");
});
Il AddOtlpExporter metodo assicura che l'utilità di esportazione OTLP venga aggiunta 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"
È possibile configurare l'endpoint di esportazione OTLP e altre opzioni in base alle esigenze. Per esempio:
builder.Services.AddOpenTelemetry()
.WithMetrics(metrics =>
{
metrics
.AddOtlpExporter(options =>
{
options.Endpoint = new Uri("http://localhost:4317");
})
.AddMeter("Microsoft.Orleans");
});
Annotazioni
La configurazione predefinita dell'esportatore OTLP usa gRPC (in genere porta 4317). Per esportare le metriche in Prometheus, inviare dati di telemetria tramite un agente di raccolta OpenTelemetry o configurare invece le impostazioni OTLP/HTTP.
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:
- AddActivityPropagation(ISiloBuilder): che abilita il tracciamento distribuito per il silo.
- AddActivityPropagation(IClientBuilder): che abilita il tracciamento distribuito per il client.
In alternativa, impostare l'opzione EnableDistributedTracing di configurazione su true.
Riferendosi all'app di esempio GPS TrackerOrleans, è possibile esportare tracce distribuite usando il Protocollo OpenTelemetry (OTLP). Per usare OpenTelemetry con OTLP e Orleans, installare il pacchetto NuGet OpenTelemetry.Exporter.OpenTelemetryProtocol e chiamare il seguente metodo di estensione IServiceCollection in Program.cs:
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.AddOtlpExporter(otlp =>
{
otlp.Endpoint = new Uri("http://localhost:4317");
});
});
L'esportatore OTLP funziona con molti backend di osservabilità, tra cui Jaeger, Zipkin, Grafana Tempo e Azure Monitor. Le tracce possono essere visualizzate in strumenti come Jaeger UI:
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 nelMicrosoft.Orleans.CounterControlpacchetto 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);