feat: complete final jetstream parity transport and runtime baselines
This commit is contained in:
46
src/NATS.Server/Monitoring/AccountzHandler.cs
Normal file
46
src/NATS.Server/Monitoring/AccountzHandler.cs
Normal file
@@ -0,0 +1,46 @@
|
||||
using NATS.Server.Auth;
|
||||
|
||||
namespace NATS.Server.Monitoring;
|
||||
|
||||
public sealed class AccountzHandler
|
||||
{
|
||||
private readonly NatsServer _server;
|
||||
|
||||
public AccountzHandler(NatsServer server)
|
||||
{
|
||||
_server = server;
|
||||
}
|
||||
|
||||
public object Build()
|
||||
{
|
||||
var accounts = _server.GetAccounts().Select(ToAccountDto).ToArray();
|
||||
return new
|
||||
{
|
||||
accounts,
|
||||
num_accounts = accounts.Length,
|
||||
};
|
||||
}
|
||||
|
||||
public object BuildStats()
|
||||
{
|
||||
var accounts = _server.GetAccounts().ToArray();
|
||||
return new
|
||||
{
|
||||
total_accounts = accounts.Length,
|
||||
total_connections = accounts.Sum(a => a.ClientCount),
|
||||
total_subscriptions = accounts.Sum(a => a.SubscriptionCount),
|
||||
};
|
||||
}
|
||||
|
||||
private static object ToAccountDto(Account account)
|
||||
{
|
||||
return new
|
||||
{
|
||||
name = account.Name,
|
||||
connections = account.ClientCount,
|
||||
subscriptions = account.SubscriptionCount,
|
||||
in_msgs = account.InMsgs,
|
||||
out_msgs = account.OutMsgs,
|
||||
};
|
||||
}
|
||||
}
|
||||
21
src/NATS.Server/Monitoring/GatewayzHandler.cs
Normal file
21
src/NATS.Server/Monitoring/GatewayzHandler.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
namespace NATS.Server.Monitoring;
|
||||
|
||||
public sealed class GatewayzHandler
|
||||
{
|
||||
private readonly NatsServer _server;
|
||||
|
||||
public GatewayzHandler(NatsServer server)
|
||||
{
|
||||
_server = server;
|
||||
}
|
||||
|
||||
public object Build()
|
||||
{
|
||||
var gateways = _server.Stats.Gateways;
|
||||
return new
|
||||
{
|
||||
gateways,
|
||||
num_gateways = gateways,
|
||||
};
|
||||
}
|
||||
}
|
||||
21
src/NATS.Server/Monitoring/LeafzHandler.cs
Normal file
21
src/NATS.Server/Monitoring/LeafzHandler.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
namespace NATS.Server.Monitoring;
|
||||
|
||||
public sealed class LeafzHandler
|
||||
{
|
||||
private readonly NatsServer _server;
|
||||
|
||||
public LeafzHandler(NatsServer server)
|
||||
{
|
||||
_server = server;
|
||||
}
|
||||
|
||||
public object Build()
|
||||
{
|
||||
var leafs = _server.Stats.Leafs;
|
||||
return new
|
||||
{
|
||||
leafs,
|
||||
num_leafs = leafs,
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,10 @@ public sealed class MonitorServer : IAsyncDisposable
|
||||
private readonly ConnzHandler _connzHandler;
|
||||
private readonly SubszHandler _subszHandler;
|
||||
private readonly JszHandler _jszHandler;
|
||||
private readonly RoutezHandler _routezHandler;
|
||||
private readonly GatewayzHandler _gatewayzHandler;
|
||||
private readonly LeafzHandler _leafzHandler;
|
||||
private readonly AccountzHandler _accountzHandler;
|
||||
|
||||
public MonitorServer(NatsServer server, NatsOptions options, ServerStats stats, ILoggerFactory loggerFactory)
|
||||
{
|
||||
@@ -33,6 +37,10 @@ public sealed class MonitorServer : IAsyncDisposable
|
||||
_connzHandler = new ConnzHandler(server);
|
||||
_subszHandler = new SubszHandler(server);
|
||||
_jszHandler = new JszHandler(server, options);
|
||||
_routezHandler = new RoutezHandler(server);
|
||||
_gatewayzHandler = new GatewayzHandler(server);
|
||||
_leafzHandler = new LeafzHandler(server);
|
||||
_accountzHandler = new AccountzHandler(server);
|
||||
|
||||
_app.MapGet(basePath + "/", () =>
|
||||
{
|
||||
@@ -63,21 +71,20 @@ public sealed class MonitorServer : IAsyncDisposable
|
||||
return Results.Ok(_connzHandler.HandleConnz(ctx));
|
||||
});
|
||||
|
||||
// Stubs for unimplemented endpoints
|
||||
_app.MapGet(basePath + "/routez", () =>
|
||||
{
|
||||
stats.HttpReqStats.AddOrUpdate("/routez", 1, (_, v) => v + 1);
|
||||
return Results.Ok(new { });
|
||||
return Results.Ok(_routezHandler.Build());
|
||||
});
|
||||
_app.MapGet(basePath + "/gatewayz", () =>
|
||||
{
|
||||
stats.HttpReqStats.AddOrUpdate("/gatewayz", 1, (_, v) => v + 1);
|
||||
return Results.Ok(new { });
|
||||
return Results.Ok(_gatewayzHandler.Build());
|
||||
});
|
||||
_app.MapGet(basePath + "/leafz", () =>
|
||||
{
|
||||
stats.HttpReqStats.AddOrUpdate("/leafz", 1, (_, v) => v + 1);
|
||||
return Results.Ok(new { });
|
||||
return Results.Ok(_leafzHandler.Build());
|
||||
});
|
||||
_app.MapGet(basePath + "/subz", (HttpContext ctx) =>
|
||||
{
|
||||
@@ -92,12 +99,12 @@ public sealed class MonitorServer : IAsyncDisposable
|
||||
_app.MapGet(basePath + "/accountz", () =>
|
||||
{
|
||||
stats.HttpReqStats.AddOrUpdate("/accountz", 1, (_, v) => v + 1);
|
||||
return Results.Ok(new { });
|
||||
return Results.Ok(_accountzHandler.Build());
|
||||
});
|
||||
_app.MapGet(basePath + "/accstatz", () =>
|
||||
{
|
||||
stats.HttpReqStats.AddOrUpdate("/accstatz", 1, (_, v) => v + 1);
|
||||
return Results.Ok(new { });
|
||||
return Results.Ok(_accountzHandler.BuildStats());
|
||||
});
|
||||
_app.MapGet(basePath + "/jsz", () =>
|
||||
{
|
||||
|
||||
21
src/NATS.Server/Monitoring/RoutezHandler.cs
Normal file
21
src/NATS.Server/Monitoring/RoutezHandler.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
namespace NATS.Server.Monitoring;
|
||||
|
||||
public sealed class RoutezHandler
|
||||
{
|
||||
private readonly NatsServer _server;
|
||||
|
||||
public RoutezHandler(NatsServer server)
|
||||
{
|
||||
_server = server;
|
||||
}
|
||||
|
||||
public object Build()
|
||||
{
|
||||
var routes = _server.Stats.Routes;
|
||||
return new
|
||||
{
|
||||
routes,
|
||||
num_routes = routes,
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user