Orleans Dashboard

Dasbor Orleans adalah alat pemantauan berbasis web terintegrasi yang menyediakan visibilitas real-time ke dalam kluster Orleans Anda. Ini memungkinkan Anda untuk memantau kesehatan silo, aktivasi biji-bijian, panggilan metode, pengingat, dan metrik sistem tanpa memerlukan infrastruktur pemantauan eksternal.

Untuk Orleans 10.0, gunakan paket dasbor resmi: Microsoft.Orleans.Dashboard dan Microsoft.Orleans.Dashboard.Abstractions.

Penting

Fitur ini tersedia dimulai dengan Orleans 10.0. Saat ini dalam pratinjau dan dapat berubah dalam rilis mendatang.

Features

Orleans Dasbor menyediakan kemampuan berikut:

  • Gambaran umum kluster: Lihat semua silo di kluster dengan status, waktu aktif, dan pemanfaatan sumber dayanya.
  • Pemantauan biji-bijian: Melacak aktivasi biji-bijian, panggilan metode, dan metrik performa per jenis butir.
  • Profil metode: Menganalisis frekuensi panggilan metode secara rinci, ketertundaan, dan tingkat kesalahan.
  • Manajemen pengingat: Telusuri dan pantau semua pengingat terdaftar di seluruh kluster.
  • Streaming log langsung: Menampilkan keluaran log secara real-time dari cluster.
  • Detail silo: Periksa properti silo individu, penghitung, dan distribusi biji-bijian.
  • Inspeksi status biji-bijian: Lihat status instans butir individual saat ini.

Installation

Dasbor Orleans didistribusikan dalam dua paket NuGet.

Package Description
Microsoft.Orleans. Dashboard Paket dashboard utama dengan endpoint UI dan API
Microsoft.Orleans. Dashboard.Abstractions Abstraksi untuk integrasi papan kendali (misalnya, NoProfilingAttribute)

Penyiapan Awal

Untuk menambahkan Orleans Dasbor ke aplikasi Anda, hubungi AddDashboard() penyusun silo Anda dan MapOrleansDashboard() untuk memetakan titik akhir dasbor:

using Orleans.Dashboard;

var builder = WebApplication.CreateBuilder(args);

// Configure Orleans with the dashboard
builder.UseOrleans(siloBuilder =>
{
    siloBuilder.UseLocalhostClustering();
    siloBuilder.AddMemoryGrainStorageAsDefault();

    // Add the dashboard services
    siloBuilder.AddDashboard();
});

var app = builder.Build();

// Map dashboard endpoints at the root path
app.MapOrleansDashboard();

app.Run();

Setelah memulai aplikasi Anda, navigasikan ke http://localhost:5000/ (atau URL anda yang dikonfigurasi) untuk mengakses dasbor.

Awalan rute kustom

Anda dapat menghosting dasbor di jalur kustom dengan menentukan awalan rute:

// Map dashboard endpoints at /dashboard
app.MapOrleansDashboard(routePrefix: "/dashboard");

Dengan konfigurasi ini, akses dasbor di http://localhost:5000/dashboard/.

Konfigurasi

Pilihan Dasbor

Konfigurasikan perilaku dasbor menggunakan DashboardOptions:

siloBuilder.AddDashboard(options =>
{
    // Disable the live log streaming endpoint
    options.HideTrace = true;

    // Set the counter update interval (minimum 1000ms)
    options.CounterUpdateIntervalMs = 2000;

    // Set the history buffer length for metrics
    options.HistoryLength = 200;
});
Option Tipe Bawaan Description
HideTrace bool false Saat true, menonaktifkan titik akhir streaming log langsung.
CounterUpdateIntervalMs int 1000 Milidetik antara sampel penghitung. Harus >= 1000.
HistoryLength int 100 Jumlah poin data historis yang akan dipertahankan untuk metrik.

Opsi profiler butir

Profiler butir mengumpulkan data performa tingkat metode. Konfigurasikan menggunakan GrainProfilerOptions:

builder.Services.Configure<GrainProfilerOptions>(options =>
{
    // Always collect profiling data, even when dashboard is inactive
    options.TraceAlways = true;

    // Time after which profiling stops if dashboard is inactive
    options.DeactivationTime = TimeSpan.FromMinutes(5);
});
Option Tipe Bawaan Description
TraceAlways bool false Ketika true, data pemprofilan terus dikumpulkan bahkan ketika dashboard tidak sedang diakses.
DeactivationTime TimeSpan 1 menit Jangka waktu tidak aktif setelah pemantauan profil secara otomatis dihentikan. Hanya berlaku ketika TraceAlways adalah false.

Mengecualikan biji-bijian dari pembuatan profil

[NoProfiling] Gunakan atribut untuk mengecualikan biji-bijian tertentu dari pembuatan profil performa:

using Orleans.Dashboard;

[NoProfiling]
public class HighFrequencyGrain : Grain, IHighFrequencyGrain
{
    // This grain won't be included in profiling data
}

Pola penyebaran

Pola penyebaran paling sederhana adalah menghosting dasbor langsung pada silo Anda Orleans. Ini adalah pendekatan yang direkomendasikan untuk sebagian besar skenario:

using Orleans.Dashboard;

var builder = WebApplication.CreateBuilder(args);

builder.UseOrleans(siloBuilder =>
{
    siloBuilder.UseLocalhostClustering();
    siloBuilder.UseInMemoryReminderService();
    siloBuilder.AddMemoryGrainStorageAsDefault();
    siloBuilder.AddDashboard();
});

var app = builder.Build();

app.MapOrleansDashboard();

app.Run();

Host dasbor yang terpisah

Untuk skenario di mana Anda ingin menjalankan dasbor secara terpisah dari silo Anda (misalnya, untuk menyediakan titik akhir pemantauan khusus), Anda dapat menghosting dasbor pada Orleans klien:

using Orleans.Configuration;
using Orleans.Dashboard;
using System.Net;

// Start the silo host
var siloHostBuilder = Host.CreateApplicationBuilder(args);
siloHostBuilder.UseOrleans(builder =>
{
    builder.UseDevelopmentClustering(options => 
        options.PrimarySiloEndpoint = new IPEndPoint(IPAddress.Loopback, 11111));
    builder.UseInMemoryReminderService();
    builder.AddMemoryGrainStorageAsDefault();
    builder.ConfigureEndpoints(IPAddress.Loopback, 11111, 30000);

    // Dashboard must also be added to silos
    builder.AddDashboard();
});
using var siloHost = siloHostBuilder.Build();
await siloHost.StartAsync();

// Create a separate web application for the dashboard
var dashboardBuilder = WebApplication.CreateBuilder(args);

// Configure Orleans client
dashboardBuilder.UseOrleansClient(clientBuilder =>
{
    clientBuilder.UseStaticClustering(options => 
        options.Gateways.Add(new IPEndPoint(IPAddress.Loopback, 30000).ToGatewayUri()));

    // Add dashboard services to the client
    clientBuilder.AddDashboard();
});

var dashboardApp = dashboardBuilder.Build();

// Map dashboard endpoints on the client
dashboardApp.MapOrleansDashboard();

await dashboardApp.RunAsync();

await siloHost.StopAsync();

Penting

Saat menggunakan host dasbor terpisah, Anda harus tetap memanggil AddDashboard() pada pembangun silo. Silo memerlukan layanan dasbor untuk mengumpulkan dan menyediakan data metrik.

Authorization

Titik akhir dasbor mendukung otorisasi ASP.NET Core. RequireAuthorization() Gunakan metode ekstensi untuk melindungi akses:

// Require authentication for dashboard access
app.MapOrleansDashboard()
   .RequireAuthorization();

Anda juga dapat menerapkan kebijakan otorisasi tertentu:

// Configure authorization
builder.Services.AddAuthorization(options =>
{
    options.AddPolicy("DashboardAccess", policy =>
        policy.RequireRole("Admin", "Operator"));
});

builder.Services.AddAuthentication(/* your auth configuration */);

var app = builder.Build();

app.UseAuthentication();
app.UseAuthorization();

// Apply the policy to dashboard endpoints
app.MapOrleansDashboard()
   .RequireAuthorization("DashboardAccess");

Troubleshooting

Dasbor memperlihatkan pesan "konektivitas hilang"

Kesalahan ini terjadi ketika dasbor tidak dapat berkomunikasi dengan Orleans kluster. Penyebab umum:

  1. Silo belum berjalan: Pastikan silo Anda Orleans berjalan sebelum mengakses dashboard.
  2. Masalah jaringan: Verifikasi konektivitas jaringan antara host dasbor dan silo.
  3. Kesalahan konfigurasi kluster: Periksa apakah pengklusteran dikonfigurasi dengan benar.

Data pembuatan profil tidak muncul

Jika data pembuatan profil metode biji-bijian kosong:

  1. Melakukan panggilan grain: Profiling hanya menampilkan data setelah metode grain dipanggil.
  2. Centang TraceAlways: Secara default, pembuatan profil berhenti setelah 1 menit tidak aktif dasbor. Atur TraceAlways = true untuk pembuatan profil berkelanjutan.
  3. Periksa [NoProfiling]: Pastikan butir tidak memiliki atribut [NoProfiling].

Titik akhir pelacakan langsung dinonaktifkan

Jika titik akhir /Trace mengembalikan 403 Forbidden:

  • Periksa apakah DashboardOptions.HideTrace tidak diatur ke true.

Lihat juga

Orleans Dasbor adalah alat pemantauan bawaan yang diperkenalkan dalam Orleans 10.0. Untuk Orleans 9.0, 8.0, dan 7.0, gunakan paket dasbor komunitas tidak resmi:

Orleans Dasbor adalah alat pemantauan bawaan yang diperkenalkan dalam Orleans 10.0. Untuk Orleans 3.x, gunakan paket dasbor komunitas tidak resmi: