feat: add Varz and Connz monitoring JSON models with Go field name parity
This commit is contained in:
207
src/NATS.Server/Monitoring/Connz.cs
Normal file
207
src/NATS.Server/Monitoring/Connz.cs
Normal file
@@ -0,0 +1,207 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace NATS.Server.Monitoring;
|
||||
|
||||
/// <summary>
|
||||
/// Connection information response. Corresponds to Go server/monitor.go Connz struct.
|
||||
/// </summary>
|
||||
public sealed class Connz
|
||||
{
|
||||
[JsonPropertyName("server_id")]
|
||||
public string Id { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("now")]
|
||||
public DateTime Now { get; set; }
|
||||
|
||||
[JsonPropertyName("num_connections")]
|
||||
public int NumConns { get; set; }
|
||||
|
||||
[JsonPropertyName("total")]
|
||||
public int Total { get; set; }
|
||||
|
||||
[JsonPropertyName("offset")]
|
||||
public int Offset { get; set; }
|
||||
|
||||
[JsonPropertyName("limit")]
|
||||
public int Limit { get; set; }
|
||||
|
||||
[JsonPropertyName("connections")]
|
||||
public ConnInfo[] Conns { get; set; } = [];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Detailed information on a per-connection basis.
|
||||
/// Corresponds to Go server/monitor.go ConnInfo struct.
|
||||
/// </summary>
|
||||
public sealed class ConnInfo
|
||||
{
|
||||
[JsonPropertyName("cid")]
|
||||
public ulong Cid { get; set; }
|
||||
|
||||
[JsonPropertyName("kind")]
|
||||
public string Kind { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("type")]
|
||||
public string Type { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("ip")]
|
||||
public string Ip { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("port")]
|
||||
public int Port { get; set; }
|
||||
|
||||
[JsonPropertyName("start")]
|
||||
public DateTime Start { get; set; }
|
||||
|
||||
[JsonPropertyName("last_activity")]
|
||||
public DateTime LastActivity { get; set; }
|
||||
|
||||
[JsonPropertyName("stop")]
|
||||
public DateTime? Stop { get; set; }
|
||||
|
||||
[JsonPropertyName("reason")]
|
||||
public string Reason { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("rtt")]
|
||||
public string Rtt { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("uptime")]
|
||||
public string Uptime { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("idle")]
|
||||
public string Idle { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("pending_bytes")]
|
||||
public int Pending { get; set; }
|
||||
|
||||
[JsonPropertyName("in_msgs")]
|
||||
public long InMsgs { get; set; }
|
||||
|
||||
[JsonPropertyName("out_msgs")]
|
||||
public long OutMsgs { get; set; }
|
||||
|
||||
[JsonPropertyName("in_bytes")]
|
||||
public long InBytes { get; set; }
|
||||
|
||||
[JsonPropertyName("out_bytes")]
|
||||
public long OutBytes { get; set; }
|
||||
|
||||
[JsonPropertyName("subscriptions")]
|
||||
public uint NumSubs { get; set; }
|
||||
|
||||
[JsonPropertyName("subscriptions_list")]
|
||||
public string[] Subs { get; set; } = [];
|
||||
|
||||
[JsonPropertyName("subscriptions_list_detail")]
|
||||
public SubDetail[] SubsDetail { get; set; } = [];
|
||||
|
||||
[JsonPropertyName("name")]
|
||||
public string Name { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("lang")]
|
||||
public string Lang { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("version")]
|
||||
public string Version { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("authorized_user")]
|
||||
public string AuthorizedUser { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("account")]
|
||||
public string Account { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("tls_version")]
|
||||
public string TlsVersion { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("tls_cipher_suite")]
|
||||
public string TlsCipherSuite { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("tls_first")]
|
||||
public bool TlsFirst { get; set; }
|
||||
|
||||
[JsonPropertyName("mqtt_client")]
|
||||
public string MqttClient { get; set; } = "";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Subscription detail information.
|
||||
/// Corresponds to Go server/monitor.go SubDetail struct.
|
||||
/// </summary>
|
||||
public sealed class SubDetail
|
||||
{
|
||||
[JsonPropertyName("account")]
|
||||
public string Account { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("subject")]
|
||||
public string Subject { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("qgroup")]
|
||||
public string Queue { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("sid")]
|
||||
public string Sid { get; set; } = "";
|
||||
|
||||
[JsonPropertyName("msgs")]
|
||||
public long Msgs { get; set; }
|
||||
|
||||
[JsonPropertyName("max")]
|
||||
public long Max { get; set; }
|
||||
|
||||
[JsonPropertyName("cid")]
|
||||
public ulong Cid { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sort options for connection listing.
|
||||
/// Corresponds to Go server/monitor_sort_opts.go SortOpt type.
|
||||
/// </summary>
|
||||
public enum SortOpt
|
||||
{
|
||||
ByCid,
|
||||
ByStart,
|
||||
BySubs,
|
||||
ByPending,
|
||||
ByMsgsTo,
|
||||
ByMsgsFrom,
|
||||
ByBytesTo,
|
||||
ByBytesFrom,
|
||||
ByLast,
|
||||
ByIdle,
|
||||
ByUptime,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Connection state filter.
|
||||
/// Corresponds to Go server/monitor.go ConnState type.
|
||||
/// </summary>
|
||||
public enum ConnState
|
||||
{
|
||||
Open,
|
||||
Closed,
|
||||
All,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Options passed to Connz() for filtering and sorting.
|
||||
/// Corresponds to Go server/monitor.go ConnzOptions struct.
|
||||
/// </summary>
|
||||
public sealed class ConnzOptions
|
||||
{
|
||||
public SortOpt Sort { get; set; } = SortOpt.ByCid;
|
||||
|
||||
public bool Subscriptions { get; set; }
|
||||
|
||||
public bool SubscriptionsDetail { get; set; }
|
||||
|
||||
public ConnState State { get; set; } = ConnState.Open;
|
||||
|
||||
public string User { get; set; } = "";
|
||||
|
||||
public string Account { get; set; } = "";
|
||||
|
||||
public string FilterSubject { get; set; } = "";
|
||||
|
||||
public int Offset { get; set; }
|
||||
|
||||
public int Limit { get; set; } = 1024;
|
||||
}
|
||||
Reference in New Issue
Block a user