feat: implement jsz and live jetstream monitoring
This commit is contained in:
62
src/NATS.Server/Monitoring/JszHandler.cs
Normal file
62
src/NATS.Server/Monitoring/JszHandler.cs
Normal file
@@ -0,0 +1,62 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace NATS.Server.Monitoring;
|
||||
|
||||
public sealed class JszHandler
|
||||
{
|
||||
private readonly NatsServer _server;
|
||||
private readonly NatsOptions _options;
|
||||
|
||||
public JszHandler(NatsServer server, NatsOptions options)
|
||||
{
|
||||
_server = server;
|
||||
_options = options;
|
||||
}
|
||||
|
||||
public JszResponse Build()
|
||||
{
|
||||
return new JszResponse
|
||||
{
|
||||
ServerId = _server.ServerId,
|
||||
Now = DateTime.UtcNow,
|
||||
Enabled = _server.Stats.JetStreamEnabled,
|
||||
Memory = 0,
|
||||
Storage = 0,
|
||||
Streams = _server.JetStreamStreams,
|
||||
Consumers = _server.JetStreamConsumers,
|
||||
Config = new JetStreamConfig
|
||||
{
|
||||
MaxMemory = _options.JetStream?.MaxMemoryStore ?? 0,
|
||||
MaxStorage = _options.JetStream?.MaxFileStore ?? 0,
|
||||
StoreDir = _options.JetStream?.StoreDir ?? string.Empty,
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class JszResponse
|
||||
{
|
||||
[JsonPropertyName("server_id")]
|
||||
public string ServerId { get; set; } = string.Empty;
|
||||
|
||||
[JsonPropertyName("now")]
|
||||
public DateTime Now { get; set; }
|
||||
|
||||
[JsonPropertyName("enabled")]
|
||||
public bool Enabled { get; set; }
|
||||
|
||||
[JsonPropertyName("memory")]
|
||||
public ulong Memory { get; set; }
|
||||
|
||||
[JsonPropertyName("storage")]
|
||||
public ulong Storage { get; set; }
|
||||
|
||||
[JsonPropertyName("streams")]
|
||||
public int Streams { get; set; }
|
||||
|
||||
[JsonPropertyName("consumers")]
|
||||
public int Consumers { get; set; }
|
||||
|
||||
[JsonPropertyName("config")]
|
||||
public JetStreamConfig Config { get; set; } = new();
|
||||
}
|
||||
Reference in New Issue
Block a user