관찰성은 분산 시스템의 가장 중요한 측면 중 하나입니다. 지정된 시간에 시스템의 상태를 이해하는 기능입니다. 로깅, 메트릭 및 분산 추적을 비롯한 다양한 방법으로 이 작업을 수행할 수 있습니다.
로깅 (로그 기록)
Orleans 는 모든 사일로 및 클라이언트 로그에 대해 Microsoft.Extensions.Logging 을 사용합니다.
Microsoft.Extensions.Logging와 호환되는 모든 로깅 공급자를 사용할 수 있습니다. 앱 코드는 종속성 주입 을 사용하여 인스턴스 ILogger<TCategoryName> 를 가져와 메시지를 기록하는 데 사용합니다. 자세한 내용은 .NET의 로깅을 참조하세요.
지표
메트릭은 시간에 따라 보고된 숫자 측정값입니다. 애플리케이션의 상태를 모니터링하고 경고를 생성하는 데 가장 자주 사용합니다. 자세한 내용은 .NET의 메트릭을 참조하세요. Orleans 에서는 System.Diagnostics.Metrics API를 사용하여 메트릭을 수집합니다. 이러한 메트릭은 OpenTelemetry 프로젝트에 노출되어 다양한 모니터링 시스템으로 내보냅니다.
코드를 변경하지 않고 앱을 모니터링하려면 .NET 진단 도구를 사용합니다 dotnet counters . 특정 Orleans에 대한 카운터ActivitySource<ProcessName>를 모니터링하려면 다음과 같이 dotnet counters monitor 명령을 사용하십시오.
dotnet counters monitor -n <ProcessName> --counters Microsoft.Orleans
GPS 추적기 샘플 앱을 실행하고Orleans 명령을 사용하여 별도의 터미널에서 모니터링하는 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 에서는 System.Diagnostics.Metrics API를 사용하여 메트릭을 수집합니다. 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> | 수신된 ping의 수입니다. |
orleans-messaging-pings-reply-received |
Counter<T> | 수신된 ping 회신의 수입니다. |
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> | 런타임의 총 메모리 수(MB) Orleans 를 나타내는 관찰 가능한 카운터입니다. |
orleans-runtime-available-memory |
ObservableCounter<T> | 런타임에 사용 가능한 메모리(MB) 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-sent |
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 Watchdog 계층을 모니터링하는 데 사용되는 watchdog 미터 모음이 보여줍니다.
| 미터 이름 | 유형 | 설명 |
|---|---|---|
orleans-watchdog-health-checks |
Counter<T> | 감시자 상태 검사의 수입니다. |
orleans-watchdog-health-checks-failed |
Counter<T> | 실패한 Watchdog 상태 검사의 수입니다. |
클라이언트
다음 표에서는 클라이언트 계층을 모니터링 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> | 스팀 큐 초기화 실패의 횟수입니다. |
orleans-streams-queue-initialization-duration |
Counter<T> | 스팀 큐 초기화 발생 횟수입니다. |
orleans-streams-queue-initialization-exceptions |
Counter<T> | 스팀 큐 초기화 예외의 총 수입니다. |
orleans-streams-queue-read-failures |
Counter<T> | 스팀 큐 읽기 오류 횟수입니다. |
orleans-streams-queue-read-duration |
Counter<T> | 스팀 큐 읽기 발생 횟수입니다. |
orleans-streams-queue-read-exceptions |
Counter<T> | 스팀 큐 읽기 예외의 발생 횟수입니다. |
orleans-streams-queue-shutdown-failures |
Counter<T> | 스팀 대기열 종료 오류 횟수입니다. |
orleans-streams-queue-shutdown-duration |
Counter<T> | 스팀 큐 종료 발생 횟수입니다. |
orleans-streams-queue-shutdown-exceptions |
Counter<T> | 스팀 대기열 종료 예외의 수입니다. |
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를 사용하여 앱에서 메트릭을 수집하는 데 사용할 수 있는 Prometheus입니다.
OpenTelemetry 및 Prometheus를 사용하려면 Orleans에서 다음 IServiceCollection 확장 메서드를 호출합니다.
builder.Services.AddOpenTelemetry()
.WithMetrics(metrics =>
{
metrics
.AddPrometheusExporter()
.AddMeter("Microsoft.Orleans");
});
중요합니다
OpenTelemetry.Exporter.Prometheus 및 OpenTelemetry.Exporter.Prometheus.AspNetCore NuGet 패키지는 모두 현재 릴리스 후보로 미리 보기로 제공됩니다. 프로덕션 사용에는 권장되지 않습니다.
메서드는 AddPrometheusExporter이 PrometheusExporter에 추가되도록 합니다 builder .
Orleans는 Meter라는 이름의 "Microsoft.Orleans"를 사용하여 다양한 Counter<T>-특정 메트릭에 대한 Orleans 인스턴스를 만듭니다. 미터의 이름을 지정하려면 AddMeter 메서드를 사용하여, 이 경우 "Microsoft.Orleans"을(를) 구독합니다.
내보내기 도구를 구성하고 앱을 빌드한 후, MapPrometheusScrapingEndpoint 인스턴스인 IEndpointRouteBuilder에 app를 호출하여 메트릭을 Prometheus에 공개합니다. 다음은 그 예입니다.
WebApplication app = builder.Build();
app.MapPrometheusScrapingEndpoint();
app.Run();
분산 추적
분산 추적은 분산 애플리케이션을 모니터링하고 문제를 해결하기 위한 도구 및 사례 집합입니다. 이는 앱의 동작을 이해하기 위한 중요한 도구이자 관찰 가능성의 핵심 구성 요소입니다. Orleans 는 OpenTelemetry를 사용하여 분산 추적을 지원합니다.
선택한 분산 추적 익스포터와 관계없이 다음을 호출합니다.
- AddActivityPropagation(ISiloBuilder): 사일로에 대해 분산 추적을 사용하도록 설정합니다.
- AddActivityPropagation(IClientBuilder): 클라이언트에 대해 분산 추적을 사용하도록 설정합니다.
또는 구성 옵션을 EnableDistributedTracing.로 설정합니다true.
GPS 추적기 샘플 앱을 다시 참조하면OrleansZipkin 분산 추적 시스템을 사용하여 Program.cs 업데이트하여 앱을 모니터링할 수 있습니다. OpenTelemetry 및 Zipkin을 Orleans 사용하려면, 다음 IServiceCollection 확장 메서드를 호출하세요.
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");
});
});
중요합니다
OpenTelemetry.Exporter.Zipkin NuGet 패키지는 현재 릴리스 후보로 미리 보기로 제공됩니다. 프로덕션 용도에는 권장되지 않습니다.
Zipkin 추적은 Jaeger UI(동일한 데이터 형식을 사용하는 Zipkin 대신)에 표시됩니다.
자세한 내용은 분산 추적을 참조하세요.
Orleans는 런타임 통계 및 메트릭을 ITelemetryConsumer 인터페이스를 통해 출력합니다. 애플리케이션은 사일로와 클라이언트를 위해 하나 이상의 텔레메트리 소비자를 등록하여 런타임이 정기적으로 게시하는 통계 및 메트릭을 Orleans 수신할 수 있습니다. 이러한 솔루션은 인기 있는 원격 분석 솔루션의 소비자이거나 다른 대상 및 목적을 위한 사용자 지정 솔루션일 수 있습니다. 현재 세 개의 텔레메트리 소비자가 코드베이스에 Orleans 포함되어 있습니다.
별도의 NuGet 패키지로 릴리스됩니다.
Microsoft.Orleans.OrleansTelemetryConsumers.AI: Azure Application Insights에 게시합니다.Microsoft.Orleans.OrleansTelemetryConsumers.Counters: Windows 성능 카운터에 게시하기 위해. 런타임은 Orleans 계속해서 많은 업데이트합니다. NuGet 패키지에 포함된Microsoft.Orleans.CounterControl도구는 필요한 성능 카운터 범주를 등록하는 데 도움이 됩니다. 관리자 권한으로 실행해야 합니다. 표준 모니터링 도구를 사용하여 성능 카운터를 모니터링합니다.Microsoft.Orleans.OrleansTelemetryConsumers.NewRelic: New Relic에 게시합니다.
원격 측정 소비자를 사용하도록 사일로 및 클라이언트를 구성하려면 사일로 구성 코드는 다음과 같습니다.
var siloHostBuilder = new HostBuilder()
.UseOrleans(c =>
{
c.AddApplicationInsightsTelemetryConsumer("INSTRUMENTATION_KEY");
});
클라이언트 구성 코드는 다음과 같습니다.
var clientBuilder = new ClientBuilder();
clientBuilder.AddApplicationInsightsTelemetryConsumer("INSTRUMENTATION_KEY");
사용자 정의된 TelemetryConfiguration (예: TelemetryProcessors, TelemetrySinks 포함)을 사용하려면, 사일로 구성 코드는 다음과 같이 됩니다.
var telemetryConfiguration = TelemetryConfiguration.CreateDefault();
var siloHostBuilder = new HostBuilder()
.UseOrleans(c =>
{
c.AddApplicationInsightsTelemetryConsumer(telemetryConfiguration);
});
클라이언트 구성 코드는 다음과 같습니다.
var clientBuilder = new ClientBuilder();
var telemetryConfiguration = TelemetryConfiguration.CreateDefault();
clientBuilder.AddApplicationInsightsTelemetryConsumer(telemetryConfiguration);
참고하십시오
.NET