Aracılığıyla paylaş


Orleans Pano

Orleans Pano, kümenize Orleans gerçek zamanlı görünürlük sağlayan yerleşik bir web tabanlı izleme aracıdır. Dış izleme altyapısı gerektirmeden silo sistem durumunu, tahıl etkinleştirmelerini, yöntem çağrılarını, anımsatıcıları ve sistem ölçümlerini izlemenizi sağlar.

Önemli

Bu özellik 10.0'dan Orleans itibaren kullanılabilir. Şu anda önizleme aşamasındadır ve gelecek sürümlerde değişebilir.

Özellikler

Orleans Pano aşağıdaki özellikleri sağlar:

  • Kümeye genel bakış: Durum, çalışma süresi ve kaynak kullanımıyla kümedeki tüm siloları görüntüleyin.
  • Tane izleme: Tane etkinleştirmeleri, yöntem çağrılarını ve tane türü başına performans ölçümlerini izleyin.
  • Yöntem profili oluşturma: Tahıl yöntemi çağrı sıklığını, gecikme süresini ve hata oranlarını analiz edin.
  • Anımsatıcı yönetimi: Küme genelindeki tüm kayıtlı anımsatıcılara göz atın ve bunları izleyin.
  • Canlı günlük akışı: Kümeden gerçek zamanlı günlük verisini görüntüleyin.
  • Silo ayrıntıları: Tek tek silo özelliklerini, sayaçlarını ve tane dağılımlarını inceleyin.
  • Tahıl durumu incelemesi: Tek tek tane örneklerinin geçerli durumunu görüntüleyin.

Kurulum

Orleans Panosu iki ayrı NuGet paketi halinde dağıtılır.

Package Description
Microsoft..Orleans. Pano Kullanıcı arabirimi ve API uç noktalarıyla ana pano paketi
Microsoft.Orleans.Dashboard.Abstractions Gösterge paneli entegrasyonu için soyutlamalar (örn. NoProfilingAttribute)

Temel kurulum

Pano'yu Orleans uygulamanıza eklemek için, pano uç noktalarını eşlemek üzere silo oluşturucunuzda AddDashboard() çağrısını ve MapOrleansDashboard() çağrısını yapın.

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

Uygulamanızı başlattıktan sonra panoya erişmek için http://localhost:5000/ (veya yapılandırılan URL'nize) gidin.

Özelleştirilmiş rota ön eki

Bir yol ön eki belirterek panoyu özel bir yolda barındırabilirsiniz:

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

Bu yapılandırmayla, http://localhost:5000/dashboard/ konumundaki panoya erişim sağlayın.

Konfigürasyon

Pano seçenekleri

DashboardOptions kullanarak pano davranışını yapılandırın.

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;
});
Seçenek Türü Varsayılan Description
HideTrace bool false true olduğunda, canlı günlük akışı uç noktasını devre dışı bırakır.
CounterUpdateIntervalMs int 1000 Sayaç örnekleri arasındaki milisaniye süresi. = 1000 olmalıdır >.
HistoryLength int 100 Ölçümler için korunacak geçmiş veri noktalarının sayısı.

Grain profiler (profil oluşturucu) seçenekleri

Tanecik profil oluşturucu metot seviyesi performans verilerini toplar. kullanarak GrainProfilerOptions yapılandırın:

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);
});
Seçenek Türü Varsayılan Description
TraceAlways bool false true olduğunda, pano sorgulanmıyor olsa bile profil verileri sürekli toplanır.
DeactivationTime TimeSpan 1 dakika Profil oluşturmanın otomatik olarak durduğu etkinlik dışı kalma süresi. Yalnızca TraceAlwaysfalse olduğunda geçerlidir.

Taneleri profil oluşturmadan dışlama

[NoProfiling] Belirli dilimleri performans profili oluşturmanın dışında tutmak için özniteliğini kullanın:

using Orleans.Dashboard;

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

Dağıtım desenleri

En basit dağıtım düzeni, kontrol panosunu doğrudan silonuzla Orleans barındırılmasıdır. Çoğu senaryo için önerilen yaklaşım budur:

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

Ayrı gösterge paneli sunucusu

Panoyu silolarınızdan ayrı olarak çalıştırmak istediğiniz senaryolar için (örneğin, ayrılmış bir izleme uç noktası sağlamak için), panoyu bir Orleans istemcide barındırabilirsiniz:

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

Önemli

Ayrı bir pano konağı kullanırken silo oluşturucusunu aramaya AddDashboard() devam etmeniz gerekir. Siloların ölçüm verilerini toplamak ve sağlamak için pano hizmetlerine ihtiyacı vardır.

Authorization

Pano uç noktaları ASP.NET Core yetkilendirmesini destekler. RequireAuthorization() Erişimi korumak için uzantı yöntemini kullanın:

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

Ayrıca belirli yetkilendirme ilkelerini de uygulayabilirsiniz:

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

Sorun giderme

Panoda "bağlantı kesildi" iletisi gösterildi

Bu hata, pano küme ile iletişim kuramadığında Orleans meydana gelir. Yaygın nedenler:

  1. Silo başlatılmamış: Panoya erişmeden önce silonuzun Orleans çalıştığından emin olun.
  2. Ağ sorunları: Pano konağı ile silolar arasındaki ağ bağlantısını doğrulayın.
  3. Küme yanlış yapılandırması: Kümelemenin düzgün yapılandırıldığından emin olun.

Profil oluşturma verileri görünmüyor

Tahıl yöntemi profilleme verileri boşsa:

  1. Grain çağrıları yapın: Profil oluşturma yalnızca grain yöntemleri çağrıldıktan sonra verileri gösterir.
  2. Kontrol edin TraceAlways: Profil oluşturma varsayılan olarak panonun 1 dakika etkinlik dışı kalma durumundan sonra durdurulur. Sürekli profil oluşturma için ayarla TraceAlways = true.
  3. Kontrol [NoProfiling]: Tahılın özellik ile [NoProfiling] işaretlenmediğinden emin olun.

Canlı izleme uç noktası devre dışı bırakıldı

/Trace Uç nokta 403 Yasak değerini döndürürse:

  • DashboardOptions.HideTrace'ın true olarak ayarlanmadığından emin olun.

Ayrıca bakınız

Dashboard, Orleans 10.0'da tanıtılan yerleşik bir izleme aracıdır. Önceki sürümler için şunları kullanmayı göz önünde bulundurun: