Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Наблюдаемость является одним из наиболее важных аспектов распределенной системы. Это возможность понять состояние системы в любое время. Это можно сделать различными способами, включая ведение журнала, метрики и распределенную трассировку.
Лесозаготовка
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.
Независимо от выбранного экспортёра распределённой трассировки выполните вызов:
- AddActivityPropagation(ISiloBuilder): что позволяет включить распределённую трассировку для хранилища.
- AddActivityPropagation(IClientBuilder): что обеспечивает распределенную трассировку для клиента.
Или задайте для параметра конфигурации 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 выводит статистику среды выполнения и метрики через 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);