From 3ec97ef98e5513802605341b65a9c4dadac948a5 Mon Sep 17 00:00:00 2001 From: cryptooda Date: Sat, 20 Sep 2025 16:26:45 +0700 Subject: [PATCH] Add redis healthcheck to .net app --- .../HealthChecks/Web3ProxyHealthCheck.cs | 68 ++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) diff --git a/src/Managing.Api/HealthChecks/Web3ProxyHealthCheck.cs b/src/Managing.Api/HealthChecks/Web3ProxyHealthCheck.cs index 7aec7dd1..f7b5760d 100644 --- a/src/Managing.Api/HealthChecks/Web3ProxyHealthCheck.cs +++ b/src/Managing.Api/HealthChecks/Web3ProxyHealthCheck.cs @@ -38,7 +38,6 @@ namespace Managing.Api.HealthChecks { var root = document.RootElement; string status = "healthy"; - string message = "Web3Proxy is healthy"; if (root.TryGetProperty("status", out var statusElement)) { @@ -152,6 +151,73 @@ namespace Managing.Api.HealthChecks data["gmx"] = gmxData; } + + // Extract Redis check + if (checksElement.TryGetProperty("redis", out var redisElement)) + { + var redisData = new Dictionary(); + + if (redisElement.TryGetProperty("status", out var redisStatusElement)) + { + redisData["status"] = redisStatusElement.GetString(); + } + + if (redisElement.TryGetProperty("message", out var redisMessageElement)) + { + redisData["message"] = redisMessageElement.GetString(); + } + + // Extract Redis detailed data + if (redisElement.TryGetProperty("data", out var redisDataElement)) + { + if (redisDataElement.TryGetProperty("connectTimeMs", out var connectTimeElement)) + { + redisData["connectTimeMs"] = connectTimeElement.GetInt32(); + } + + if (redisDataElement.TryGetProperty("getTimeMs", out var getTimeElement)) + { + redisData["getTimeMs"] = getTimeElement.GetInt32(); + } + + if (redisDataElement.TryGetProperty("redisVersion", out var redisVersionElement)) + { + redisData["redisVersion"] = redisVersionElement.GetString(); + } + + if (redisDataElement.TryGetProperty("uptimeSeconds", out var uptimeElement)) + { + redisData["uptimeSeconds"] = uptimeElement.GetString(); + } + + if (redisDataElement.TryGetProperty("connectedClients", out var clientsElement)) + { + redisData["connectedClients"] = clientsElement.GetString(); + } + + if (redisDataElement.TryGetProperty("usedMemory", out var memoryElement)) + { + redisData["usedMemory"] = memoryElement.GetString(); + } + + if (redisDataElement.TryGetProperty("hasPassword", out var hasPasswordElement)) + { + redisData["hasPassword"] = hasPasswordElement.GetBoolean(); + } + + if (redisDataElement.TryGetProperty("errorType", out var errorTypeElement)) + { + redisData["errorType"] = errorTypeElement.GetString(); + } + + if (redisDataElement.TryGetProperty("redisUrl", out var redisUrlElement)) + { + redisData["redisUrl"] = redisUrlElement.GetString(); + } + } + + data["redis"] = redisData; + } } // Determine overall health result based on status