Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Orleans Панель мониторинга — это встроенный инструмент веб-мониторинга, который обеспечивает видимость в режиме реального времени вашего кластера. Он позволяет отслеживать состояние силосов, активацию зерна, вызовы методов, напоминания и системные метрики без нужды во внешней инфраструктуре мониторинга.
Для Orleans версии 10.0 используйте официальные пакеты панели мониторинга: Microsoft.Orleans.Dashboard и Microsoft.Orleans.Dashboard.Abstractions.
Это важно
Эта функция доступна начиная с Orleans версии 10.0. В настоящее время он находится в предварительной версии и может измениться в будущих выпусках.
Функции
Панель Orleans мониторинга предоставляет следующие возможности:
- Общие сведения о кластере. Просмотр всех силосов в кластере с их состоянием, временем простоя и использованием ресурсов.
- Мониторинг зерна: отслеживание активаций зерна, вызовов методов и метрик производительности для каждого типа зерна.
- Профилирование методов: анализ частоты вызовов методов на зернистом уровне, временных задержек и уровня ошибок.
- Управление напоминаниями. Просмотр и мониторинг всех зарегистрированных напоминаний в кластере.
- Потоковая передача логов в реальном времени: просмотр логов из кластера в режиме реального времени.
- Сведения о силосе: инспектируйте отдельные свойства, счетчики и распределения зерна.
- Проверка состояния зерна: просмотр текущего состояния отдельных экземпляров зерна.
Installation
Orleans Панель мониторинга распределена в двух пакетах NuGet:
| Package | Description |
|---|---|
| Microsoft.Orleans. Панель управления | Основной пакет панели мониторинга с конечными точками пользовательского интерфейса и API |
| Microsoft.Orleans.Dashboard.Abstractions | Абстракции для интеграции панелей мониторинга (например, NoProfilingAttribute) |
Базовая настройка
Чтобы добавить Orleans панель мониторинга в ваше приложение, вызовите AddDashboard() на вашем построителе сио и для сопоставления конечных точек панели мониторинга вызовите MapOrleansDashboard().
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();
После запуска приложения перейдите к http://localhost:5000/ консоли (или к настроенному URL-адресу).
Префикс пользовательского маршрута
Панель мониторинга можно разместить на пользовательском пути, указав префикс маршрута:
// Map dashboard endpoints at /dashboard
app.MapOrleansDashboard(routePrefix: "/dashboard");
С помощью этой конфигурации перейдите на панель мониторинга http://localhost:5000/dashboard/.
Конфигурация
Параметры панели мониторинга
Настройка поведения панели мониторинга с помощью 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;
});
| Вариант | Тип | По умолчанию | Description |
|---|---|---|---|
HideTrace |
bool |
false |
Когда true, отключается конечная точка потоковой передачи журнала в реальном времени. |
CounterUpdateIntervalMs |
int |
1000 |
Миллисекунд между выборками счетчиков. Должно быть >= 1000. |
HistoryLength |
int |
100 |
Количество точек исторических данных для хранения метрик. |
Параметры профилировщика зерна
Гранулярный профилировщик собирает данные о производительности методического уровня. Настройте его с помощью 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);
});
| Вариант | Тип | По умолчанию | Description |
|---|---|---|---|
TraceAlways |
bool |
false |
Когда true данные профилирования постоянно собираются, даже если к панели мониторинга не осуществляется обращение. |
DeactivationTime |
TimeSpan | 1 минута | Длительность бездействия, после которой профилирование автоматически останавливается. Применяется только в том TraceAlwaysслучаеfalse. |
Исключение зерна из профилирования
[NoProfiling] Используйте атрибут, чтобы исключить определенные зерна из профилирования производительности:
using Orleans.Dashboard;
[NoProfiling]
public class HighFrequencyGrain : Grain, IHighFrequencyGrain
{
// This grain won't be included in profiling data
}
Шаблоны развертывания
Совместно размещено с «silo» (рекомендуется)
Самый простой шаблон развертывания — это размещение панели мониторинга непосредственно вместе с вашим «silo». Это рекомендуемый подход для большинства сценариев:
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();
Отдельный хост панели мониторинга
В сценариях, где требуется запустить панель мониторинга отдельно от силосов (например, для предоставления выделенной конечной точки мониторинга), можно разместить панель мониторинга на клиенте Orleans :
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();
Это важно
При использовании отдельного узла панели мониторинга необходимо по-прежнему вызывать AddDashboard() построитель silo. Силосам нужны службы панели мониторинга для сбора и предоставления данных метрик.
Authorization
Конечные точки панели мониторинга поддерживают авторизацию в ASP.NET Core.
RequireAuthorization() Используйте метод расширения для защиты доступа:
// Require authentication for dashboard access
app.MapOrleansDashboard()
.RequireAuthorization();
Кроме того, можно применить определенные политики авторизации:
// 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");
Устранение неполадок
На панели мониторинга отображается сообщение "потерянное подключение"
Эта ошибка возникает, когда панель мониторинга не может взаимодействовать с кластером Orleans . Распространенные причины:
- Silo не запущен: убедитесь, что Orleans silo запущен перед доступом к панели управления.
- Проблемы с сетью: Проверьте сетевое подключение между сервером панели мониторинга и хранилищами.
- Неправильное настройка кластера. Убедитесь, что кластеризация настроена правильно.
Данные профилирования не отображаются
Если данные профилирования метода обработки зерна пусты:
- Совершайте вызовы зерен: профилирование показывает только данные после исполнения методов зерна.
-
Проверка
TraceAlways. По умолчанию профилирование останавливается через 1 минуту бездействия панели мониторинга. УстановитеTraceAlways = trueдля непрерывного профилирования. -
Проверка
[NoProfiling]: убедитесь, что зерно не помечается атрибутом[NoProfiling].
Конечная точка динамической трассировки отключена
Если конечная /Trace точка возвращает значение 403 Запрещено:
- Убедитесь, что
DashboardOptions.HideTraceне задано значениеtrue.
См. также
Orleans Панель мониторинга — это встроенное средство мониторинга, представленное в Orleans версии 10.0. Для Orleans 9.0, 8.0 и 7.0 используйте неофициальный пакет панели мониторинга сообщества:
- OrleansDashboard (community): пакет панели мониторинга, поддерживаемый сообществом, для Orleans версий выше 10.0.
- Интеграция OpenTelemetry: встроенные функции наблюдения доступны в Orleans версии 7.0 и более поздних версий. См. раздел "Наблюдаемость" в Orleans.
Orleans Панель мониторинга — это встроенное средство мониторинга, представленное в Orleans версии 10.0. Для Orleans 3.x используйте неофициальный пакет панели мониторинга сообщества:
- OrleansDashboard (community): пакет панели мониторинга, поддерживаемый сообществом, для Orleans версий выше 10.0.