Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La observabilidad es uno de los aspectos más importantes de un sistema distribuido. Es la capacidad de comprender el estado del sistema en un momento dado. Esto se puede lograr de varias maneras, incluido el registro, las métricas y el seguimiento distribuido.
Registro
Orleans usa Microsoft.Extensions.Logging para todos los registros de silo y cliente. Puede usar cualquier proveedor de registro compatible con Microsoft.Extensions.Logging
. El código de la aplicación se basa en la inserción de dependencias para obtener una instancia de ILogger<TCategoryName> y la usa para registrar mensajes. Para obtener más información, consulte Registro en .NET.
Métricas
Las métricas son medidas numéricas que se comunican a lo largo del tiempo. A menudo se usan para supervisar el estado de una aplicación y generar alertas. Para obtener más información, consulte Métricas en .NET. Orleans usa las API System.Diagnostics.Metrics para recopilar métricas. Estas métricas se exponen al proyecto OpenTelemetry , que los exporta a varios sistemas de supervisión.
Para supervisar la aplicación sin realizar cambios en el código, use la dotnet counters
herramienta de diagnóstico de .NET. Para supervisar los contadores de un Orleans específico, use el comando ActivitySource como se muestra:
dotnet counters monitor -n <ProcessName> --counters Microsoft.Orleans
Imagina que estás ejecutando la aplicación de ejemplo GPS Tracker y la estás monitoreando en un terminal separado con el comando Orleans. La salida siguiente es 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 obtener más información, vea Investigar contadores de rendimiento (dotnet-counters).
Orleans metros
Orleans usa las API System.Diagnostics.Metrics para recopilar métricas. Orleans clasifica cada medidor en preocupaciones centradas en el dominio, como redes, mensajería, puerta de enlace, etc. En las subsecciones siguientes se describen los usos de medidores Orleans .
Redes
En la tabla siguiente se muestra una colección de medidores de red usados para supervisar la Orleans capa de red.
Nombre del medidor | Tipo | Descripción |
---|---|---|
orleans-networking-sockets-closed |
Counter<T> | Recuento de sockets que se han cerrado. |
orleans-networking-sockets-opened |
Counter<T> | Recuento de conexiones que se han abierto. |
Mensajería
En la tabla siguiente se muestra una colección de medidores de mensajería usados para supervisar la Orleans capa de mensajería.
Nombre del medidor | Tipo | Descripción |
---|---|---|
orleans-messaging-sent-messages-size |
Histogram<T> | Histograma que representa el tamaño de los mensajes en bytes que se han enviado. |
orleans-messaging-received-messages-size |
Histogram<T> | Histograma que representa el tamaño de los mensajes en bytes que se han recibido. |
orleans-messaging-sent-header-size |
ObservableCounter<T> | Contador observable que representa el número de bytes de encabezado enviados. |
orleans-messaging-received-header-size |
ObservableCounter<T> | Contador observable que representa el número de bytes de encabezado recibidos. |
orleans-messaging-sent-failed |
Counter<T> | Recuento de mensajes enviados con error. |
orleans-messaging-sent-dropped |
Counter<T> | Recuento de mensajes no enviados. |
orleans-messaging-processing-dispatcher-received |
ObservableCounter<T> | Contador observable que representa los mensajes recibidos del distribuidor de números. |
orleans-messaging-processing-dispatcher-processed |
ObservableCounter<T> | Contador observable que representa el número de mensajes procesados por el despachador. |
orleans-messaging-processing-dispatcher-forwarded |
ObservableCounter<T> | Contador observable que representa el número de mensajes reenviados por el despachador. |
orleans-messaging-processing-ima-received |
ObservableCounter<T> | Contador observable que representa el número de mensajes entrantes recibidos. |
orleans-messaging-processing-ima-enqueued |
ObservableCounter<T> | Contador observable que representa el número de mensajes entrantes en cola. |
orleans-messaging-processing-activation-data |
ObservableGauge<T> | Un medidor observable que representa todos los datos de activación del procesamiento. |
orleans-messaging-pings-sent |
Counter<T> | Recuento de pings enviados. |
orleans-messaging-pings-received |
Counter<T> | Recuento de pings recibidos. |
orleans-messaging-pings-reply-received |
Counter<T> | Recuento de respuestas de ping recibidas. |
orleans-messaging-pings-reply-missed |
Counter<T> | Se ha perdido un recuento de respuestas de ping. |
orleans-messaging-expired" |
Counter<T> | Recuento de mensajes que han expirado. |
orleans-messaging-rejected |
Counter<T> | Recuento de mensajes rechazados. |
orleans-messaging-rerouted |
Counter<T> | Recuento de mensajes que se han renrutado. |
orleans-messaging-sent-local |
ObservableCounter<T> | Contador observable que representa el número de mensajes locales enviados. |
Puerta de enlace
En la tabla siguiente se muestra una colección de medidores de puerta de enlace usados para supervisar la Orleans capa de puerta de enlace.
Nombre del medidor | Tipo | Descripción |
---|---|---|
orleans-gateway-connected-clients |
UpDownCounter<T> | Contador ascendente o descendente que representa el número de clientes conectados. |
orleans-gateway-sent |
Counter<T> | Recuento de mensajes de puerta de enlace enviados. |
orleans-gateway-received |
Counter<T> | Recuento de mensajes de puerta de enlace recibidos. |
orleans-gateway-load-shedding |
Counter<T> | Conteo de mensajes de puerta de enlace (corte de carga) que se han rechazado por estar la puerta de enlace sobrecargada. |
Tiempo de ejecución
En la siguiente tabla se muestra una colección de medidores usados para supervisar la capa de Orleans en tiempo de ejecución.
Nombre del medidor | Tipo | Descripción |
---|---|---|
orleans-scheduler-long-running-turns |
Counter<T> | Recuento de ciclos de ejecución de larga duración dentro del planificador. |
orleans-runtime-total-physical-memory |
ObservableCounter<T> | Contador observable que representa el número total de memoria (en MB) del Orleans tiempo de ejecución. |
orleans-runtime-available-memory |
ObservableCounter<T> | Contador observable que representa la memoria disponible (en MB) para el Orleans tiempo de ejecución. |
Catálogo
En la tabla siguiente se muestra una colección de medidores de catálogo utilizados para supervisar la capa del catálogo Orleans.
Nombre del medidor | Tipo | Descripción |
---|---|---|
orleans-catalog-activations |
ObservableGauge<T> | Un medidor observable que representa el número de activaciones de catálogo. |
orleans-catalog-activation-working-set |
ObservableGauge<T> | Un medidor observable que representa el número de activaciones dentro del conjunto de trabajo. |
orleans-catalog-activation-created |
Counter<T> | Recuento de activaciones creadas. |
orleans-catalog-activation-destroyed |
Counter<T> | Recuento de activaciones destruidas. |
orleans-catalog-activation-failed-to-activate |
Counter<T> | Recuento de activaciones que no se pudieron activar. |
orleans-catalog-activation-collections |
Counter<T> | Recuento de activaciones inactivas recopiladas. |
orleans-catalog-activation-shutdown |
Counter<T> | Recuento de activaciones de apagado. |
orleans-catalog-activation-non-existent |
Counter<T> | Recuento de activaciones inexistentes. |
orleans-catalog-activation-concurrent-registration-attempts |
Counter<T> | Recuento de intentos simultáneos de registro de activación. |
Directorio
En la tabla siguiente se muestra una colección de medidores de directorio que se usan para supervisar la capa de Orleans directorio.
Nombre del medidor | Tipo | Descripción |
---|---|---|
orleans-directory-lookups-local-issued |
Counter<T> | Recuento de consultas locales realizadas. |
orleans-directory-lookups-local-successes |
Counter<T> | Recuento de búsquedas exitosas locales. |
orleans-directory-lookups-full-issued |
Counter<T> | Recuento de búsquedas de directorios completas emitidas. |
orleans-directory-lookups-remote-sent |
Counter<T> | Recuento de búsquedas de directorios remotos enviadas. |
orleans-directory-lookups-remote-received |
Counter<T> | Recuento de búsquedas de directorios remotos recibidas. |
orleans-directory-lookups-local-directory-issued |
Counter<T> | Recuento de búsquedas de directorios locales realizadas. |
orleans-directory-lookups-local-directory-successes |
Counter<T> | Recuento de consultas exitosas en el directorio local. |
orleans-directory-lookups-cache-issued |
Counter<T> | Emisión de búsquedas en caché contadas. |
orleans-directory-lookups-cache-successes |
Counter<T> | Recuento de búsquedas correctas almacenadas en caché. |
orleans-directory-validations-cache-sent |
Counter<T> | Recuento de validaciones de caché de directorios enviadas. |
orleans-directory-validations-cache-received |
Counter<T> | Recuento de validaciones de caché de directorios recibidas. |
orleans-directory-partition-size |
ObservableGauge<T> | Un medidor observable que representa el tamaño de la partición del directorio. |
orleans-directory-cache-size |
ObservableGauge<T> | Un medidor observable que representa el tamaño de la caché de directorios. |
orleans-directory-ring-size |
ObservableGauge<T> | Un medidor observable que representa el tamaño del anillo de directorio. |
orleans-directory-ring-local-portion-distance |
ObservableGauge<T> | Un indicador observable que representa el rango de anillos perteneciente a la partición del directorio local. |
orleans-directory-ring-local-portion-percentage |
ObservableGauge<T> | Un medidor observable que representa el intervalo de anillos que pertenece al directorio local, representado como un porcentaje del intervalo total. |
orleans-directory-ring-local-portion-average-percentage |
ObservableGauge<T> | Un medidor observable que representa el porcentaje medio del intervalo de anillos de directorio que pertenece a cada silo, lo que proporciona una representación de cómo se equilibra la propiedad del directorio. |
orleans-directory-registrations-single-act-issued |
Counter<T> | Recuento de registros de activación única de directorio emitidos. |
orleans-directory-registrations-single-act-local |
Counter<T> | Recuento de registros de activación única de directorios administrados por la partición de directorio local. |
orleans-directory-registrations-single-act-remote-sent |
Counter<T> | Recuento de registros de activación única de directorio enviados a una partición de directorio remoto. |
orleans-directory-registrations-single-act-remote-received |
Counter<T> | Recuento de registros de activación única de directorio recibidos de hosts remotos. |
orleans-directory-unregistrations-issued |
Counter<T> | Recuento de cancelaciones de registro de directorios emitidas. |
orleans-directory-unregistrations-local |
Counter<T> | Recuento de desregistraciones de directorios controladas por la partición de directorio local. |
orleans-directory-unregistrations-remote-sent |
Counter<T> | Recuento de desregistraciones de directorio enviadas a particiones de directorio remotas. |
orleans-directory-unregistrations-remote-received |
Counter<T> | Recuento de desregistros de directorio recibidos de hosts remotos. |
orleans-directory-unregistrations-many-issued |
Counter<T> | Recuento de anulaciones de registro de activación múltiple de directorio emitidas. |
orleans-directory-unregistrations-many-remote-sent |
Counter<T> | Recuento de desregistros de activación múltiple de directorios enviados a particiones de directorios remotos. |
orleans-directory-unregistrations-many-remote-received |
Counter<T> | Recuento de desregistros de activación múltiple de directorios recibidos de hosts remotos. |
Anillo coherente
En la tabla siguiente se muestra una colección de medidores de anillo coherentes usados para supervisar la Orleans capa de anillo coherente.
Nombre del medidor | Tipo | Descripción |
---|---|---|
orleans-consistent-ring-size |
ObservableGauge<T> | Un medidor observable que representa el tamaño constante del anillo. |
orleans-consistent-ring-range-percentage-local |
ObservableGauge<T> | Un medidor observable que representa el porcentaje local consistente del anillo. |
orleans-consistent-ring-range-percentage-average |
ObservableGauge<T> | Un medidor observable que representa el porcentaje medio de anillo coherente. |
Perro guardián
En la siguiente tabla se presenta un conjunto de medidores de vigilancia utilizados para monitorear la Orleans capa de vigilancia.
Nombre del medidor | Tipo | Descripción |
---|---|---|
orleans-watchdog-health-checks |
Counter<T> | Recuento de comprobaciones de salud de guardián. |
orleans-watchdog-health-checks-failed |
Counter<T> | Recuento de comprobaciones de estado de guardián erróneas. |
Cliente
En la tabla siguiente se muestra una colección de medidores utilizados para supervisar la capa de cliente Orleans.
Nombre del medidor | Tipo | Descripción |
---|---|---|
orleans-client-connected-gateways |
ObservableGauge<T> | Un medidor observable que representa el número de clientes de puerta de enlace conectadas. |
Varios
En la tabla siguiente se muestra una colección de medidores varios usados para supervisar varias capas.
Nombre del medidor | Tipo | Descripción |
---|---|---|
orleans-grains |
Counter<T> | Un recuento que representa la cantidad de granos. |
orleans-system-targets |
Counter<T> | Recuento que representa el número de destinos del sistema. |
Solicitudes de aplicaciones
En la tabla siguiente se muestra una colección de medidores de solicitudes de aplicaciones usados para supervisar la capa de solicitud de aplicaciones Orleans.
Nombre del medidor | Tipo | Descripción |
---|---|---|
orleans-app-requests-latency |
ObservableCounter<T> | Contador observable que representa la latencia de la solicitud de aplicación. |
orleans-app-requests-timedout |
ObservableCounter<T> | Contador observable que representa las solicitudes de aplicación que han agotado el tiempo de espera. |
Recordatorios
La siguiente tabla muestra una serie de medidores de recordatorio que se usan para supervisar la capa de Orleans recordatorio.
Nombre del medidor | Tipo | Descripción |
---|---|---|
orleans-reminders-tardiness |
Histogram<T> | Un histograma que representa el número de segundos que un recordatorio llega tarde. |
orleans-reminders-active |
ObservableGauge<T> | Un medidor observable que representa el número de recordatorios activos. |
orleans-reminders-ticks-delivered |
Counter<T> | Recuento que representa el número de recordatorios que se han enviado. |
Almacenamiento
En la tabla siguiente se muestra una colección de medidores de almacenamiento usados para supervisar la Orleans capa de almacenamiento.
Nombre del medidor | Tipo | Descripción |
---|---|---|
orleans-storage-read-errors |
Counter<T> | Recuento que representa el número de errores de lectura de almacenamiento. |
orleans-storage-write-errors |
Counter<T> | Recuento que representa el número de errores de escritura de almacenamiento. |
orleans-storage-clear-errors |
Counter<T> | Recuento que representa el número de errores claros de almacenamiento. |
orleans-storage-read-latency |
Histogram<T> | Histograma que representa la latencia de lectura de almacenamiento en milisegundos. |
orleans-storage-write-latency |
Histogram<T> | Histograma que representa la latencia de escritura de almacenamiento en milisegundos. |
orleans-storage-clear-latency |
Histogram<T> | Histograma que representa la latencia clara de almacenamiento en milisegundos. |
Arroyos
En la siguiente tabla se muestra una colección de medidores de flujo usados para supervisar el flujo de capa Orleans.
Nombre del medidor | Tipo | Descripción |
---|---|---|
orleans-streams-pubsub-producers-added |
Counter<T> | Se ha agregado un recuento de productores de pubsub de streaming. |
orleans-streams-pubsub-producers-removed |
Counter<T> | Recuento de productores de pubsub de streaming eliminados. |
orleans-streams-pubsub-producers |
Counter<T> | Recuento de productores de pubsub de streaming. |
orleans-streams-pubsub-consumers-added |
Counter<T> | Recuento de consumidores de pubsub de streaming agregados. |
orleans-streams-pubsub-consumers-removed |
Counter<T> | Se ha eliminado un recuento de consumidores de pubsub de streaming. |
orleans-streams-pubsub-consumers |
Counter<T> | Recuento de consumidores de pubsub de streaming. |
orleans-streams-persistent-stream-pulling-agents |
ObservableGauge<T> | Un medidor observable que representa el número de agentes de extracción de flujos persistentes. |
orleans-streams-persistent-stream-messages-read |
Counter<T> | Recuento de mensajes de flujo persistentes leídos. |
orleans-streams-persistent-stream-messages-sent |
Counter<T> | Recuento de mensajes de flujo persistentes enviados. |
orleans-streams-persistent-stream-pubsub-cache-size |
ObservableGauge<T> | Un indicador observable que representa el tamaño de la caché del sistema pubsub de flujo persistente. |
orleans-streams-queue-initialization-failures |
Counter<T> | Recuento de errores de inicialización de cola de Steam. |
orleans-streams-queue-initialization-duration |
Counter<T> | Recuento de ocurrencias de inicialización de cola de Steam. |
orleans-streams-queue-initialization-exceptions |
Counter<T> | Recuento de excepciones de inicialización de la cola de Steam. |
orleans-streams-queue-read-failures |
Counter<T> | Recuento de fallos de lectura en la cola de trabajo de Steam. |
orleans-streams-queue-read-duration |
Counter<T> | Recuento de ocurrencias de lectura en la cola de vapor. |
orleans-streams-queue-read-exceptions |
Counter<T> | Recuento de excepciones de lectura de cola de espera de vapor. |
orleans-streams-queue-shutdown-failures |
Counter<T> | Recuento de errores de cierre de cola de vapor. |
orleans-streams-queue-shutdown-duration |
Counter<T> | Recuento de ocurrencias de cierre de la cola de vapor. |
orleans-streams-queue-shutdown-exceptions |
Counter<T> | Recuento de excepciones de cierre de cola de vapor. |
orleans-streams-queue-messages-received |
ObservableCounter<T> | Contador observable que representa el número de mensajes de cola de flujos recibidos. |
orleans-streams-queue-oldest-message-enqueue-age |
ObservableGauge<T> | Un indicador observable que representa la edad del mensaje encolado más antiguo. |
orleans-streams-queue-newest-message-enqueue-age |
ObservableGauge<T> | Un medidor observable que representa la antigüedad del mensaje más reciente en cola. |
orleans-streams-block-pool-total-memory |
ObservableCounter<T> | Contador observable que representa la memoria total del grupo de bloques de secuencias en bytes. |
orleans-streams-block-pool-available-memory |
ObservableCounter<T> | Contador observable que representa la memoria disponible del grupo de bloques de flujos en bytes. |
orleans-streams-block-pool-claimed-memory |
ObservableCounter<T> | Contador observable que representa la memoria reclamada del grupo de bloques de flujos en bytes. |
orleans-streams-block-pool-released-memory |
ObservableCounter<T> | Un contador observable que representa la memoria liberada, en bytes, del grupo de bloques de secuencias. |
orleans-streams-block-pool-allocated-memory |
ObservableCounter<T> | Contador observable que representa la memoria asignada del grupo de bloques de secuencias en bytes. |
orleans-streams-queue-cache-size |
ObservableCounter<T> | Contador observable que representa el tamaño de caché de la cola de secuencias en bytes. |
orleans-streams-queue-cache-length |
ObservableCounter<T> | Contador observable que representa la longitud de la cola de flujos. |
orleans-streams-queue-cache-messages-added |
ObservableCounter<T> | Contador observable que representa los mensajes de cola de flujos agregados. |
orleans-streams-queue-cache-messages-purged |
ObservableCounter<T> | Un contador observable que representa los mensajes de la cola de flujo purgados. |
orleans-streams-queue-cache-memory-allocated |
ObservableCounter<T> | Contador observable que representa la memoria de cola de flujos asignada. |
orleans-streams-queue-cache-memory-released |
ObservableCounter<T> | Contador observable que representa la memoria de la cola de flujos liberada. |
orleans-streams-queue-cache-oldest-to-newest-duration |
ObservableGauge<T> | Un medidor observable que representa la duración de la caché de colas de flujos más antigua a la más reciente. |
orleans-streams-queue-cache-oldest-age |
ObservableGauge<T> | Un medidor observable que representa la antigüedad del mensaje almacenado en caché más antiguo. |
orleans-streams-queue-cache-pressure |
ObservableGauge<T> | Un medidor observable que representa la presión en la caché de colas de flujos. |
orleans-streams-queue-cache-under-pressure |
ObservableGauge<T> | Un medidor observable que representa si la caché de colas de flujos está bajo presión. |
orleans-streams-queue-cache-pressure-contribution-count |
ObservableCounter<T> | Contador observable que representa las contribuciones de presión de la caché de colas de flujos. |
Transacciones
En la tabla siguiente se muestra una colección de medidores de transacciones usados para supervisar la Orleans capa de transacción.
Nombre del medidor | Tipo | Descripción |
---|---|---|
orleans-transactions-started |
ObservableCounter<T> | Contador observable que representa el número de transacciones iniciadas. |
orleans-transactions-successful |
ObservableCounter<T> | Contador observable que representa el número de transacciones correctas. |
orleans-transactions-failed |
ObservableCounter<T> | Contador observable que representa el número de transacciones con errores. |
orleans-transactions-throttled |
ObservableCounter<T> | Un contador observable que representa el número de transacciones limitadas. |
Prometeo
Hay varios proveedores de métricas de terceros disponibles para su uso con Orleans. Un ejemplo popular es Prometheus, que puedes usar para recopilar métricas de la aplicación con OpenTelemetry.
Para utilizar OpenTelemetry y Prometheus con Orleans, utilice el siguiente IServiceCollection
método de extensión.
builder.Services.AddOpenTelemetry()
.WithMetrics(metrics =>
{
metrics
.AddPrometheusExporter()
.AddMeter("Microsoft.Orleans");
});
Importante
Los paquetes NuGet OpenTelemetry.Exporter.Prometheus y OpenTelemetry.Exporter.Prometheus.AspNetCore están actualmente en versión preliminar como candidatos para lanzamiento. No se recomiendan para su uso en producción.
El método AddPrometheusExporter
garantiza que PrometheusExporter
sea agregado a builder
.
Orleans usa un Meter llamado "Microsoft.Orleans"
para crear instancias Counter<T> para muchas métricas específicas de Orleans. Use el AddMeter
método para especificar el nombre del medidor al que suscribirse, en este caso, "Microsoft.Orleans"
.
Después de configurar el exportador y compilar la aplicación, llame a MapPrometheusScrapingEndpoint
en el IEndpointRouteBuilder
(instancia de app
) para exponer las métricas a Prometheus. Por ejemplo:
WebApplication app = builder.Build();
app.MapPrometheusScrapingEndpoint();
app.Run();
Seguimiento distribuido
El seguimiento distribuido es un conjunto de herramientas y prácticas para supervisar y solucionar problemas de aplicaciones distribuidas. Es un componente clave de observabilidad y una herramienta crítica para comprender el comportamiento de la aplicación. Orleans admite el seguimiento distribuido con OpenTelemetry.
Independientemente del exportador de seguimiento distribuido que elija, llame a:
- AddActivityPropagation(ISiloBuilder): que habilita el seguimiento distribuido para el silo.
- AddActivityPropagation(IClientBuilder): que habilita el seguimiento distribuido para el cliente.
Haciendo referencia a la Orleans aplicación de ejemplo GPS Tracker, puedes usar el sistema de seguimiento distribuido Zipkin para supervisar la aplicación actualizando Program.cs. Para usar OpenTelemetry y Zipkin con Orleans, llame al método de extensión IServiceCollection
siguiente:
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
El paquete NuGet OpenTelemetry.Exporter.Zipkin está actualmente en versión preliminar como candidato para lanzamiento. No se recomienda para su uso en producción.
El seguimiento de Zipkin se muestra en la interfaz de usuario de Jaeger (una alternativa a Zipkin que usa el mismo formato de datos):
Para obtener más información, consulte Seguimiento distribuido.
Orleans genera sus estadísticas y métricas en tiempo de ejecución a través de la ITelemetryConsumer interfaz . La aplicación puede registrar uno o más consumidores de telemetría para que sus silos y clientes reciban estadísticas y métricas que el entorno de ejecución Orleans publica periódicamente. Pueden ser consumidores para soluciones populares de análisis de telemetría o personalizadas para cualquier otro destino y propósito. Actualmente se incluyen tres consumidores de telemetría en el Orleans código base.
Se publican como paquetes NuGet independientes:
Microsoft.Orleans.OrleansTelemetryConsumers.AI
: para publicar en Azure Application Insights.Microsoft.Orleans.OrleansTelemetryConsumers.Counters
: para publicar en los contadores de rendimiento de Windows. El Orleans tiempo de ejecución actualiza continuamente muchos de ellos. La herramienta CounterControl.exe , incluida en elMicrosoft.Orleans.CounterControl
paquete NuGet, ayuda a registrar las categorías de contadores de rendimiento necesarias. Debe ejecutarse con privilegios elevados. Supervise los contadores de rendimiento mediante cualquier herramienta de supervisión estándar.Microsoft.Orleans.OrleansTelemetryConsumers.NewRelic
: para publicar en New Relic.
Para configurar el silo y el cliente para que utilicen consumidores de telemetría, el código de configuración del silo se presenta de la siguiente manera:
var siloHostBuilder = new HostBuilder()
.UseOrleans(c =>
{
c.AddApplicationInsightsTelemetryConsumer("INSTRUMENTATION_KEY");
});
El código de configuración del cliente tiene este aspecto:
var clientBuilder = new ClientBuilder();
clientBuilder.AddApplicationInsightsTelemetryConsumer("INSTRUMENTATION_KEY");
Para usar una definición TelemetryConfiguration personalizada (que puede tener TelemetryProcessors, TelemetrySinks, etc.), el código de configuración de silo tiene este aspecto:
var telemetryConfiguration = TelemetryConfiguration.CreateDefault();
var siloHostBuilder = new HostBuilder()
.UseOrleans(c =>
{
c.AddApplicationInsightsTelemetryConsumer(telemetryConfiguration);
});
El código de configuración de cliente tiene este aspecto:
var clientBuilder = new ClientBuilder();
var telemetryConfiguration = TelemetryConfiguration.CreateDefault();
clientBuilder.AddApplicationInsightsTelemetryConsumer(telemetryConfiguration);