Orleans наблюдаемость

Наблюдаемость является одним из наиболее важных аспектов распределенной системы. Это возможность понять состояние системы в любое время. Это можно сделать различными способами, включая ведение журнала, метрики и распределенную трассировку.

Лесозаготовка

Orleans использует Microsoft.Extensions.Log для всех журналов silo и клиента. Вы можете использовать любой поставщик ведения журнала, совместимый с Microsoft.Extensions.Logging. Код вашего приложения зависит от внедрения зависимостей, чтобы получить экземпляр ILogger<TCategoryName> и использовать его для логирования сообщений. Дополнительные сведения см. в разделе "Ведение журнала в .NET".

Метрики

Метрики — это числовые измерения, сообщаемые с течением времени. Чаще всего они используются для мониторинга работоспособности приложения и создания оповещений. Дополнительные сведения см. в разделе "Метрики" в .NET. Orleans использует API System.Diagnostics.Metrics для сбора метрик . Эти метрики предоставляются проекту OpenTelemetry , который экспортирует их в различные системы мониторинга.

Чтобы отслеживать приложение без внесения изменений в код, используйте dotnet counters средство диагностики .NET. Чтобы отслеживать OrleansActivitySource счетчики для конкретного <ProcessName>, используйте dotnet counters monitor команду, как показано ниже.

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

Представьте, что вы запускаете Orleans пример приложения GPS Tracker и отслеживаете его в отдельном терминале с помощью команды dotnet counters monitor. Ниже приведены типичные выходные данные:

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

Дополнительные сведения см. в разделе "Анализ счетчиков производительности" (dotnet-counters).

Orleans метров

Orleans использует API System.Diagnostics.Metrics для сбора метрик . Orleans классифицирует каждый счетчик в области проблем, ориентированных на домен, таких как сеть, обмен сообщениями, шлюз и т. д. В следующих подразделах описывается использование счетчиков Orleans .

Нетворкинг

В следующей таблице показана коллекция сетевых счетчиков, используемых для мониторинга сетевого Orleans слоя.

Название единицы измерения Тип Описание
orleans-networking-sockets-closed Counter<T> Количество сокетов, которые закрылись.
orleans-networking-sockets-opened Counter<T> Количество открытых сокетов.

Обмен сообщениями

В следующей таблице показана коллекция счетчиков обмена сообщениями, используемых для мониторинга Orleans уровня обмена сообщениями.

Название единицы измерения Тип Описание
orleans-messaging-sent-messages-size Histogram<T> Гистограмма, представляющая размер отправленных сообщений в байтах.
orleans-messaging-received-messages-size Histogram<T> Гистограмма, представляющая размер полученных сообщений в байтах.
orleans-messaging-sent-header-size ObservableCounter<T> Наблюдаемый счетчик, представляющий количество отправленных байт заголовков.
orleans-messaging-received-header-size ObservableCounter<T> Наблюдаемый счетчик, представляющий количество полученных байт заголовков.
orleans-messaging-sent-failed Counter<T> Количество неудачных отправленных сообщений.
orleans-messaging-sent-dropped Counter<T> Количество удаленных отправленных сообщений.
orleans-messaging-processing-dispatcher-received ObservableCounter<T> Наблюдаемый счетчик, представляющий количество сообщений, полученных диспетчером.
orleans-messaging-processing-dispatcher-processed ObservableCounter<T> Наблюдаемый счетчик, представляющий количество обработанных сообщений диспетчером.
orleans-messaging-processing-dispatcher-forwarded ObservableCounter<T> Наблюдаемый счетчик, представляющий число сообщений, пересланных диспетчером.
orleans-messaging-processing-ima-received ObservableCounter<T> Наблюдаемый счетчик, представляющий количество полученных входящих сообщений.
orleans-messaging-processing-ima-enqueued ObservableCounter<T> Наблюдаемый счетчик, представляющий количество входящих сообщений в очереди.
orleans-messaging-processing-activation-data ObservableGauge<T> Наблюдаемый датчик, представляющий все данные активации обработки.
orleans-messaging-pings-sent Counter<T> Количество отправленных ping-запросов.
orleans-messaging-pings-received Counter<T> Количество полученных пингов.
orleans-messaging-pings-reply-received Counter<T> Количество полученных ответов на пинг.
orleans-messaging-pings-reply-missed Counter<T> Количество пропущенных ответов на ping.
orleans-messaging-expired" Counter<T> Количество сообщений с истекшим сроком действия.
orleans-messaging-rejected Counter<T> Количество сообщений, отклоненных.
orleans-messaging-rerouted Counter<T> Количество сообщений, которые были перенаправены.
orleans-messaging-sent-local ObservableCounter<T> Наблюдаемый счетчик, представляющий количество отправленных локальных сообщений.

Шлюз

В следующей таблице показана коллекция счетчиков шлюза, используемых для мониторинга уровня шлюза Orleans .

Название единицы измерения Тип Описание
orleans-gateway-connected-clients UpDownCounter<T> Счетчик вверх и вниз, представляющий число подключенных клиентов.
orleans-gateway-sent Counter<T> Количество отправленных сообщений шлюза.
orleans-gateway-received Counter<T> Количество полученных сообщений шлюза.
orleans-gateway-load-shedding Counter<T> Количество сообщений шлюза (снижение нагрузки), отклоненных из-за перегрузки шлюза.

Режим выполнения

В следующей таблице показана коллекция счетчиков среды выполнения, используемых для мониторинга Orleans уровня среды выполнения.

Название единицы измерения Тип Описание
orleans-scheduler-long-running-turns Counter<T> Количество длительных поворотов в планировщике.
orleans-runtime-total-physical-memory ObservableCounter<T> Наблюдаемый счетчик, представляющий общее количество памяти (в МБ) Orleans среды выполнения.
orleans-runtime-available-memory ObservableCounter<T> Наблюдаемый счетчик, представляющий доступную память (в МБ) для Orleans среды выполнения.

Каталог

В следующей таблице показано множество счетчиков каталога, используемых для мониторинга Orleans слоя каталога.

Название единицы измерения Тип Описание
orleans-catalog-activations ObservableGauge<T> Наблюдаемый датчик, представляющий количество активаций каталога.
orleans-catalog-activation-working-set ObservableGauge<T> Наблюдаемый датчик, представляющий количество активаций в рабочем наборе.
orleans-catalog-activation-created Counter<T> Количество созданных активаций.
orleans-catalog-activation-destroyed Counter<T> Количество уничтоженных активаций.
orleans-catalog-activation-failed-to-activate Counter<T> Количество активаций, которые не удалось активировать.
orleans-catalog-activation-collections Counter<T> Количество неактивных коллекций активаций.
orleans-catalog-activation-shutdown Counter<T> Количество активаций отключения.
orleans-catalog-activation-non-existent Counter<T> Число несуществующих активаций.
orleans-catalog-activation-concurrent-registration-attempts Counter<T> Количество одновременных попыток регистрации активации.

Каталог

В следующей таблице показана коллекция счетчиков каталогов, используемых для мониторинга Orleans уровня каталогов.

Название единицы измерения Тип Описание
orleans-directory-lookups-local-issued Counter<T> Количество выданных локальных запросов.
orleans-directory-lookups-local-successes Counter<T> Количество локальных успешных поисков.
orleans-directory-lookups-full-issued Counter<T> Количество выполненных поисков полного каталога.
orleans-directory-lookups-remote-sent Counter<T> Количество отправленных поисковых запросов удаленного каталога.
orleans-directory-lookups-remote-received Counter<T> Количество полученных запросов на удаленные каталоги.
orleans-directory-lookups-local-directory-issued Counter<T> Количество выполненных запросов в локальном каталоге.
orleans-directory-lookups-local-directory-successes Counter<T> Количество успешных запросов в локальном каталоге.
orleans-directory-lookups-cache-issued Counter<T> Число произведённых кэшированных запросов.
orleans-directory-lookups-cache-successes Counter<T> Количество кэшированных успешных поисков.
orleans-directory-validations-cache-received Counter<T> Количество полученных проверок кэша каталогов.
orleans-directory-partition-size ObservableGauge<T> Наблюдаемый датчик, представляющий размер раздела каталога.
orleans-directory-cache-size ObservableGauge<T> Наблюдаемый датчик, представляющий размер кэша каталогов.
orleans-directory-ring-size ObservableGauge<T> Наблюдаемый датчик, представляющий размер кольца каталога.
orleans-directory-ring-local-portion-distance ObservableGauge<T> Наблюдаемый датчик, представляющий диапазон кругов, принадлежащий секции локального каталога.
orleans-directory-ring-local-portion-percentage ObservableGauge<T> Наблюдаемый показатель, отражающий диапазон значений, принадлежащий локальному каталогу, выраженный в процентах от общего диапазона.
orleans-directory-ring-local-portion-average-percentage ObservableGauge<T> Наблюдаемый датчик, представляющий средний процент кольцевого диапазона каталога, принадлежащий каждому сайлу, что дает представление о том, насколько сбалансировано владение каталогом.
orleans-directory-registrations-single-act-issued Counter<T> Количество зарегистрированных в каталоге отдельных регистраций активации.
orleans-directory-registrations-single-act-local Counter<T> Количество регистраций одиночной активации каталога, обрабатываемых разделом локального каталога.
orleans-directory-registrations-single-act-remote-sent Counter<T> Количество регистраций единичных активаций каталога, отправленных в раздел удаленного каталога.
orleans-directory-registrations-single-act-remote-received Counter<T> Количество регистраций единой активации каталога, полученных от удаленных узлов.
orleans-directory-unregistrations-issued Counter<T> Количество аннулирований регистрации каталогов.
orleans-directory-unregistrations-local Counter<T> Количество дерегистраций каталогов, обрабатываемых разделом локального каталога.
orleans-directory-unregistrations-remote-sent Counter<T> Количество дерегистраций каталогов, отправленных в разделы удаленных каталогов.
orleans-directory-unregistrations-remote-received Counter<T> Количество дерегистрации каталогов, полученных от удаленных узлов.
orleans-directory-unregistrations-many-issued Counter<T> Количество оформленных дерегистраций многократных активаций каталога.
orleans-directory-unregistrations-many-remote-sent Counter<T> Количество дерегистраций нескольких активаций каталога, отправленных в разделы удалённых каталогов.
orleans-directory-unregistrations-many-remote-received Counter<T> Количество отмен многократных активаций в каталоге, полученных от удаленных узлов.

Согласованное кольцо

В следующей таблице показана коллекция согласованных счетчиков кольца, используемых для мониторинга согласованного Orleans слоя кольца.

Название единицы измерения Тип Описание
orleans-consistent-ring-size ObservableGauge<T> Наблюдаемый датчик, представляющий согласованный размер кольца.
orleans-consistent-ring-range-percentage-local ObservableGauge<T> Наблюдаемый датчик, представляющий локальный процент согласованного кольца.
orleans-consistent-ring-range-percentage-average ObservableGauge<T> Наблюдаемый датчик, представляющий средний процент согласованного кольца.

Сторожевой пес

В следующей таблице показан набор метрических показателей для мониторинга Orleans слоя контроля.

Название единицы измерения Тип Описание
orleans-watchdog-health-checks Counter<T> Количество проверок здоровья наблюдателя.
orleans-watchdog-health-checks-failed Counter<T> Количество неудачных проверок работоспособности наблюдателя.

Клиент

В следующей таблице показана коллекция клиентских счётчиков, используемых для мониторинга Orleans клиентского уровня.

Название единицы измерения Тип Описание
orleans-client-connected-gateways ObservableGauge<T> Наблюдаемый датчик, представляющий число подключенных клиентов шлюза.

Разное

В следующей таблице показана коллекция различных метров, используемых для мониторинга различных слоев.

Название единицы измерения Тип Описание
orleans-grains Counter<T> Число, представляющее количество зерен.
orleans-system-targets Counter<T> Число, представляющее количество целевых объектов системы.

Запросы приложений

В следующей таблице показана коллекция счетчиков запросов приложений, используемых для мониторинга Orleans уровня запросов приложения.

Название единицы измерения Тип Описание
orleans-app-requests-latency ObservableCounter<T> Наблюдаемый счетчик, представляющий задержку запроса приложения.
orleans-app-requests-timedout ObservableCounter<T> Наблюдаемый счетчик, представляющий запросы приложения, время которых истекло.

Напоминания

В следующей таблице показан набор счетчиков напоминаний, используемых для мониторинга Orleans слоя напоминаний.

Название единицы измерения Тип Описание
orleans-reminders-tardiness Histogram<T> Гистограмма, представляющая количество секунд, на которое задерживается напоминание.
orleans-reminders-active ObservableGauge<T> Наблюдаемый датчик, представляющий число активных напоминаний.
orleans-reminders-ticks-delivered Counter<T> Число, представляющее количество галок напоминания, которые были доставлены.

Хранение

В следующей таблице показана коллекция счетчиков хранилища, используемых для мониторинга Orleans уровня хранения.

Название единицы измерения Тип Описание
orleans-storage-read-errors Counter<T> Число, представляющее количество ошибок чтения хранилища.
orleans-storage-write-errors Counter<T> Число, представляющее количество ошибок записи в хранилище.
orleans-storage-clear-errors Counter<T> Число, представляющее количество ошибок очистки хранилища.
orleans-storage-read-latency Histogram<T> Гистограмма, представляющая задержку чтения хранилища в миллисекундах.
orleans-storage-write-latency Histogram<T> Гистограмма, представляющая задержку записи хранилища в миллисекундах.
orleans-storage-clear-latency Histogram<T> Гистограмма, представляющая чистую задержку хранилища в миллисекундах.

Потоки

В следующей таблице показана коллекция счетчиков потоков, используемых для мониторинга Orleans слоя потока.

Название единицы измерения Тип Описание
orleans-streams-pubsub-producers-added Counter<T> Добавлено количество поставщиков потоковой передачи pubsub.
orleans-streams-pubsub-producers-removed Counter<T> Количество удаленных производителей потоковой передачи pubsub.
orleans-streams-pubsub-producers Counter<T> Количество производителей потоковой передачи pubsub.
orleans-streams-pubsub-consumers-added Counter<T> Количество добавленных потребителей потоковой передачи pubsub.
orleans-streams-pubsub-consumers-removed Counter<T> Количество удаленных потребителей потоковой передачи pubsub.
orleans-streams-pubsub-consumers Counter<T> Количество потребителей потоковой передачи pubsub.
orleans-streams-persistent-stream-pulling-agents ObservableGauge<T> Наблюдаемый датчик, представляющий количество агентов извлечения постоянного потока.
orleans-streams-persistent-stream-messages-read Counter<T> Количество прочитанных сообщений из постоянного потока.
orleans-streams-persistent-stream-messages-sent Counter<T> Количество отправленных сообщений постоянного потока.
orleans-streams-persistent-stream-pubsub-cache-size ObservableGauge<T> Наблюдаемый датчик, представляющий размер кэша сохраняемого потока pubsub.
orleans-streams-queue-initialization-failures Counter<T> Количество неудачных инициализаций очереди в Steam.
orleans-streams-queue-initialization-duration Counter<T> Число инициализаций очереди Steam.
orleans-streams-queue-initialization-exceptions Counter<T> Количество исключений инициализации очереди Steam.
orleans-streams-queue-read-failures Counter<T> Количество сбоев чтения очереди от Steam.
orleans-streams-queue-read-duration Counter<T> Количество случаев чтения очереди Steam.
orleans-streams-queue-read-exceptions Counter<T> Количество исключений чтения в очереди Steam.
orleans-streams-queue-shutdown-failures Counter<T> Количество ошибок завершения очереди Steam.
orleans-streams-queue-shutdown-duration Counter<T> Количество случаев завершения работы очереди Steam.
orleans-streams-queue-shutdown-exceptions Counter<T> Количество исключений при завершении работы очереди Steam.
orleans-streams-queue-messages-received ObservableCounter<T> Счетчик, за которым можно наблюдать, представляющий количество полученных сообщений в очереди потока.
orleans-streams-queue-oldest-message-enqueue-age ObservableGauge<T> Наблюдаемый индикатор, представляющий возраст самого старого поставленного в очередь сообщения.
orleans-streams-queue-newest-message-enqueue-age ObservableGauge<T> Наблюдаемый показатель, отражающий возраст самого последнего добавленного в очередь сообщения.
orleans-streams-block-pool-total-memory ObservableCounter<T> Наблюдаемый счетчик, представляющий общий объем памяти пула блоков потоков в байтах.
orleans-streams-block-pool-available-memory ObservableCounter<T> Наблюдаемый счетчик, представляющий доступный объем памяти пула блоков потоков в байтах.
orleans-streams-block-pool-claimed-memory ObservableCounter<T> Наблюдаемый счетчик, отражающий объем памяти, занимаемой пулом блоков потока, в байтах.
orleans-streams-block-pool-released-memory ObservableCounter<T> Счетчик для наблюдения, представляющий пул блоков потоков, освобожденной памяти в байтах.
orleans-streams-block-pool-allocated-memory ObservableCounter<T> Наблюдаемый счетчик, представляющий пул блоков потока, выделенный памятью в байтах.
orleans-streams-queue-cache-size ObservableCounter<T> Наблюдаемый счетчик, представляющий размер кэша очереди потока в байтах.
orleans-streams-queue-cache-length ObservableCounter<T> Наблюдаемый счетчик, представляющий длину очереди потока.
orleans-streams-queue-cache-messages-added ObservableCounter<T> Наблюдаемый счетчик, представляющий сообщения, добавленные в очередь потока.
orleans-streams-queue-cache-messages-purged ObservableCounter<T> Наблюдаемый счетчик, представляющий удаленные сообщения из очереди потока.
orleans-streams-queue-cache-memory-allocated ObservableCounter<T> Наблюдаемый счетчик, представляющий выделенную память очереди потока.
orleans-streams-queue-cache-memory-released ObservableCounter<T> Наблюдаемый счетчик, представляющий память очереди потоков, которая была освобождена.
orleans-streams-queue-cache-oldest-to-newest-duration ObservableGauge<T> Наблюдаемый индикатор, измеряющий длительность от самого старого до самого нового кэша очереди потоков.
orleans-streams-queue-cache-oldest-age ObservableGauge<T> Наблюдаемый датчик, представляющий возраст старого кэшированного сообщения.
orleans-streams-queue-cache-pressure ObservableGauge<T> Наблюдаемый измеритель, представляющий нагрузку на кеш очереди потоков.
orleans-streams-queue-cache-under-pressure ObservableGauge<T> Наблюдаемый датчик, представляющий, находится ли кэш очереди потока под давлением.
orleans-streams-queue-cache-pressure-contribution-count ObservableCounter<T> Наблюдаемый счетчик, представляющий влияние нагрузки на кэш очереди потока.

Транзакции

В следующей таблице показана коллекция счетчиков транзакций, используемых для мониторинга уровня транзакций Orleans .

Название единицы измерения Тип Описание
orleans-transactions-started ObservableCounter<T> Наблюдаемый счетчик, представляющий количество запущенных транзакций.
orleans-transactions-successful ObservableCounter<T> Наблюдаемый счетчик, представляющий количество успешных транзакций.
orleans-transactions-failed ObservableCounter<T> Наблюдаемый счетчик, представляющий количество неудачных транзакций.
orleans-transactions-throttled ObservableCounter<T> Наблюдаемый счетчик, представляющий количество регулируемых транзакций.

Экспорт метрик

Для использования Orleansдоступны различные сторонние поставщики метрик. Экспортируйте метрики из приложения с помощью протокола OpenTelemetry (OTLP). Многие платформы наблюдения используют данные OTLP напрямую или через сборщик OpenTelemetry, включая Prometheus, Grafana и Azure Monitor.

Чтобы экспортировать метрики с помощью OTLP Orleans, установите пакет NuGet OpenTelemetry.Exporter.OpenTelemetryProtocol и вызовите следующий метод расширения IServiceCollection.

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

Метод AddOtlpExporter гарантирует, что экспортер OTLP добавляется в builder. Orleans использует Meter с именем "Microsoft.Orleans" для создания экземпляров Counter<T>, предназначенных для многих метрик, специфичных для Orleans. Используйте метод AddMeter, чтобы указать имя счетчика для подписки, в данном случае "Microsoft.Orleans".

При необходимости можно настроить конечную точку экспортера OTLP и другие параметры. Рассмотрим пример.

builder.Services.AddOpenTelemetry()
    .WithMetrics(metrics =>
    {
        metrics
            .AddOtlpExporter(options =>
            {
                options.Endpoint = new Uri("http://localhost:4317");
            })
            .AddMeter("Microsoft.Orleans");
    });

Замечание

Конфигурация экспортера OTLP по умолчанию использует gRPC (обычно порт 4317). Чтобы экспортировать метрики в Prometheus, отправьте данные телеметрии через сборщик OpenTelemetry или настройте параметры OTLP/HTTP.

Распределенная трассировка

Распределенная трассировка — это набор средств и методик для мониторинга и устранения неполадок распределенных приложений. Это ключевой компонент наблюдаемости и критически важный инструмент для понимания поведения вашего приложения. Orleans поддерживает распределенную трассировку с помощью OpenTelemetry.

Независимо от выбранного экспортёра распределённой трассировки выполните вызов:

Или задайте для параметра конфигурации EnableDistributedTracing значение true.

Ссылаясь на Orleans пример приложения GPS Tracker, вы можете экспортировать распределенные трассировки с помощью протокола OpenTelemetry (OTLP). Чтобы использовать OpenTelemetry с OTLP и Orleansустановите пакет OpenTelemetry.Exporter.OpenTelemetryProtocol NuGet и вызовите следующий IServiceCollection метод расширения в Program.cs:

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

        // Good baseline for general Orleans observability
        tracing.AddSource(Orleans.Diagnostics.ActivitySources.ApplicationGrainActivitySourceName);
        tracing.AddSource(Orleans.Diagnostics.ActivitySources.LifecycleActivitySourceName);

        /*
        // Other source also available
        // Persistence spans
        tracing.AddSource(Orleans.Diagnostics.ActivitySources.StorageActivitySourceName);
        // Internal Runtime spans
        tracing.AddSource(Orleans.Diagnostics.ActivitySources.RuntimeActivitySourceName);
        */

        /*
        // Optionally add all Microsoft.Orleans.* Sources at once
        tracing.AddSource(Orleans.Diagnostics.ActivitySources.AllActivitySourceName);
        */

        tracing.AddOtlpExporter(otlp =>
        {
            otlp.Endpoint = new Uri("http://localhost:4317");
        });
    });

Экспортер OTLP работает со многими платформами наблюдаемости, включая Jaeger, Zipkin, Grafana Tempo и Azure Monitor. Трассировки можно визуализировать в таких инструментах, как пользовательский интерфейс Jaeger:

Orleans Пример приложения для отслеживания GPS: трассировка пользовательского интерфейса Jaeger.

Дополнительные сведения см. в разделе "Распределенная трассировка".

Orleans выводит статистику среды выполнения и метрики через ITelemetryConsumer интерфейс. Ваше приложение может зарегистрировать одного или нескольких потребителей телеметрии для своих силосов и клиентов, чтобы получать статистику и метрики, которые средства исполнения Orleans периодически публикуют. Это могут быть потребители для популярных решений аналитики телеметрии или индивидуальных решений для любой другой цели и назначения. В настоящее время три потребителя телеметрии включены в Orleans базу кода.

Они выпускаются в виде отдельных пакетов NuGet:

  • Microsoft.Orleans.OrleansTelemetryConsumers.AI: для публикации в приложение Azure Insights.

  • Microsoft.Orleans.OrleansTelemetryConsumers.Counters: для публикации в счетчиках производительности Windows. Среда выполнения Orleans непрерывно обновляет многие из них. Средство CounterControl.exe , включенного в Microsoft.Orleans.CounterControl пакет NuGet, помогает зарегистрировать необходимые категории счетчиков производительности. Он должен выполняться с повышенными привилегиями. Отслеживайте счетчики производительности с помощью любых стандартных средств мониторинга.

  • Microsoft.Orleans.OrleansTelemetryConsumers.NewRelic: для публикации в New Relic.

Чтобы настроить silo и клиент для использования потребителей телеметрии, код конфигурации для silo выглядит следующим образом:

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

Код конфигурации клиента выглядит следующим образом:

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

Чтобы использовать настраиваемый TelemetryConfiguration (который может иметь TelemetryProcessors, TelemetrySinks и т. д.), код конфигурации silo выглядит следующим образом:

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

Код конфигурации клиента выглядит следующим образом:

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

См. также