diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/SubscriptionStats.cs b/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/SubscriptionStats.cs index d679488..6c6626f 100644 --- a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/SubscriptionStats.cs +++ b/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Domain/SubscriptionStats.cs @@ -3,15 +3,20 @@ namespace ZB.MOM.WW.LmxProxy.Host.Domain /// Subscription statistics for monitoring. public class SubscriptionStats { - public SubscriptionStats(int totalClients, int totalTags, int activeSubscriptions) + public SubscriptionStats(int totalClients, int totalTags, int activeSubscriptions, + long totalDelivered = 0, long totalDropped = 0) { TotalClients = totalClients; TotalTags = totalTags; ActiveSubscriptions = activeSubscriptions; + TotalDelivered = totalDelivered; + TotalDropped = totalDropped; } public int TotalClients { get; } public int TotalTags { get; } public int ActiveSubscriptions { get; } + public long TotalDelivered { get; } + public long TotalDropped { get; } } } diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusModels.cs b/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusModels.cs index 1a2a193..05b9db1 100644 --- a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusModels.cs +++ b/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusModels.cs @@ -28,6 +28,8 @@ namespace ZB.MOM.WW.LmxProxy.Host.Status public int TotalClients { get; set; } public int TotalTags { get; set; } public int ActiveSubscriptions { get; set; } + public long TotalDelivered { get; set; } + public long TotalDropped { get; set; } } public class PerformanceStatus diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusReportService.cs b/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusReportService.cs index d8c1ee3..10b3b25 100644 --- a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusReportService.cs +++ b/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Status/StatusReportService.cs @@ -96,7 +96,9 @@ namespace ZB.MOM.WW.LmxProxy.Host.Status { TotalClients = subStats.TotalClients, TotalTags = subStats.TotalTags, - ActiveSubscriptions = subStats.ActiveSubscriptions + ActiveSubscriptions = subStats.ActiveSubscriptions, + TotalDelivered = subStats.TotalDelivered, + TotalDropped = subStats.TotalDropped }; // Performance stats @@ -216,11 +218,17 @@ namespace ZB.MOM.WW.LmxProxy.Host.Status sb.AppendLine(" "); // Subscriptions card - sb.AppendLine("
"); + var subCardCss = statusData.Subscriptions.TotalDropped > 0 ? "card-yellow" : "card-green"; + sb.AppendLine($"
"); sb.AppendLine("

Subscriptions

"); sb.AppendLine($"

Clients: {statusData.Subscriptions.TotalClients}

"); sb.AppendLine($"

Tags: {statusData.Subscriptions.TotalTags}

"); sb.AppendLine($"

Active: {statusData.Subscriptions.ActiveSubscriptions}

"); + sb.AppendLine($"

Delivered: {statusData.Subscriptions.TotalDelivered:N0}

"); + if (statusData.Subscriptions.TotalDropped > 0) + { + sb.AppendLine($"

Dropped: {statusData.Subscriptions.TotalDropped:N0}

"); + } sb.AppendLine("
"); sb.AppendLine("
"); diff --git a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Subscriptions/SubscriptionManager.cs b/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Subscriptions/SubscriptionManager.cs index 05e709a..bbcfb40 100644 --- a/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Subscriptions/SubscriptionManager.cs +++ b/lmxproxy/src/ZB.MOM.WW.LmxProxy.Host/Subscriptions/SubscriptionManager.cs @@ -242,10 +242,20 @@ namespace ZB.MOM.WW.LmxProxy.Host.Subscriptions /// Returns subscription statistics. public SubscriptionStats GetStats() { + long totalDelivered = 0; + long totalDropped = 0; + foreach (var kvp in _clientSubscriptions) + { + totalDelivered += kvp.Value.DeliveredCount; + totalDropped += kvp.Value.DroppedCount; + } + return new SubscriptionStats( _clientSubscriptions.Count, _tagSubscriptions.Count, - _clientSubscriptions.Values.Sum(c => c.Addresses.Count)); + _clientSubscriptions.Values.Sum(c => c.Addresses.Count), + totalDelivered, + totalDropped); } public void Dispose()