Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
Gehost in samenwerking met silo (aanbevolen)
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:
- Silo is niet gestart: Zorg ervoor dat uw Orleans silo in werking is voordat u het dashboard opent.
- Netwerkproblemen: controleer de netwerkverbinding tussen de dashboardhost en silo's.
- Cluster verkeerd geconfigureerd: controleer of clustering juist is geconfigureerd.
Profileringsgegevens worden niet weergegeven
Als de profileringsgegevens van de graanmethode leeg zijn:
- Grain-aanroepen uitvoeren: Profilering toont alleen gegevens nadat Grain-methoden zijn aangeroepen.
-
Controleer
TraceAlways: Profilering wordt standaard gestopt na 1 minuut inactiviteit van het dashboard. StelTraceAlways = truein voor continue profilering. - 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.HideTraceniet is ingesteld optrue.
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:
- OrleansDashboard (community): een door de community onderhouden dashboard voor Orleans 3.x tot en met 8.x.
- OpenTelemetry-integratie: ingebouwde waarneembaarheidsfuncties die beschikbaar zijn in Orleans 7.0 en hoger. Zie Waarneembaarheid in Orleans.