Orleans Řídicí panel

Integrovaný webový monitorovací nástroj Orleans Dashboard poskytuje přehled o vašem Orleans clusteru v reálném čase. Umožňuje monitorovat stav sila, aktivaci zrnitosti, volání metod, připomenutí a systémové metriky bez nutnosti externí monitorovací infrastruktury.

Pro Orleans verzi 10.0 použijte oficiální balíčky řídicích panelů: Microsoft.Orleans.Dashboard a Microsoft.Orleans.Dashboard.Abstractions.

Důležité

Tato funkce je dostupná od Orleans verze 10.0. Je aktuálně ve verzi Preview a může se změnit v budoucích verzích.

Features

Rozhraní Orleans nabízí následující funkce:

  • Přehled clusteru: Zobrazte všechna sila v clusteru se stavem, dostupností a využitím prostředků.
  • Monitorování zrnin: Sledování aktivací zrnin, volání metod a metrik výkonu pro jednotlivé typy zrnin.
  • Profilace metod: Analýza četnosti volání metod, latence a míry chyb.
  • Správa připomenutí: Umožňuje procházet a monitorovat všechna registrovaná připomenutí v clusteru.
  • Streamování živého protokolu: Umožňuje zobrazit výstup protokolu v reálném čase z clusteru.
  • Podrobnosti o silech: Zkontrolujte jednotlivé vlastnosti sila, čítače a rozdělení zrnitosti.
  • Kontrola stavu zrnitosti: Umožňuje zobrazit aktuální stav jednotlivých instancí agregace.

Installation

Řídicí panel Orleans se distribuuje ve dvou balíčcích NuGet:

Package Description
Microsoft.Orleans. Řídicí panel Hlavní balíček řídicího panelu s uživatelským rozhraním a koncovými body rozhraní API
Microsoft.Orleans. Dashboard.Abstractions Abstrakce pro integraci řídicího panelu (např. NoProfilingAttribute)

Základní nastavení

Pokud chcete přidat Orleans řídicí panel do aplikace, zavolejte AddDashboard() na vašem silo builderu a použijte MapOrleansDashboard() k namapování koncových bodů řídicího panelu.

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();

Po spuštění aplikace přejděte na http://localhost:5000/ (nebo nakonfigurovanou adresu URL), abyste získali přístup k řídicímu panelu.

Vlastní předpona trasy

Řídicí panel můžete hostovat na vlastní cestě pomocí zadání prefixu trasy.

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

S touto konfigurací přejděte na řídicí panel na adrese http://localhost:5000/dashboard/.

Konfigurace

Možnosti řídicího panelu

Konfigurace chování řídicího panelu pomocí 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;
});
Možnost Typ Výchozí Description
HideTrace bool false Když true, zakáže koncový bod streamování živého protokolu.
CounterUpdateIntervalMs int 1000 Milisekundy mezi vzorky čítačů Musí být >= 1000.
HistoryLength int 100 Počet historických datových bodů, které se mají udržovat pro metriky

Možnosti profileru zrnitosti

Tento grain profiler shromažďuje údaje o výkonu na úrovni metody. Nakonfigurujte ho pomocí 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);
});
Možnost Typ Výchozí Description
TraceAlways bool false Pokud truese data profilace průběžně shromažďují i v případě, že řídicí panel není dotazován.
DeactivationTime TimeSpan 1 minuta Doba nečinnosti, po které se profilace automaticky zastaví. Platí pouze v případech, kdy TraceAlways je false.

Vyloučení zrn z profilace

Pomocí atributu [NoProfiling] vyloučíte konkrétní zrnka z profilace výkonu:

using Orleans.Dashboard;

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

Vzory nasazení

Nejjednodušším způsobem nasazení je hostování řídicího panelu přímo s vaším Orleans silem. Tento přístup se doporučuje pro většinu scénářů:

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();

Samostatný hostitel řídicího panelu

V situacích, kdy chcete řídicí panel spustit odděleně od sila (například k poskytnutí vyhrazeného koncového Orleans bodu monitorování), můžete řídicí panel hostovat na klientovi:

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();

Důležité

Při použití samostatného hostitele řídicího panelu musíte stále volat AddDashboard() na tvůrci sila. Sila potřebují služby řídicího panelu ke shromažďování a poskytování dat metrik.

Authorization

Koncové body řídicího panelu podporují autorizaci ASP.NET Core. K ochraně přístupu použijte rozšiřující metodu RequireAuthorization().

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

Můžete také použít konkrétní zásady autorizace:

// 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");

Řešení problémů

Na řídicím panelu se zobrazuje zpráva o ztraceném připojení.

K této chybě dochází, když řídicí panel nemůže komunikovat s clusterem Orleans . Běžné příčiny:

  1. Silo nebylo spuštěno: Ujistěte se, že je vaše Orleans silo spuštěné, než přejdete k řídicímu panelu.
  2. Problémy se sítí: Ověřte síťové připojení mezi hostitelem řídicího panelu a silo.
  3. Chybná konfigurace clusteru: Zkontrolujte, jestli je clustering správně nakonfigurovaný.

Nezobrazují se data profilace

Pokud jsou data profilace pro metody zrnitosti prázdná:

  1. Volání Grain metod: Profilace zobrazuje data pouze po vyvolání grain metod.
  2. Kontrola TraceAlways: Ve výchozím nastavení se profilace zastaví po 1 minutě nečinnosti řídicího panelu. Nastavte TraceAlways = true pro průběžnou profilaci.
  3. Zkontrolujte [NoProfiling]: Ujistěte se, že zrno není označeno atributem [NoProfiling].

Koncový bod živého trasování je zakázaný.

/Trace Pokud koncový bod vrátí hodnotu 403 Zakázáno:

  • Zkontrolujte, že DashboardOptions.HideTrace není nastaveno na true.

Viz také

Dashboard Orleans je integrovaný monitorovací nástroj zavedený ve verzi Orleans 10.0. Pro Orleans verze 9.0, 8.0 a 7.0 použijte neoficiální balíček řídicího panelu komunity:

  • OrleansDashboard (komunita):: Balíček řídicího panelu udržovaný komunitou pro Orleans verze starší než 10.0.
  • Integrace OpenTelemetry: Integrované funkce pozorovatelnosti jsou k dispozici ve Orleans verzi 7.0 a novější. Viz Dohledatelnost v Orleans.

Dashboard Orleans je integrovaný monitorovací nástroj zavedený ve verzi Orleans 10.0. Pro Orleans verzi 3.x použijte neoficiální balíček řídicího panelu komunity: