diff --git a/PARR.API/Contracts/V1/Responses/Statistics/StatRabbitMqConnectionsResponse.cs b/PARR.API/Contracts/V1/Responses/Statistics/StatRabbitMqConnectionsResponse.cs new file mode 100644 index 00000000..45898df9 --- /dev/null +++ b/PARR.API/Contracts/V1/Responses/Statistics/StatRabbitMqConnectionsResponse.cs @@ -0,0 +1,14 @@ +namespace PARR.API.Contracts.V1.Responses.Statistics +{ + public class StatRabbitMqConnectionsResponse + { + public StatRabbitMqConnectionsMonitoringSettings MonitoringSettings { get; set; } + + public object? MqData { get; set; } + } + + public class StatRabbitMqConnectionsMonitoringSettings + { + public int ThresholdConnections { get; set; } + } +} diff --git a/PARR.API/Controllers/V1/Statistics/StatRabbitMqController.cs b/PARR.API/Controllers/V1/Statistics/StatRabbitMqController.cs index 3077baec..888f4c0e 100644 --- a/PARR.API/Controllers/V1/Statistics/StatRabbitMqController.cs +++ b/PARR.API/Controllers/V1/Statistics/StatRabbitMqController.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Mvc; using PARR.API.Contracts.V1; using PARR.API.Contracts.V1.Responses.Base; +using PARR.API.Contracts.V1.Responses.Statistics; using PARR.API.Controllers.V1.Base; using PARR.API.Settings; using PARR.BLL.Services.Interfaces; @@ -19,13 +20,21 @@ namespace PARR.API.Controllers.V1.Statistics private readonly MqSettings mqSettings; private readonly ILogger logger; private readonly IMqAdminService mqAdminService; + private readonly MonitoringSettings monitoringSettings; - public StatRabbitMqController(IMqService mqService, MqSettings mqSettings, ILogger logger, IMqAdminService mqAdminService) + public StatRabbitMqController( + IMqService mqService, + MqSettings mqSettings, + ILogger logger, + IMqAdminService mqAdminService, + MonitoringSettings monitoringSettings + ) { this.mqService = mqService; this.mqSettings = mqSettings; this.logger = logger; this.mqAdminService = mqAdminService; + this.monitoringSettings = monitoringSettings; } /// @@ -42,6 +51,7 @@ namespace PARR.API.Controllers.V1.Statistics return Ok(new Response(result.Response, true)); + #region comments //var response = new List(); //// список очередей @@ -59,6 +69,7 @@ namespace PARR.API.Controllers.V1.Statistics //} //return Ok(new Response>(response.OrderBy(t => t.Name).ToList(), true)); + #endregion } @@ -74,7 +85,16 @@ namespace PARR.API.Controllers.V1.Statistics if (!result.IsSuccess) return BadRequest(new Response(false, new List { new ErrorModel { Message = $"Ошибка при получении статистики из RabbitMQ." } })); - return Ok(new Response(result.Response, true)); + var response = new StatRabbitMqConnectionsResponse + { + MqData = result.Response, + MonitoringSettings = new StatRabbitMqConnectionsMonitoringSettings + { + ThresholdConnections = monitoringSettings.RabbitMq?.ThresholdConnections ?? 0 + } + }; + + return Ok(new Response(response, true)); } } } diff --git a/PARR.API/Settings/MonitoringSettings.cs b/PARR.API/Settings/MonitoringSettings.cs index 2070fcca..51e268ab 100644 --- a/PARR.API/Settings/MonitoringSettings.cs +++ b/PARR.API/Settings/MonitoringSettings.cs @@ -3,6 +3,8 @@ public class MonitoringSettings { public List Robots { get; set; } = new List(); + + public MonitoringRabbitMq? RabbitMq { get; set; } } public class MonitoringRobotSettings @@ -11,4 +13,12 @@ public TimeSpan InaccessibilityTime { get; set; } } + + public class MonitoringRabbitMq + { + /// + /// Кол-во подключений к RabbitMq, если меньше, то алярм + /// + public int ThresholdConnections { get; set; } + } } diff --git a/PARR.API/appsettings.json b/PARR.API/appsettings.json index bee17318..9903ceb0 100644 --- a/PARR.API/appsettings.json +++ b/PARR.API/appsettings.json @@ -99,6 +99,9 @@ "Name": "ScheduleExport", "InaccessibilityTime": "01:20:00" } - ] + ], + "RabbitMq": { + "ThresholdConnections": 18 + } } }