Orleans Kemampuan Mengamati

Pengamatan adalah salah satu aspek terpenting dari sistem terdistribusi. Ini adalah kemampuan untuk memahami status sistem pada waktu tertentu. Anda dapat mencapai ini dengan berbagai cara, termasuk pengelogan, metrik, dan pelacakan terdistribusi.

Penebangan kayu

Orleans menggunakan Microsoft.Extensions.Logging untuk semua log silo dan klien. Anda dapat menggunakan penyedia pengelogan apa pun yang kompatibel dengan Microsoft.Extensions.Logging. Kode aplikasi Anda bergantung pada injeksi dependensi untuk mendapatkan instans ILogger<TCategoryName> dan menggunakannya untuk merekam pesan. Untuk informasi selengkapnya, lihat Pencatatan di .NET.

Metode pengukuran

Metrik adalah pengukuran numerik yang dilaporkan dari waktu ke waktu. Anda paling sering menggunakannya untuk memantau kesehatan aplikasi dan menghasilkan pemberitahuan. Untuk informasi selengkapnya, lihat Metrik di .NET. Orleans menggunakan API System.Diagnostics.Metrics untuk mengumpulkan metrik. Metrik ini diekspos ke proyek OpenTelemetry , yang mengekspornya ke berbagai sistem pemantauan.

Untuk memantau aplikasi Anda tanpa membuat perubahan kode apa pun, gunakan dotnet counters alat diagnostik .NET. Untuk memantau penghitung OrleansActivitySource untuk suatu <ProcessName> tertentu, gunakan perintah dotnet counters monitor seperti yang ditunjukkan.

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

Bayangkan Anda menjalankan Orleans aplikasi sampel GPS Tracker dan memantaunya di terminal terpisah dengan dotnet counters monitor perintah . Output berikut ini umum:

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

Untuk informasi selengkapnya, lihat Menyelidiki penghitung kinerja (penghitung dotnet).

Orleans Meter

Orleans menggunakan API System.Diagnostics.Metrics untuk mengumpulkan metrik. Orleans mengategorikan setiap meter ke dalam masalah yang berpusat pada domain, seperti jaringan, olahpesan, gateway, dll. Subbagian berikut menjelaskan meter yang Orleans gunakan.

Jaringan

Tabel berikut menunjukkan kumpulan meter jaringan yang digunakan untuk memantau Orleans lapisan jaringan.

Nama meter Tipe Deskripsi
orleans-networking-sockets-closed Counter<T> Jumlah soket yang telah ditutup.
orleans-networking-sockets-opened Counter<T> Jumlah soket yang telah dibuka.

Pesan

Tabel berikut ini memperlihatkan kumpulan meter pesan yang digunakan untuk memantau Orleans lapisan pesan.

Nama meter Tipe Deskripsi
orleans-messaging-sent-messages-size Histogram<T> Histogram yang mewakili ukuran pesan dalam byte yang telah dikirim.
orleans-messaging-received-messages-size Histogram<T> Histogram yang mewakili ukuran pesan yang telah diterima dalam byte.
orleans-messaging-sent-header-size ObservableCounter<T> Penghitung yang dapat diamati yang mewakili jumlah byte header yang dikirim.
orleans-messaging-received-header-size ObservableCounter<T> Penghitung yang dapat diamati yang mewakili jumlah byte header yang diterima.
orleans-messaging-sent-failed Counter<T> Jumlah pesan yang gagal dikirim.
orleans-messaging-sent-dropped Counter<T> Jumlah pesan terkirim yang gagal dikirim.
orleans-messaging-processing-dispatcher-received ObservableCounter<T> Penghitung yang dapat diamati yang mewakili jumlah pesan yang diterima oleh dispatcher.
orleans-messaging-processing-dispatcher-processed ObservableCounter<T> Penghitung yang dapat diamati yang mewakili jumlah pesan yang diproses oleh dispatcher.
orleans-messaging-processing-dispatcher-forwarded ObservableCounter<T> Penghitung yang dapat diamati yang mewakili jumlah pesan yang diteruskan oleh dispatcher.
orleans-messaging-processing-ima-received ObservableCounter<T> Penghitung yang dapat diamati yang mewakili jumlah pesan masuk yang diterima.
orleans-messaging-processing-ima-enqueued ObservableCounter<T> Penghitung yang dapat diamati yang mewakili jumlah pesan masuk yang diantrekan.
orleans-messaging-processing-activation-data ObservableGauge<T> Pengukur yang dapat diamati yang mewakili semua data aktivasi pemrosesan.
orleans-messaging-pings-sent Counter<T> Jumlah ping yang dikirim.
orleans-messaging-pings-received Counter<T> Jumlah ping yang diterima.
orleans-messaging-pings-reply-received Counter<T> Jumlah balasan ping yang diterima.
orleans-messaging-pings-reply-missed Counter<T> Jumlah balasan ping yang hilang.
orleans-messaging-expired" Counter<T> Jumlah pesan yang telah kedaluwarsa.
orleans-messaging-rejected Counter<T> Jumlah pesan yang telah ditolak.
orleans-messaging-rerouted Counter<T> Jumlah pesan yang telah dialihkan.
orleans-messaging-sent-local ObservableCounter<T> Penghitung yang dapat diamati yang mewakili jumlah pesan lokal yang dikirim.

Gerbang Jaringan

Tabel berikut memperlihatkan kumpulan meter gateway yang digunakan untuk memantau lapisan gateway Orleans.

Nama meter Tipe Deskripsi
orleans-gateway-connected-clients UpDownCounter<T> Penghitung naik/turun yang mewakili jumlah klien yang sedang terhubung.
orleans-gateway-sent Counter<T> Jumlah pesan gateway yang dikirim.
orleans-gateway-received Counter<T> Jumlah pesan gateway yang diterima.
orleans-gateway-load-shedding Counter<T> Jumlah pesan gateway (load shedding) yang telah ditolak karena gateway kelebihan beban.

Waktu Operasi

Tabel berikut menunjukkan kumpulan pengukur runtime yang digunakan untuk memantau lapisan runtime Orleans.

Nama meter Tipe Deskripsi
orleans-scheduler-long-running-turns Counter<T> Jumlah giliran jangka panjang dalam penjadwal.
orleans-runtime-total-physical-memory ObservableCounter<T> Penghitung teramati yang mewakili total jumlah memori (dalam MB) dari Orleans runtime.
orleans-runtime-available-memory ObservableCounter<T> Penghitung yang dapat diamati yang mewakili memori yang tersedia (dalam MB) untuk Orleans runtime.

Katalog

Tabel berikut menunjukkan kumpulan meter katalog yang digunakan untuk memantau Orleans lapisan katalog.

Nama meter Tipe Deskripsi
orleans-catalog-activations ObservableGauge<T> Pengukur yang dapat diamati yang mewakili jumlah aktivasi katalog.
orleans-catalog-activation-working-set ObservableGauge<T> Pengukur yang dapat diamati yang mewakili jumlah aktivasi dalam set kerja.
orleans-catalog-activation-created Counter<T> Jumlah aktivasi yang dibuat.
orleans-catalog-activation-destroyed Counter<T> Jumlah aktivasi yang dihancurkan.
orleans-catalog-activation-failed-to-activate Counter<T> Jumlah aktivasi yang gagal diaktifkan.
orleans-catalog-activation-collections Counter<T> Jumlah pengumpulan aktivasi tidak aktif.
orleans-catalog-activation-shutdown Counter<T> Jumlah aktivasi pemadaman.
orleans-catalog-activation-non-existent Counter<T> Jumlah aktivasi yang tidak ada.
orleans-catalog-activation-concurrent-registration-attempts Counter<T> Jumlah upaya pendaftaran aktivasi bersamaan.

Direktori

Tabel berikut menunjukkan kumpulan meter direktori yang digunakan untuk memantau Orleans lapisan direktori.

Nama meter Tipe Deskripsi
orleans-directory-lookups-local-issued Counter<T> Jumlah pemeriksaan lokal yang dilakukan.
orleans-directory-lookups-local-successes Counter<T> Jumlah pencarian lokal yang berhasil.
orleans-directory-lookups-full-issued Counter<T> Jumlah pencarian direktori lengkap yang dilakukan.
orleans-directory-lookups-remote-sent Counter<T> Jumlah pencarian direktori jarak jauh yang dilakukan.
orleans-directory-lookups-remote-received Counter<T> Jumlah pencarian direktori jarak jauh yang diterima.
orleans-directory-lookups-local-directory-issued Counter<T> Jumlah pencarian direktori lokal yang dilakukan.
orleans-directory-lookups-local-directory-successes Counter<T> Jumlah total pencarian direktori lokal yang berhasil.
orleans-directory-lookups-cache-issued Counter<T> Penghitungan pencarian cache telah dikeluarkan.
orleans-directory-lookups-cache-successes Counter<T> Jumlah pencarian yang berhasil di-cache.
orleans-directory-validations-cache-received Counter<T> Jumlah validasi cache direktori yang diterima.
orleans-directory-partition-size ObservableGauge<T> Pengukur yang dapat diamati yang mewakili ukuran partisi direktori.
orleans-directory-cache-size ObservableGauge<T> Pengukur yang dapat diamati yang mewakili ukuran cache direktori.
orleans-directory-ring-size ObservableGauge<T> Pengukur yang dapat diamati yang mewakili ukuran cincin direktori.
orleans-directory-ring-local-portion-distance ObservableGauge<T> Pengukur yang dapat diamati yang mewakili rentang cincin yang dimiliki oleh partisi direktori lokal.
orleans-directory-ring-local-portion-percentage ObservableGauge<T> Pengukur yang dapat diamati yang mewakili rentang cincin yang dimiliki oleh direktori lokal, diwakili sebagai persentase dari rentang total.
orleans-directory-ring-local-portion-average-percentage ObservableGauge<T> Pengukur yang dapat diamati ini mewakili persentase rata-rata rentang cincin direktori yang dimiliki oleh setiap silo, memberikan gambaran tentang seberapa seimbangnya kepemilikan direktori.
orleans-directory-registrations-single-act-issued Counter<T> Jumlah pendaftaran aktivasi tunggal direktori yang dikeluarkan.
orleans-directory-registrations-single-act-local Counter<T> Jumlah registrasi aktivasi tunggal direktori yang dikelola oleh partisi direktori lokal.
orleans-directory-registrations-single-act-remote-sent Counter<T> Jumlah pendaftaran aktivasi tunggal direktori yang dikirim ke partisi direktori jarak jauh.
orleans-directory-registrations-single-act-remote-received Counter<T> Jumlah pendaftaran aktivasi tunggal direktori yang diterima dari host jarak jauh.
orleans-directory-unregistrations-issued Counter<T> Jumlah penghapusan direktori yang diterbitkan.
orleans-directory-unregistrations-local Counter<T> Jumlah deregistrasi direktori yang ditangani oleh partisi direktori lokal.
orleans-directory-unregistrations-remote-sent Counter<T> Jumlah deregistrasi direktori yang dikirim ke partisi direktori jarak jauh.
orleans-directory-unregistrations-remote-received Counter<T> Jumlah pendaftaran ulang direktori yang diterima dari host jarak jauh.
orleans-directory-unregistrations-many-issued Counter<T> Jumlah deregistrasi multi-aktivasi direktori yang diterbitkan.
orleans-directory-unregistrations-many-remote-sent Counter<T> Jumlah pembatalan deregistrasi multi-aktivasi direktori yang dikirim ke partisi direktori jarak jauh.
orleans-directory-unregistrations-many-remote-received Counter<T> Jumlah penghitungan pengaktifan ganda pada direktori yang dihentikan dan diterima dari host jarak jauh.

Cincin yang konsisten

Tabel berikut menunjukkan kumpulan meter cincin yang digunakan untuk memantau lapisan cincin yang Orleans konsisten.

Nama meter Tipe Deskripsi
orleans-consistent-ring-size ObservableGauge<T> Alat ukur yang dapat diamati yang mewakili ukuran cincin yang konsisten.
orleans-consistent-ring-range-percentage-local ObservableGauge<T> Pengukur yang dapat diamati yang mewakili persentase lokal lingkaran yang konsisten.
orleans-consistent-ring-range-percentage-average ObservableGauge<T> Pengukur yang dapat diamati yang mewakili persentase rata-rata cincin yang konsisten.

Pemantau

Tabel berikut menunjukkan sekumpulan meter pengawas yang digunakan untuk memantau lapisan pengawas Orleans.

Nama meter Tipe Deskripsi
orleans-watchdog-health-checks Counter<T> Jumlah pemeriksaan kesehatan pengawas.
orleans-watchdog-health-checks-failed Counter<T> Jumlah pemeriksaan kesehatan pengawas yang gagal.

Klien

Tabel berikut menunjukkan kumpulan meter klien yang digunakan untuk memantau Orleans lapisan klien.

Nama meter Tipe Deskripsi
orleans-client-connected-gateways ObservableGauge<T> Alat ukur yang dapat diamati yang mewakili jumlah klien gateway yang terhubung.

Lain-lain

Tabel berikut menunjukkan kumpulan meter lain-lain yang digunakan untuk memantau berbagai lapisan.

Nama meter Tipe Deskripsi
orleans-grains Counter<T> Hitungan yang menunjukkan jumlah biji-bijian.
orleans-system-targets Counter<T> Hitungan yang menunjukkan jumlah target sistem.

Permintaan aplikasi

Tabel berikut menunjukkan kumpulan meter permintaan aplikasi yang digunakan untuk memantau Orleans lapisan permintaan aplikasi.

Nama meter Tipe Deskripsi
orleans-app-requests-latency ObservableCounter<T> Penghitung yang dapat diamati yang mewakili latensi permintaan aplikasi.
orleans-app-requests-timedout ObservableCounter<T> Penghitung yang dapat diamati yang mewakili permintaan aplikasi yang telah kehabisan waktu.

Pengingat

Tabel berikut menunjukkan kumpulan meter pengingat yang digunakan untuk memantau Orleans lapisan pengingat.

Nama meter Tipe Deskripsi
orleans-reminders-tardiness Histogram<T> Histogram yang mewakili jumlah detik keterlambatan pengingat.
orleans-reminders-active ObservableGauge<T> Pengukur yang dapat diamati yang mewakili jumlah pengingat aktif.
orleans-reminders-ticks-delivered Counter<T> Hitungan yang menunjukkan jumlah tanda centang pengingat yang telah dikirimkan.

Storage

Tabel berikut menunjukkan kumpulan meter penyimpanan yang digunakan untuk memantau Orleans lapisan penyimpanan.

Nama meter Tipe Deskripsi
orleans-storage-read-errors Counter<T> Hitungan yang menunjukkan jumlah kesalahan baca penyimpanan.
orleans-storage-write-errors Counter<T> Jumlah yang menunjukkan jumlah kesalahan penulisan penyimpanan.
orleans-storage-clear-errors Counter<T> Sebuah hitungan yang mewakili jumlah kesalahan dalam penghapusan penyimpanan.
orleans-storage-read-latency Histogram<T> Histogram yang mewakili latensi baca penyimpanan dalam milidetik.
orleans-storage-write-latency Histogram<T> Histogram yang mewakili latensi tulis penyimpanan dalam milidetik.
orleans-storage-clear-latency Histogram<T> Histogram yang mewakili latensi penyimpanan yang jelas dalam milidetik.

Sungai

Tabel berikut menunjukkan kumpulan pengukur aliran yang digunakan untuk memantau Orleans lapisan aliran.

Nama meter Tipe Deskripsi
orleans-streams-pubsub-producers-added Counter<T> Jumlah produser pubsub streaming ditambahkan.
orleans-streams-pubsub-producers-removed Counter<T> Jumlah produsen pubsub streaming yang telah dihapus.
orleans-streams-pubsub-producers Counter<T> Jumlah produser pubsub streaming.
orleans-streams-pubsub-consumers-added Counter<T> Jumlah konsumen pubsub streaming ditambahkan.
orleans-streams-pubsub-consumers-removed Counter<T> Jumlah konsumen pubsub streaming dihapus.
orleans-streams-pubsub-consumers Counter<T> Jumlah konsumen pubsub streaming.
orleans-streams-persistent-stream-pulling-agents ObservableGauge<T> Alat ukur yang dapat dilihat mewakili jumlah agen penarik aliran yang terus-menerus.
orleans-streams-persistent-stream-messages-read Counter<T> Jumlah pesan aliran persisten yang dibaca.
orleans-streams-persistent-stream-messages-sent Counter<T> Jumlah pesan aliran persisten yang dikirim.
orleans-streams-persistent-stream-pubsub-cache-size ObservableGauge<T> Alat ukur yang dapat diamati yang mewakili ukuran cache pubsub aliran persisten.
orleans-streams-queue-initialization-failures Counter<T> Jumlah kegagalan inisialisasi antrean uap.
orleans-streams-queue-initialization-duration Counter<T> Jumlah kemunculan inisialisasi antrean Steam.
orleans-streams-queue-initialization-exceptions Counter<T> Jumlah pengecualian inisialisasi antrian Steam.
orleans-streams-queue-read-failures Counter<T> Jumlah kegagalan baca antrean Steam.
orleans-streams-queue-read-duration Counter<T> Jumlah pembacaan antrean Steam.
orleans-streams-queue-read-exceptions Counter<T> Jumlah pengecualian pembacaan dalam antrean Steam.
orleans-streams-queue-shutdown-failures Counter<T> Jumlah kegagalan penutupan antrian Steam.
orleans-streams-queue-shutdown-duration Counter<T> Jumlah kejadian penonaktifan antrean Steam.
orleans-streams-queue-shutdown-exceptions Counter<T> Jumlah pengecualian matikan antrean uap.
orleans-streams-queue-messages-received ObservableCounter<T> Penghitung yang dapat diamati yang menunjukkan jumlah pesan antrean aliran yang diterima.
orleans-streams-queue-oldest-message-enqueue-age ObservableGauge<T> Pengukur yang dapat diamati yang mewakili usia pesan antrean tertua.
orleans-streams-queue-newest-message-enqueue-age ObservableGauge<T> Pengukur yang menunjukkan usia pesan terbaru yang diantrekan.
orleans-streams-block-pool-total-memory ObservableCounter<T> Penghitung yang dapat diamati yang mewakili total memori kumpulan blok aliran dalam byte.
orleans-streams-block-pool-available-memory ObservableCounter<T> Penghitung yang dapat diamati yang menunjukkan memori yang tersedia dalam byte untuk kumpulan blok aliran.
orleans-streams-block-pool-claimed-memory ObservableCounter<T> Penghitung yang dapat diamati yang mewakili kumpulan blok aliran yang diklaim memori dalam byte.
orleans-streams-block-pool-released-memory ObservableCounter<T> Penghitung yang dapat diamati yang menunjukkan memori yang dilepaskan dari kumpulan blok aliran dalam byte.
orleans-streams-block-pool-allocated-memory ObservableCounter<T> Penghitung yang dapat diamati yang mewakili kumpulan blok aliran yang dialokasikan memori dalam byte.
orleans-streams-queue-cache-size ObservableCounter<T> Penghitung yang dapat diamati yang mewakili ukuran cache aliran antrean dalam byte.
orleans-streams-queue-cache-length ObservableCounter<T> Penghitung yang dapat diamati yang mewakili panjang antrian aliran data.
orleans-streams-queue-cache-messages-added ObservableCounter<T> Penghitung yang dapat diamati mewakili jumlah pesan yang ditambahkan ke antrean aliran.
orleans-streams-queue-cache-messages-purged ObservableCounter<T> Penghitung yang dapat diamati yang mewakili pesan antrian aliran yang dihapus.
orleans-streams-queue-cache-memory-allocated ObservableCounter<T> Penghitung yang dapat diamati yang mewakili memori antrean aliran yang dialokasikan.
orleans-streams-queue-cache-memory-released ObservableCounter<T> Penghitung yang dapat diamati yang mewakili memori antrean aliran yang dirilis.
orleans-streams-queue-cache-oldest-to-newest-duration ObservableGauge<T> Pengukur yang dapat diamati yang mewakili durasi dari cache antrean aliran terlama ke yang terbaru.
orleans-streams-queue-cache-oldest-age ObservableGauge<T> Pengukur yang dapat diamati yang mewakili usia pesan cache tertua.
orleans-streams-queue-cache-pressure ObservableGauge<T> Pengukur yang dapat diamati yang mewakili tekanan pada cache antrean aliran data.
orleans-streams-queue-cache-under-pressure ObservableGauge<T> Alat pengukur yang dapat diamati yang mewakili apakah cache antrean aliran data berada di bawah tekanan.
orleans-streams-queue-cache-pressure-contribution-count ObservableCounter<T> Penghitung yang dapat diamati yang menunjukkan kontribusi tekanan pada cache antrean aliran.

Transaksi

Tabel berikut menunjukkan kumpulan meter transaksi yang digunakan untuk memantau Orleans lapisan transaksi.

Nama meter Tipe Deskripsi
orleans-transactions-started ObservableCounter<T> Penghitung yang dapat diamati yang menunjukkan jumlah transaksi yang dimulai.
orleans-transactions-successful ObservableCounter<T> Penghitung yang dapat diamati yang menunjukkan jumlah transaksi yang berhasil.
orleans-transactions-failed ObservableCounter<T> Penghitung yang dapat diamati yang menunjukkan jumlah transaksi yang gagal.
orleans-transactions-throttled ObservableCounter<T> Penghitung teramati yang menunjukkan jumlah transaksi yang dibatasi.

Mengekspor metrik

Berbagai penyedia metrik pihak ketiga tersedia untuk digunakan dengan Orleans. Ekspor metrik dari aplikasi Anda menggunakan Protokol OpenTelemetry (OTLP). Banyak platform pengamatan menggunakan data OTLP secara langsung atau melalui OpenTelemetry Collector, termasuk Prometheus, Grafana, dan Azure Monitor.

Untuk mengekspor metrik menggunakan OTLP dengan Orleans, instal paket NuGet OpenTelemetry.Exporter.OpenTelemetryProtocol dan panggil metode ekstensi berikut IServiceCollection :

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

Metode AddOtlpExporter memastikan bahwa pengekspor OTLP ditambahkan ke builder. Orleans menggunakan Meter yang bernama "Microsoft.Orleans" untuk membuat instans Counter<T> untuk banyak metrik yang Orleans-spesifik. AddMeter Gunakan metode untuk menentukan nama meteran untuk berlangganan, dalam hal ini, "Microsoft.Orleans".

Anda dapat mengonfigurasi titik akhir pengekspor OTLP dan opsi lain sesuai kebutuhan. Contohnya:

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

Nota

Konfigurasi pengekspor OTLP default menggunakan gRPC (biasanya port 4317). Untuk mengekspor metrik ke Prometheus, kirim telemetri melalui Pengumpul OpenTelemetry atau konfigurasikan pengaturan OTLP/HTTP sebagai gantinya.

Penelusuran Terdistribusi

Pelacakan terdistribusi adalah serangkaian alat dan praktik untuk memantau dan memecahkan masalah aplikasi terdistribusi. Ini adalah komponen utama pengamatan dan alat penting untuk memahami perilaku aplikasi Anda. Orleans mendukung pelacakan terdistribusi dengan OpenTelemetry.

Terlepas dari pengekspor pelacakan terdistribusi yang Anda pilih, panggil:

Atau atur EnableDistributedTracing opsi konfigurasi ke true.

Merujuk kembali ke Orleans aplikasi sampel Pelacak GPS, Anda dapat mengekspor jejak terdistribusi menggunakan Protokol OpenTelemetry (OTLP). Untuk menggunakan OpenTelemetry dengan OTLP dan Orleans, instal paket NuGet OpenTelemetry.Exporter.OpenTelemetryProtocol dan panggil metode ekstensi berikut IServiceCollection di 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");
        });
    });

Pengekspor OTLP bekerja dengan banyak backend pengamatan termasuk Jaeger, Zipkin, Grafana Tempo, dan Azure Monitor. Jejak dapat divisualisasikan dalam alat seperti Jaeger UI:

Orleans Aplikasi sampel Pelacak GPS: Trace UI Jaeger.

Untuk informasi selengkapnya, lihat Pelacakan terdistribusi.

Orleans mengeluarkan statistik runtime dan metriknya melalui ITelemetryConsumer antarmuka. Aplikasi Anda dapat mendaftarkan satu atau lebih konsumen telemetri untuk silo dan klien mereka agar menerima statistik dan metrik yang diterbitkan oleh runtime Orleans secara berkala. Ini dapat menjadi pengguna untuk solusi analitik telemetri populer atau yang kustom untuk berbagai tujuan dan destinasi lainnya. Tiga konsumen telemetri saat ini sudah termasuk dalam kode Orleans dasar.

Mereka dirilis sebagai paket NuGet terpisah:

  • Microsoft.Orleans.OrleansTelemetryConsumers.AI: Untuk penerbitan ke Azure Application Insights.

  • Microsoft.Orleans.OrleansTelemetryConsumers.Counters: Mengirimkan ke penghitung kinerja Windows. Orleans Runtime terus memperbarui banyak di antaranya. Alat CounterControl.exe , yang disertakan dalam Microsoft.Orleans.CounterControl paket NuGet, membantu mendaftarkan kategori penghitung kinerja yang diperlukan. Ini harus berjalan dengan hak istimewa yang ditingkatkan. Pantau penghitung kinerja menggunakan alat pemantauan standar apa pun.

  • Microsoft.Orleans.OrleansTelemetryConsumers.NewRelic: Untuk penerbitan ke New Relic.

Untuk mengonfigurasi silo dan klien Anda untuk menggunakan konsumen telemetri, kode konfigurasi silo akan tampil seperti berikut:

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

Kode konfigurasi klien terlihat seperti ini:

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

Untuk menggunakan TelemetryConfiguration yang ditentukan khusus (yang mungkin memiliki TelemetryProcessors, TelemetrySinks, dll.), kode konfigurasi silo terlihat seperti ini:

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

Kode konfigurasi klien terlihat seperti ini:

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

Lihat juga