Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dashboard Orleans to wbudowane internetowe narzędzie do monitorowania, które zapewnia wgląd w czasie rzeczywistym w klaster Orleans. Umożliwia monitorowanie kondycji silosu, aktywacji ziarna, wywołań metod, przypomnień i metryk systemowych bez konieczności zewnętrznej infrastruktury monitorowania.
Ważne
Ta funkcja jest dostępna od Orleans wersji 10.0. Jest ona obecnie dostępna w wersji zapoznawczej i może ulec zmianie w przyszłych wersjach.
Funkcje
Pulpit Orleans nawigacyjny zapewnia następujące możliwości:
- Omówienie klastra: wyświetl wszystkie silosy w klastrze z ich stanem, czasem pracy i wykorzystaniem zasobów.
- Monitorowanie ziarna: śledzenie aktywacji ziarna, wywołań metod i metryk wydajności na typ ziarna.
- Profilowanie metod: analizowanie częstotliwości wywołań metod, opóźnienia i współczynników błędów.
- Zarządzanie przypomnieniami: przeglądaj i monitoruj wszystkie zarejestrowane przypomnienia w klastrze.
- Przesyłanie strumieniowe dzienników na żywo: wyświetlanie danych wyjściowych dziennika w czasie rzeczywistym z klastra.
- Szczegóły silosu: Sprawdź poszczególne właściwości silosu, liczniki i rozkłady ziarna.
- Inspekcja stanu ziarna: wyświetl bieżący stan pojedynczych instancji ziarna.
Instalacja
Dashboard Orleans jest dostępny w dwóch pakietach NuGet.
| Package | Description |
|---|---|
| Microsoft.Orleans. Pulpitu nawigacyjnego | Podstawowy zestaw pulpitu nawigacyjnego z punktami końcowymi interfejsu użytkownika i API |
| Microsoft.Orleans. Dashboard.Abstractions | Abstrakcje integracji pulpitu nawigacyjnego (np. NoProfilingAttribute) |
Konfiguracja podstawowa
Aby dodać Orleans pulpit nawigacyjny do aplikacji, wywołaj AddDashboard() konstruktor silosu i MapOrleansDashboard() zamapuj punkty końcowe pulpitu nawigacyjnego:
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 uruchomieniu aplikacji przejdź do http://localhost:5000/ (lub skonfigurowanego adresu URL), aby uzyskać dostęp do pulpitu nawigacyjnego.
Prefiks niestandardowej trasy
Można hostować kokpit na ścieżce niestandardowej, określając prefiks ścieżki:
// Map dashboard endpoints at /dashboard
app.MapOrleansDashboard(routePrefix: "/dashboard");
Dzięki tej konfiguracji uzyskaj dostęp do pulpitu nawigacyjnego pod adresem http://localhost:5000/dashboard/.
Konfiguracja
Opcje pulpitu nawigacyjnego
Konfigurowanie zachowania pulpitu nawigacyjnego przy użyciu polecenia 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 | Typ | Default | Description |
|---|---|---|---|
HideTrace |
bool |
false |
Gdy true, wyłącza punkt końcowy strumieniowego przesyłania dzienników na żywo. |
CounterUpdateIntervalMs |
int |
1000 |
Milisekundy między próbkami liczników. Musi być >= 1000. |
HistoryLength |
int |
100 |
Liczba historycznych punktów danych, które należy utrzymać dla parametrów metrycznych. |
Opcje profilera ziarna
Profiler ziarna zbiera dane o wydajności na poziomie metody. Skonfiguruj go przy użyciu polecenia 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 | Typ | Default | Description |
|---|---|---|---|
TraceAlways |
bool |
false |
W przypadku true, dane profilowania są stale zbierane nawet wtedy, gdy pulpit nawigacyjny nie jest przeszukiwany. |
DeactivationTime |
TimeSpan | 1 minuta | Czas trwania braku aktywności, po którym profilowanie zostanie automatycznie zatrzymane. Ma zastosowanie tylko wtedy, gdy TraceAlways ma wartość false. |
Wykluczanie ziarnistości z profilowania
Użyj atrybutu [NoProfiling] , aby wykluczyć określone ziarna z profilowania wydajności:
using Orleans.Dashboard;
[NoProfiling]
public class HighFrequencyGrain : Grain, IHighFrequencyGrain
{
// This grain won't be included in profiling data
}
Wzorce wdrażania
Współlokalizowane z silosem (zalecane)
Najprostszym schematem wdrażania jest hostowanie pulpitu nawigacyjnego bezpośrednio z silosem Orleans. Jest to zalecane podejście dla większości scenariuszy:
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();
Oddzielny host pulpitu nawigacyjnego
W przypadku scenariuszy, w których chcesz uruchomić pulpit nawigacyjny niezależnie od silosów (na przykład w celu zapewnienia dedykowanego punktu końcowego monitorowania), możesz hostować pulpit nawigacyjny na Orleans kliencie:
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();
Ważne
Kiedy używasz oddzielnego hosta dla pulpitu nawigacyjnego, nadal musisz wywoływać AddDashboard() na budowniczym silosów. Silosy wymagają usług dashboardowych do zbierania i dostarczania danych metryk.
Authorization
Punkty końcowe pulpitu nawigacyjnego obsługują autoryzację ASP.NET Core.
RequireAuthorization() Użyj metody rozszerzenia, aby chronić dostęp:
// Require authentication for dashboard access
app.MapOrleansDashboard()
.RequireAuthorization();
Można również zastosować określone zasady autoryzacji:
// 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");
Rozwiązywanie problemów
Na pulpicie nawigacyjnym jest wyświetlany komunikat "utracona łączność"
Ten błąd występuje, gdy pulpit nawigacyjny nie może komunikować się z klastrem Orleans . Typowe przyczyny:
- Nie uruchomiono silosu: upewnij się, że Orleans silos jest uruchomiony przed uzyskaniem dostępu do pulpitu nawigacyjnego.
- Problemy z siecią: Sprawdź łączność sieciową między hostem pulpitu nawigacyjnego a silosami.
- Błędna konfiguracja klastra: sprawdź, czy klastrowanie jest prawidłowo skonfigurowane.
Nie są wyświetlane dane profilowania
Jeśli dane profilowania metody ziarna są puste:
- Wywołania ziarna: Profilowanie pokazuje tylko dane po wywołaniu metod ziarna.
-
Sprawdź
TraceAlways: domyślnie profilowanie zatrzymuje się po 1 minucie braku aktywności pulpitu nawigacyjnego. UstawTraceAlways = truedla profilowania ciągłego. -
Sprawdź
[NoProfiling]: Upewnij się, że ziarno nie jest oznaczone atrybutem[NoProfiling].
Punkt końcowy śledzenia na żywo jest wyłączony
/Trace Jeśli punkt końcowy zwraca wartość 403 Zabronione:
- Sprawdź, czy
DashboardOptions.HideTracenie jest ustawione natrue.
Zobacz także
Pulpit Orleans nawigacyjny to wbudowane narzędzie do monitorowania wprowadzone w wersji Orleans 10.0. W przypadku wcześniejszych wersji rozważ użycie następujących funkcji:
- OrleansDashboard (społeczność): dashboard utrzymywany przez społeczność dla wersji 3.x do 8.x.
- Integracja biblioteki OpenTelemetry: wbudowane funkcje obserwacji dostępne w wersji Orleans 7.0 lub nowszej. Zobacz Obserwowalność w Orleans.