Partilhar via


Orleans observabilidade

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:

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):

Orleans Aplicativo de exemplo GPS Tracker: Jaeger UI trace.

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 pacote Microsoft.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);

Ver também