Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il Orleans dashboard è uno strumento di monitoraggio predefinito basato sul Web che offre visibilità in tempo reale nel Orleans cluster. Consente di monitorare l'integrità del silo, le attivazioni granulari, le chiamate ai metodi, i promemoria e le metriche di sistema senza richiedere l'infrastruttura di monitoraggio esterna.
Importante
Questa funzionalità è disponibile a partire dalla Orleans versione 10.0. È attualmente in anteprima e può cambiare nelle versioni future.
Funzionalità
Il Orleans dashboard offre le funzionalità seguenti:
- Panoramica del cluster: visualizzare tutti i silo nel cluster con lo stato, il tempo di attività e l'utilizzo delle risorse.
- Monitoraggio granulare: tenere traccia delle attivazioni granulari, delle chiamate ai metodi e delle metriche delle prestazioni per tipo di granularità.
- Profilatura dei metodi: analizzare la frequenza delle chiamate al metodo granulare, la latenza e le percentuali di errore.
- Gestione dei promemoria: esplorare e monitorare tutti i promemoria registrati nel cluster.
- Streaming dei log dal vivo: Visualizza l'output dei log in tempo reale dal cluster.
- Dettagli silo: esaminare le singole proprietà, i contatori e le distribuzioni di granularità.
- Ispezione dello stato di granularità: visualizzare lo stato corrente delle singole istanze di granularità.
Installazione
Il Orleans dashboard viene distribuito in due pacchetti NuGet:
| Package | Description |
|---|---|
| Microsoft.Orleans.Cruscotto | Pacchetto del dashboard principale con endpoint dell'interfaccia utente e dell'API |
| Microsoft.Orleans. Dashboard.Abstractions | Astrazioni per l'integrazione del dashboard (ad esempio, NoProfilingAttribute) |
Configurazione di base
Per aggiungere il Orleans Dashboard alla tua applicazione, chiamare AddDashboard() sul tuo generatore di silo e MapOrleansDashboard() per mappare gli endpoint del Dashboard.
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();
Dopo aver avviato l'applicazione, passare a http://localhost:5000/ (o all'URL configurato) per accedere al dashboard.
Prefisso di route personalizzato
È possibile ospitare il dashboard in un percorso personalizzato specificando un prefisso di route:
// Map dashboard endpoints at /dashboard
app.MapOrleansDashboard(routePrefix: "/dashboard");
Con questa configurazione, accedere al dashboard all'indirizzo http://localhost:5000/dashboard/.
Configurazione
Opzioni del dashboard
Configurare il comportamento del dashboard usando 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;
});
| Opzione | TIPO | Predefinito | Description |
|---|---|---|---|
HideTrace |
bool |
false |
Disattiva l'endpoint per lo streaming dei registri in tempo reale quando true. |
CounterUpdateIntervalMs |
int |
1000 |
Millisecondi tra campioni di misurazione del contatore. Deve essere >= 1000. |
HistoryLength |
int |
100 |
Numero di punti dati cronologici da gestire per le metriche. |
Opzioni del profiler granulare
Il profiler granulare raccoglie i dati sulle prestazioni a livello di metodo. Configurarlo usando 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);
});
| Opzione | TIPO | Predefinito | Description |
|---|---|---|---|
TraceAlways |
bool |
false |
Quando true, i dati di profilatura vengono raccolti continuamente anche quando il dashboard non viene interrogato. |
DeactivationTime |
TimeSpan | 1 minuto | Durata dell'inattività dopo la quale la profilatura si arresta automaticamente. Si applica solo quando TraceAlways è false. |
Esclusione di grani dalla profilatura
Usare l'attributo [NoProfiling] per escludere grani specifici dalla profilatura delle prestazioni:
using Orleans.Dashboard;
[NoProfiling]
public class HighFrequencyGrain : Grain, IHighFrequencyGrain
{
// This grain won't be included in profiling data
}
Modelli di distribuzione
Ospitato congiuntamente al sistema silo integrato (scelta consigliata).
Il modello di distribuzione più semplice consiste nell'ospitare il dashboard direttamente insieme al Orleans silo. Questo è l'approccio consigliato per la maggior parte degli scenari:
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();
Server separato del dashboard
Per gli scenari in cui si vuole eseguire il dashboard separatamente dai silo, ad esempio per fornire un endpoint di monitoraggio dedicato, è possibile ospitare il dashboard in un Orleans client:
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();
Importante
Quando si usa un host dashboard separato, è comunque necessario chiamare AddDashboard() sul builder del silo. I silo necessitano dei servizi dashboard per raccogliere e fornire i dati delle metriche.
Authorization
Gli endpoint del dashboard supportano l'autorizzazione di ASP.NET Core. Usare il RequireAuthorization() metodo di estensione per proteggere l'accesso:
// Require authentication for dashboard access
app.MapOrleansDashboard()
.RequireAuthorization();
È anche possibile applicare criteri di autorizzazione specifici:
// 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");
Risoluzione dei problemi
Il dashboard mostra il messaggio "connettività persa"
Questo errore si verifica quando il dashboard non riesce a comunicare con il Orleans cluster. Cause comuni:
- Silo non avviato: assicurarsi che il Orleans silo sia in esecuzione prima di accedere al dashboard.
- Problemi di rete: verificare la connettività di rete tra l'host del dashboard e i silo.
- Configurazione errata del cluster: verificare che il clustering sia configurato correttamente.
Dati di profilatura non visualizzati
Se i dati di profilatura del metodo di granularità sono vuoti:
- Effettuare chiamate granulari: la profilatura mostra solo i dati dopo che vengono richiamati i metodi di granularità.
-
Controlla
TraceAlways: per impostazione predefinita, la profilatura si arresta dopo 1 minuto di inattività del dashboard. ImpostareTraceAlways = trueper la profilatura continua. -
Controllare
[NoProfiling]: verificare che il livello di granularità non sia contrassegnato con l'attributo[NoProfiling].
L'endpoint di traccia dinamica è disabilitato
Se l'endpoint /Trace restituisce 403 Accesso negato:
- Verificare che
DashboardOptions.HideTracenon sia impostato sutrue.
Vedere anche
Il Orleans dashboard è uno strumento di monitoraggio predefinito introdotto nella Orleans versione 10.0. Per le versioni precedenti, è consigliabile usare:
- OrleansDashboard (community): dashboard gestito dalla community per Orleans 3.x e 8.x.
- Integrazione di OpenTelemetry: funzionalità di osservabilità predefinite disponibili nella Orleans versione 7.0 e successive. Vedere Observability in Orleans.