Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A observabilidade é um dos aspetos mais importantes de um sistema distribuído. É a capacidade de entender o estado do sistema a qualquer momento. Você pode conseguir isso de várias maneiras, incluindo registro, métricas e rastreamento distribuído.
Exploração Florestal
Orleans usa Microsoft.Extensions.Logging para todos os logs de silo e de cliente. Você pode usar qualquer provedor de registo compatível com Microsoft.Extensions.Logging
. O código da sua aplicação depende de injeção de dependência para obter uma instância do ILogger<TCategoryName> e utilizá-la para registar mensagens. Para obter mais informações, consulte Efetuando login no .NET.
Métricas
As métricas são medições numéricas relatadas ao longo do tempo. Na maioria das vezes, você os usa para monitorar a integridade de um aplicativo e gerar alertas. Para obter mais informações, consulte Métricas no .NET. Orleans utiliza as APIs do System.Diagnostics.Metrics para recolher métricas. Essas métricas são expostas ao projeto OpenTelemetry que as exporta para vários sistemas de monitoramento.
Para monitorar seu aplicativo sem fazer alterações de código, use a dotnet counters
ferramenta de diagnóstico .NET. Para monitorizar OrleansActivitySource contadores para um <ProcessName>
específico, use o comando dotnet counters monitor
conforme mostrado:
dotnet counters monitor -n <ProcessName> --counters Microsoft.Orleans
Imagine que você está executando o Orleans aplicativo de exemplo GPS Tracker e monitorando-o em um terminal separado com o dotnet counters monitor
comando. A seguinte saída é típica:
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
Para obter mais informações, consulte Investigar contadores de desempenho (dotnet-counters).
Orleans metros
Orleans utiliza as APIs do System.Diagnostics.Metrics para recolher métricas. Orleans Categoriza cada medidor em preocupações centradas no domínio, como rede, mensagens, gateway, etc. As subseções a seguir descrevem os usos dos medidores Orleans .
Ligação em rede
A tabela a seguir mostra uma coleção de medidores de rede usados para monitorar a Orleans camada de rede.
Nome do medidor | Tipo | Descrição |
---|---|---|
orleans-networking-sockets-closed |
Counter<T> | Uma contagem de sockets fechados. |
orleans-networking-sockets-opened |
Counter<T> | Uma contagem de sockets que foram abertos. |
Mensagens
A tabela a seguir mostra uma coleção de medidores de mensagens usados para monitorar a Orleans camada de mensagens.
Nome do medidor | Tipo | Descrição |
---|---|---|
orleans-messaging-sent-messages-size |
Histogram<T> | Um histograma que representa o tamanho das mensagens em bytes que foram enviadas. |
orleans-messaging-received-messages-size |
Histogram<T> | Um histograma que representa o tamanho das mensagens em bytes que foram recebidas. |
orleans-messaging-sent-header-size |
ObservableCounter<T> | Um contador observável que representa o número de bytes de cabeçalho enviados. |
orleans-messaging-received-header-size |
ObservableCounter<T> | Um contador observável que representa o número de bytes de cabeçalho recebidos. |
orleans-messaging-sent-failed |
Counter<T> | Uma contagem de mensagens que falharam ao enviar. |
orleans-messaging-sent-dropped |
Counter<T> | Uma contagem de mensagens enviadas descartadas. |
orleans-messaging-processing-dispatcher-received |
ObservableCounter<T> | Um contador observável que representa a quantidade de mensagens recebidas pelo distribuidor. |
orleans-messaging-processing-dispatcher-processed |
ObservableCounter<T> | Um contador observável que representa o número de mensagens processadas pelo despachante. |
orleans-messaging-processing-dispatcher-forwarded |
ObservableCounter<T> | Um contador observável que representa o número de mensagens encaminhadas pelo despachante. |
orleans-messaging-processing-ima-received |
ObservableCounter<T> | Um contador observável que representa o número de mensagens recebidas. |
orleans-messaging-processing-ima-enqueued |
ObservableCounter<T> | Um contador observável que representa o número de mensagens recebidas na fila. |
orleans-messaging-processing-activation-data |
ObservableGauge<T> | Um medidor observável que representa todos os dados de ativação de processamento. |
orleans-messaging-pings-sent |
Counter<T> | Uma contagem de pings enviados. |
orleans-messaging-pings-received |
Counter<T> | Uma contagem de pings recebidos. |
orleans-messaging-pings-reply-received |
Counter<T> | Contagem de respostas a pings recebidas. |
orleans-messaging-pings-reply-missed |
Counter<T> | Contagem de respostas de ping perdidas. |
orleans-messaging-expired" |
Counter<T> | Uma contagem de mensagens que expiraram. |
orleans-messaging-rejected |
Counter<T> | Uma contagem de mensagens que foram rejeitadas. |
orleans-messaging-rerouted |
Counter<T> | Uma contagem de mensagens que foram redirecionadas. |
orleans-messaging-sent-local |
ObservableCounter<T> | Um contador observável que representa o número de mensagens locais enviadas. |
Porta de entrada
A tabela a seguir mostra uma coleção de medidores de gateway usados para monitorar a Orleans camada de gateway.
Nome do medidor | Tipo | Descrição |
---|---|---|
orleans-gateway-connected-clients |
UpDownCounter<T> | Um contador ascendente/descendente que representa o número de clientes conectados. |
orleans-gateway-sent |
Counter<T> | Uma contagem de mensagens de gateway enviadas. |
orleans-gateway-received |
Counter<T> | A contagem das mensagens de gateway recebidas. |
orleans-gateway-load-shedding |
Counter<T> | Uma contagem de mensagens de gateway (alívio de carga) que foram rejeitadas devido ao gateway estar sobrecarregado. |
Tempo de execução
A tabela a seguir mostra uma coleção de medidores de tempo de execução usados para monitorar a Orleans camada de tempo de execução.
Nome do medidor | Tipo | Descrição |
---|---|---|
orleans-scheduler-long-running-turns |
Counter<T> | Uma contagem de turnos de longa duração dentro do agendador. |
orleans-runtime-total-physical-memory |
ObservableCounter<T> | Um contador observável que representa o número total de memória (em MB) do Orleans tempo de execução. |
orleans-runtime-available-memory |
ObservableCounter<T> | Um contador observável que representa a memória disponível (em MB) para o Orleans tempo de execução. |
Catálogo
A tabela a seguir mostra uma coleção de medidores de catálogo usados para monitorar a Orleans camada de catálogo.
Nome do medidor | Tipo | Descrição |
---|---|---|
orleans-catalog-activations |
ObservableGauge<T> | Um medidor observável que representa o número de ativações de catálogo. |
orleans-catalog-activation-working-set |
ObservableGauge<T> | Um medidor observável que representa o número de ativações dentro do conjunto de trabalho. |
orleans-catalog-activation-created |
Counter<T> | Uma contagem de ativações criadas. |
orleans-catalog-activation-destroyed |
Counter<T> | Uma contagem de ativações destruídas. |
orleans-catalog-activation-failed-to-activate |
Counter<T> | Uma contagem de ativações que não foram bem-sucedidas. |
orleans-catalog-activation-collections |
Counter<T> | Contagem de coleções de ativação em modo ocioso. |
orleans-catalog-activation-shutdown |
Counter<T> | Uma contagem de ativações de desligamento. |
orleans-catalog-activation-non-existent |
Counter<T> | Uma contagem de ativações inexistentes. |
orleans-catalog-activation-concurrent-registration-attempts |
Counter<T> | Uma contagem de tentativas simultâneas de registro de ativação. |
Diretório
A tabela a seguir mostra uma coleção de medidores de diretório usados para monitorar a Orleans camada de diretório.
Nome do medidor | Tipo | Descrição |
---|---|---|
orleans-directory-lookups-local-issued |
Counter<T> | O número de pesquisas locais emitidas. |
orleans-directory-lookups-local-successes |
Counter<T> | Contagem de pesquisas locais bem-sucedidas. |
orleans-directory-lookups-full-issued |
Counter<T> | A contagem de pesquisas completas de diretórios realizadas. |
orleans-directory-lookups-remote-sent |
Counter<T> | A contagem das pesquisas de diretórios remotos enviadas. |
orleans-directory-lookups-remote-received |
Counter<T> | Número de consultas de diretório remoto recebidas. |
orleans-directory-lookups-local-directory-issued |
Counter<T> | Uma contagem das pesquisas de diretório local realizadas. |
orleans-directory-lookups-local-directory-successes |
Counter<T> | Uma contagem de pesquisas bem-sucedidas no diretório local. |
orleans-directory-lookups-cache-issued |
Counter<T> | Uma contagem de pesquisas em cache emitidas. |
orleans-directory-lookups-cache-successes |
Counter<T> | Uma contagem de pesquisas bem-sucedidas armazenadas em cache. |
orleans-directory-validations-cache-sent |
Counter<T> | Uma contagem de validações de cache de diretório enviadas. |
orleans-directory-validations-cache-received |
Counter<T> | Uma contagem de validações de cache de diretório recebidas. |
orleans-directory-partition-size |
ObservableGauge<T> | Um medidor observável que representa o tamanho da partição de diretório. |
orleans-directory-cache-size |
ObservableGauge<T> | Um medidor observável que representa o tamanho do cache de diretório. |
orleans-directory-ring-size |
ObservableGauge<T> | Um medidor observável que representa o tamanho do anel de diretório. |
orleans-directory-ring-local-portion-distance |
ObservableGauge<T> | Um medidor visível que representa o alcance de anéis pertencentes à partição de diretório local. |
orleans-directory-ring-local-portion-percentage |
ObservableGauge<T> | Um indicador observável que mostra o intervalo de anéis pertencente ao diretório local, expresso como uma porcentagem do intervalo total. |
orleans-directory-ring-local-portion-average-percentage |
ObservableGauge<T> | Um medidor observável que representa a porcentagem média do intervalo de anéis de diretório sob a posse de cada silo, proporcionando uma representação de quão equilibrada é a posse do diretório. |
orleans-directory-registrations-single-act-issued |
Counter<T> | Uma contagem de registros de ativação única de diretório emitidos. |
orleans-directory-registrations-single-act-local |
Counter<T> | Uma contagem de registos de ativação única de diretório geridos pela partição de diretório local. |
orleans-directory-registrations-single-act-remote-sent |
Counter<T> | Uma contagem de registos de ativação única de diretório enviados para uma partição de diretório remoto. |
orleans-directory-registrations-single-act-remote-received |
Counter<T> | Uma contagem de registos de ativação única de diretório recebidos de hosts remotos. |
orleans-directory-unregistrations-issued |
Counter<T> | Uma contagem de cancelamentos de registros de diretórios emitidos. |
orleans-directory-unregistrations-local |
Counter<T> | Uma contagem de cancelamentos de registros de diretório manipulados pela partição de diretório local. |
orleans-directory-unregistrations-remote-sent |
Counter<T> | Uma contagem de cancelamentos de registros de diretório enviados para partições de diretório remotas. |
orleans-directory-unregistrations-remote-received |
Counter<T> | Uma contagem de cancelamentos de registros de diretório recebidos de hosts remotos. |
orleans-directory-unregistrations-many-issued |
Counter<T> | Uma contagem de cancelamentos de registros de multiativação de diretórios emitidos. |
orleans-directory-unregistrations-many-remote-sent |
Counter<T> | Uma contagem de cancelamentos de multiativações de diretórios enviados para partições de diretório remotas. |
orleans-directory-unregistrations-many-remote-received |
Counter<T> | Uma contagem de cancelamentos de ativação múltipla de diretório recebidos de hosts remotos. |
Anel consistente
A tabela a seguir mostra uma coleção de medidores de anel consistentes usados para monitorar a Orleans camada de anel consistente.
Nome do medidor | Tipo | Descrição |
---|---|---|
orleans-consistent-ring-size |
ObservableGauge<T> | Um medidor observável que representa o tamanho consistente do anel. |
orleans-consistent-ring-range-percentage-local |
ObservableGauge<T> | Um medidor observável que representa a percentagem local consistente do anel. |
orleans-consistent-ring-range-percentage-average |
ObservableGauge<T> | Um indicador observável que representa a percentagem média consistente do círculo. |
Cão de guarda
A tabela a seguir mostra uma coleção de medidores de cão de guarda usados para monitorar a Orleans camada de cão de guarda.
Nome do medidor | Tipo | Descrição |
---|---|---|
orleans-watchdog-health-checks |
Counter<T> | Uma contagem de controlos sanitários de vigilância. |
orleans-watchdog-health-checks-failed |
Counter<T> | Uma contagem de verificações de saúde de vigilância falhadas. |
Cliente
A tabela a seguir mostra uma coleção de medidores de cliente usados para monitorar a Orleans camada de cliente.
Nome do medidor | Tipo | Descrição |
---|---|---|
orleans-client-connected-gateways |
ObservableGauge<T> | Um medidor observável que representa o número de clientes de gateway conectados. |
Diversos
A tabela a seguir mostra uma coleção de medidores diversos usados para monitorar várias camadas.
Nome do medidor | Tipo | Descrição |
---|---|---|
orleans-grains |
Counter<T> | Uma contagem que representa o número de grãos. |
orleans-system-targets |
Counter<T> | Uma contagem que representa o número de alvos do sistema. |
Pedidos de aplicações
A tabela a seguir mostra uma coleção de medidores de solicitação de aplicativo usados para monitorar a camada de solicitação de Orleans aplicativo.
Nome do medidor | Tipo | Descrição |
---|---|---|
orleans-app-requests-latency |
ObservableCounter<T> | Um contador observável que representa a latência da solicitação do aplicativo. |
orleans-app-requests-timedout |
ObservableCounter<T> | Um contador observável que representa as solicitações de aplicativo que atingiram o tempo limite. |
Lembretes
A tabela a seguir mostra uma coleção de medidores de lembrete usados para monitorar a Orleans camada de lembrete.
Nome do medidor | Tipo | Descrição |
---|---|---|
orleans-reminders-tardiness |
Histogram<T> | Um histograma que representa o número de segundos que um lembrete demora. |
orleans-reminders-active |
ObservableGauge<T> | Um medidor observável que representa o número de lembretes ativos. |
orleans-reminders-ticks-delivered |
Counter<T> | Uma contagem que representa o número de ticks de lembrete que foram entregues. |
Armazenamento
A tabela a seguir mostra uma coleção de medidores de armazenamento usados para monitorar a Orleans camada de armazenamento.
Nome do medidor | Tipo | Descrição |
---|---|---|
orleans-storage-read-errors |
Counter<T> | Uma contagem que representa o número de erros de leitura de armazenamento. |
orleans-storage-write-errors |
Counter<T> | Uma contagem que representa o número de erros de escrita no armazenamento. |
orleans-storage-clear-errors |
Counter<T> | Uma contagem que representa o número de erros de limpeza de armazenamento. |
orleans-storage-read-latency |
Histogram<T> | Um histograma que representa a latência de leitura do armazenamento em milissegundos. |
orleans-storage-write-latency |
Histogram<T> | Um histograma que representa a latência de gravação do armazenamento em milissegundos. |
orleans-storage-clear-latency |
Histogram<T> | Um histograma que representa a latência clara de armazenamento em milissegundos. |
Fluxos
A tabela a seguir mostra uma coleção de medidores de fluxo usados para monitorar a Orleans camada de fluxo.
Nome do medidor | Tipo | Descrição |
---|---|---|
orleans-streams-pubsub-producers-added |
Counter<T> | Uma contagem de produtores de pubsub de streaming adicionada. |
orleans-streams-pubsub-producers-removed |
Counter<T> | Contagem de produtores de pubsub de streaming removidos. |
orleans-streams-pubsub-producers |
Counter<T> | Uma contagem de produtores de pubsub streaming. |
orleans-streams-pubsub-consumers-added |
Counter<T> | Adicionou-se uma contagem de consumidores de streaming pubsub. |
orleans-streams-pubsub-consumers-removed |
Counter<T> | Remoção de uma contagem de consumidores de pubsub de streaming. |
orleans-streams-pubsub-consumers |
Counter<T> | Uma contagem de consumidores de pubsub streaming. |
orleans-streams-persistent-stream-pulling-agents |
ObservableGauge<T> | Um medidor observável que representa o número de agentes de tração de fluxo persistentes. |
orleans-streams-persistent-stream-messages-read |
Counter<T> | Contagem de mensagens de fluxo persistente lidas. |
orleans-streams-persistent-stream-messages-sent |
Counter<T> | Uma contagem de mensagens de fluxo contínuo enviadas. |
orleans-streams-persistent-stream-pubsub-cache-size |
ObservableGauge<T> | Um medidor observável que representa o tamanho do cache pubsub de fluxo persistente. |
orleans-streams-queue-initialization-failures |
Counter<T> | Uma contagem de falhas de inicialização da fila do Steam. |
orleans-streams-queue-initialization-duration |
Counter<T> | Uma contagem de ocorrências de inicialização da fila Steam. |
orleans-streams-queue-initialization-exceptions |
Counter<T> | Contagem de exceções de inicialização da fila do Steam. |
orleans-streams-queue-read-failures |
Counter<T> | Uma contagem de falhas de leitura da fila de vapor. |
orleans-streams-queue-read-duration |
Counter<T> | Uma contagem de ocorrências de leitura da fila Steam. |
orleans-streams-queue-read-exceptions |
Counter<T> | Uma contagem de exceções de leitura na fila do Steam. |
orleans-streams-queue-shutdown-failures |
Counter<T> | Uma contagem de falhas de desligamento da fila de vapor. |
orleans-streams-queue-shutdown-duration |
Counter<T> | Uma contagem de ocorrências de desligamento da fila de vapor. |
orleans-streams-queue-shutdown-exceptions |
Counter<T> | Uma contagem de exceções de encerramento na fila de espera do Steam. |
orleans-streams-queue-messages-received |
ObservableCounter<T> | Um contador observável que representa o número de mensagens de fila de fluxo recebidas. |
orleans-streams-queue-oldest-message-enqueue-age |
ObservableGauge<T> | Um medidor visível que representa a idade da mensagem mais antiga enfileirada. |
orleans-streams-queue-newest-message-enqueue-age |
ObservableGauge<T> | Um indicador observável que representa a idade da mais recente mensagem enfileirada. |
orleans-streams-block-pool-total-memory |
ObservableCounter<T> | Um contador observável que representa a memória total do pool de blocos de streaming em bytes. |
orleans-streams-block-pool-available-memory |
ObservableCounter<T> | Um contador observável que representa a memória disponível do pool de blocos de fluxo em bytes. |
orleans-streams-block-pool-claimed-memory |
ObservableCounter<T> | Um contador observável que representa o pool de blocos de fluxo reivindica memória em bytes. |
orleans-streams-block-pool-released-memory |
ObservableCounter<T> | Um contador observável que representa o pool de blocos de fluxo liberou memória em bytes. |
orleans-streams-block-pool-allocated-memory |
ObservableCounter<T> | Um contador observável que representa a memória alocada do pool de blocos de fluxo em bytes. |
orleans-streams-queue-cache-size |
ObservableCounter<T> | Um contador observável que representa o tamanho do cache da fila de fluxo em bytes. |
orleans-streams-queue-cache-length |
ObservableCounter<T> | Um contador observável que representa o comprimento da fila de fluxo. |
orleans-streams-queue-cache-messages-added |
ObservableCounter<T> | Um contador observável que representa as mensagens da fila de fluxo adicionadas. |
orleans-streams-queue-cache-messages-purged |
ObservableCounter<T> | Um contador observável que representa as mensagens da fila de transmissão eliminadas. |
orleans-streams-queue-cache-memory-allocated |
ObservableCounter<T> | Um contador observável que representa a memória da fila de fluxo alocada. |
orleans-streams-queue-cache-memory-released |
ObservableCounter<T> | Um contador observável que representa a memória da fila de fluxo liberada. |
orleans-streams-queue-cache-oldest-to-newest-duration |
ObservableGauge<T> | Um medidor observável que representa a duração do cache de fila de fluxo mais antigo para o mais recente. |
orleans-streams-queue-cache-oldest-age |
ObservableGauge<T> | Um indicador observável que representa a idade da mensagem em cache mais antiga. |
orleans-streams-queue-cache-pressure |
ObservableGauge<T> | Um medidor observável que representa a pressão no cache da fila de transmissão. |
orleans-streams-queue-cache-under-pressure |
ObservableGauge<T> | Um medidor observável que representa se o cache da fila de fluxo está sob pressão. |
orleans-streams-queue-cache-pressure-contribution-count |
ObservableCounter<T> | Um contador observável que representa as contribuições de pressão de cache da fila de fluxo. |
Transações
A tabela a seguir mostra uma coleção de medidores de transação usados para monitorar a Orleans camada de transação.
Nome do medidor | Tipo | Descrição |
---|---|---|
orleans-transactions-started |
ObservableCounter<T> | Um contador observável que representa o número de transações iniciadas. |
orleans-transactions-successful |
ObservableCounter<T> | Um contador observável que representa o número de transações bem-sucedidas. |
orleans-transactions-failed |
ObservableCounter<T> | Um contador observável que representa o número de transações com falha. |
orleans-transactions-throttled |
ObservableCounter<T> | Um contador observável que representa o número de transações reguladas. |
Prometeu
Vários provedores de métricas de terceiros estão disponíveis para uso com Orleans. Um exemplo popular é o Prometheus, que você pode usar para coletar métricas do seu aplicativo com o OpenTelemetry.
Para usar OpenTelemetry e Prometheus com Orleans, chame o seguinte IServiceCollection
método de extensão:
builder.Services.AddOpenTelemetry()
.WithMetrics(metrics =>
{
metrics
.AddPrometheusExporter()
.AddMeter("Microsoft.Orleans");
});
Importante
Os pacotes OpenTelemetry.Exporter.Prometheus e OpenTelemetry.Exporter.Prometheus.AspNetCore NuGet estão atualmente em pré-visualização como candidatos a lançamento. Eles não são recomendados para uso em produção.
O AddPrometheusExporter
método garante que o PrometheusExporter
é adicionado ao builder
.
Orleans usa um Meter chamado "Microsoft.Orleans"
para criar instâncias de Counter<T> para muitas métricas específicas de Orleans. Use o método AddMeter
para especificar o nome do medidor ao qual se quer subscrever, neste caso, "Microsoft.Orleans"
.
Depois de configurar o exportador e construir a sua aplicação, chame MapPrometheusScrapingEndpoint
na IEndpointRouteBuilder
(na instância app
) para expor as métricas ao Prometheus. Por exemplo:
WebApplication app = builder.Build();
app.MapPrometheusScrapingEndpoint();
app.Run();
Rastreio distribuído
O rastreamento distribuído é um conjunto de ferramentas e práticas para monitorar e solucionar problemas de aplicativos distribuídos. É um componente-chave da observabilidade e uma ferramenta crítica para entender o comportamento do seu aplicativo. Orleans suporta rastreamento distribuído com OpenTelemetry.
Independentemente do exportador de rastreamento distribuído escolhido, ligue:
- AddActivityPropagation(ISiloBuilder): que permite o rastreamento distribuído para o silo.
- AddActivityPropagation(IClientBuilder): que permite o rastreamento distribuído para o cliente.
Referindo-se ao Orleans aplicativo de exemplo GPS Tracker, você pode usar o sistema de rastreamento distribuído Zipkin para monitorar o aplicativo atualizando Program.cs. Para usar OpenTelemetry e Zipkin com Orleans, chame o seguinte IServiceCollection
método de extensão:
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
O pacote OpenTelemetry.Exporter.Zipkin NuGet está atualmente em pré-visualização como candidato a lançamento. Não é recomendado para uso em produção.
O rastreamento do Zipkin é mostrado na interface do usuário do Jaeger (uma alternativa ao Zipkin que usa o mesmo formato de dados):
Para obter mais informações, consulte Rastreamento distribuído.
Orleans produz suas estatísticas e métricas de tempo de execução através da ITelemetryConsumer interface. A sua aplicação pode registar um ou mais consumidores de telemetria para que os seus silos e clientes recebam estatísticas e métricas que o Orleans runtime publica periodicamente. Estes podem ser consumidores de soluções populares de análise de telemetria ou personalizadas para qualquer outro destino e finalidade. Três consumidores de telemetria estão incluídos atualmente no código-base Orleans.
Eles são lançados como pacotes NuGet separados:
Microsoft.Orleans.OrleansTelemetryConsumers.AI
: Para publicação no Azure Application Insights.Microsoft.Orleans.OrleansTelemetryConsumers.Counters
: Para publicação nos contadores de desempenho do Windows. O Orleans ambiente de execução atualiza continuamente muitos deles. A ferramenta CounterControl.exe, incluída no pacoteMicrosoft.Orleans.CounterControl
NuGet, ajuda a registar as categorias de contadores de desempenho necessárias. Deve ser executado com privilégios elevados. Monitore os contadores de desempenho usando quaisquer ferramentas de monitoramento padrão.Microsoft.Orleans.OrleansTelemetryConsumers.NewRelic
: Para publicação na New Relic.
Para configurar o seu silo e o seu cliente para usar consumidores de dados de telemetria, o código de configuração do silo é o seguinte:
var siloHostBuilder = new HostBuilder()
.UseOrleans(c =>
{
c.AddApplicationInsightsTelemetryConsumer("INSTRUMENTATION_KEY");
});
O código de configuração do cliente tem esta aparência:
var clientBuilder = new ClientBuilder();
clientBuilder.AddApplicationInsightsTelemetryConsumer("INSTRUMENTATION_KEY");
Para usar uma TelemetryConfiguration definida personalizadamente (que pode ter TelemetryProcessors, TelemetrySinks, etc.), o código de configuração do silo tem o seguinte aspeto:
var telemetryConfiguration = TelemetryConfiguration.CreateDefault();
var siloHostBuilder = new HostBuilder()
.UseOrleans(c =>
{
c.AddApplicationInsightsTelemetryConsumer(telemetryConfiguration);
});
O código de configuração do cliente tem esta aparência:
var clientBuilder = new ClientBuilder();
var telemetryConfiguration = TelemetryConfiguration.CreateDefault();
clientBuilder.AddApplicationInsightsTelemetryConsumer(telemetryConfiguration);