Delen via


Orleans Dashboard

Het Orleans dashboard is een ingebouwd bewakingsprogramma op het web dat realtime inzicht biedt in uw Orleans cluster. Hiermee kunt u de silostatus, korrelactivering, methode-aanroepen, herinneringen en metrische systeemgegevens bewaken zonder dat hiervoor een externe bewakingsinfrastructuur is vereist.

Belangrijk

Deze functie is beschikbaar vanaf Orleans 10.0. Het is momenteel in preview en kan in toekomstige releases veranderen.

Features

Het Orleans dashboard biedt de volgende mogelijkheden:

  • Overzicht van het cluster: bekijk alle silo's in het cluster met hun status, uptime en resourcegebruik.
  • Grain monitoring: Bijhouden van activaties, methode-aanroepen en prestatiegegevens per graantype.
  • Methodeprofilering: De aanroepfrequentie, latentie en foutfrequentie van de graanmethode analyseren.
  • Herinneringsbeheer: blader en bewaak alle geregistreerde herinneringen in het cluster.
  • Live logboekstreaming: Bekijk realtime logboekuitvoer van het cluster.
  • Silodetails: Inspecteer afzonderlijke siloeigenschappen, tellers en graanverdelingen.
  • Inspectie van de graanstatus: bekijk de huidige status van afzonderlijke graanexemplaren.

Installatie

Het Orleans dashboard wordt gedistribueerd in twee NuGet-pakketten:

Package Description
Microsoft.Orleans.Dashboard Hoofddashboardpakket met UI- en API-eindpunten
Microsoft.Orleans. Dashboard.Abstractions Abstracties voor dashboardintegratie (bijvoorbeeld NoProfilingAttribute)

Basisinstallatie

Als u het dashboard aan uw toepassing wilt toevoegen, roept Orleans u de AddDashboard() silobouwer aan en MapOrleansDashboard() wijst u de dashboardeindpunten toe:

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

Nadat u de toepassing hebt gestart, gaat u naar http://localhost:5000/ (of de geconfigureerde URL) om toegang te krijgen tot het dashboard.

Aangepast routevoorvoegsel

U kunt het dashboard hosten op een aangepast pad door een routevoorvoegsel op te geven:

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

Met deze configuratie opent u het dashboard op http://localhost:5000/dashboard/.

Configuratie

Dashboardopties

Dashboardgedrag configureren met behulp van 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;
});
Optie Typologie Verstek Description
HideTrace bool false Indien true wordt uitgevoerd, schakelt u het live logboekstreaming-eindpunt uit.
CounterUpdateIntervalMs int 1000 Milliseconden tussen tellermonsters. Moet = 1000 zijn >.
HistoryLength int 100 Aantal historische gegevenspunten dat moet worden onderhouden voor metrische gegevens.

Opties voor grain profiler

De grain profiler verzamelt prestatiegegevens op methodeniveau. Configureer het met behulp van 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);
});
Optie Typologie Verstek Description
TraceAlways bool false Wanneer trueprofileringsgegevens continu worden verzameld, zelfs wanneer er geen query's worden uitgevoerd op het dashboard.
DeactivationTime TimeSpan 1 minuut Duur van inactiviteit waarna profilering automatisch stopt. Alleen van toepassing wanneer TraceAlways is false.

Korrels uitsluiten van profilering

Gebruik het [NoProfiling] kenmerk om specifieke korrels uit te sluiten van prestatieprofilering:

using Orleans.Dashboard;

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

Implementatiepatronen

Het eenvoudigste implementatiepatroon is het rechtstreeks hosten van het dashboard met uw Orleans silo. Dit is de aanbevolen benadering voor de meeste scenario's:

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

Afzonderlijke host voor dashboard

Voor scenario's waarin u het dashboard afzonderlijk van uw silo's wilt uitvoeren (bijvoorbeeld om een toegewezen bewakingseindpunt te bieden), kunt u het dashboard hosten op een 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();

Belangrijk

Wanneer u een afzonderlijke dashboardhost gebruikt, moet u nog steeds de silobouwer aanroepen AddDashboard(). De silo's hebben de dashboardservices nodig om metrische gegevens te verzamelen en te leveren.

Authorization

De dashboardeindpunten ondersteunen ASP.NET Core-autorisatie. Gebruik de RequireAuthorization() extensiemethode om de toegang te beveiligen:

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

U kunt ook specifiek autorisatiebeleid toepassen:

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

Probleemoplossingsproces

In het dashboard wordt het bericht 'Verbroken connectiviteit' weergegeven

Deze fout treedt op wanneer het dashboard niet kan communiceren met het Orleans cluster. Veelvoorkomende oorzaken:

  1. Silo is niet gestart: Zorg ervoor dat uw Orleans silo in werking is voordat u het dashboard opent.
  2. Netwerkproblemen: controleer de netwerkverbinding tussen de dashboardhost en silo's.
  3. Cluster verkeerd geconfigureerd: controleer of clustering juist is geconfigureerd.

Profileringsgegevens worden niet weergegeven

Als de profileringsgegevens van de graanmethode leeg zijn:

  1. Grain-aanroepen uitvoeren: Profilering toont alleen gegevens nadat Grain-methoden zijn aangeroepen.
  2. Controleer TraceAlways: Profilering wordt standaard gestopt na 1 minuut inactiviteit van het dashboard. Stel TraceAlways = true in voor continue profilering.
  3. Controleer of het graan niet is gemarkeerd met het [NoProfiling] kenmerk.

Live trace-eindpunt is uitgeschakeld

Als het /Trace eindpunt 403 Verboden retourneert:

  • Controleer of dit DashboardOptions.HideTrace niet is ingesteld op true.

Zie ook

Het Orleans dashboard is een ingebouwd bewakingsprogramma dat is geïntroduceerd in Orleans 10.0. Voor eerdere versies kunt u overwegen het volgende te gebruiken: