From 2e82c696aa66ea83616511ba62d2cfe31c928976 Mon Sep 17 00:00:00 2001 From: Mikhail Trubnikov Date: Thu, 25 Jul 2024 14:38:22 +1000 Subject: [PATCH] =?UTF-8?q?feat(api):=20StatRabbitMqController=20GetConnec?= =?UTF-8?q?tionStats=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20?= =?UTF-8?q?=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=20ThresholdCon?= =?UTF-8?q?nections,=20=D0=B2=D1=8B=D0=BD=D0=B5=D1=81=D0=B5=D0=BD=20=D0=B2?= =?UTF-8?q?=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StatRabbitMqConnectionsResponse.cs | 14 +++++++++++ .../V1/Statistics/StatRabbitMqController.cs | 24 +++++++++++++++++-- PARR.API/Settings/MonitoringSettings.cs | 10 ++++++++ PARR.API/appsettings.json | 5 +++- 4 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 PARR.API/Contracts/V1/Responses/Statistics/StatRabbitMqConnectionsResponse.cs 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 + } } }