Remove redis url from healthcheck

This commit is contained in:
2025-10-06 10:44:41 +07:00
parent 349a4c3696
commit b4ba9b93e6

View File

@@ -14,12 +14,13 @@ namespace Managing.Api.HealthChecks
_web3ProxyUrl = web3ProxyUrl; _web3ProxyUrl = web3ProxyUrl;
} }
public async Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default) public async Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context,
CancellationToken cancellationToken = default)
{ {
try try
{ {
var response = await _httpClient.GetAsync($"{_web3ProxyUrl}/health", cancellationToken); var response = await _httpClient.GetAsync($"{_web3ProxyUrl}/health", cancellationToken);
if (!response.IsSuccessStatusCode) if (!response.IsSuccessStatusCode)
{ {
return HealthCheckResult.Degraded( return HealthCheckResult.Degraded(
@@ -32,33 +33,33 @@ namespace Managing.Api.HealthChecks
} }
var content = await response.Content.ReadAsStringAsync(cancellationToken); var content = await response.Content.ReadAsStringAsync(cancellationToken);
// Parse the JSON response to extract the detailed data // Parse the JSON response to extract the detailed data
using (JsonDocument document = JsonDocument.Parse(content)) using (JsonDocument document = JsonDocument.Parse(content))
{ {
var root = document.RootElement; var root = document.RootElement;
string status = "healthy"; string status = "healthy";
if (root.TryGetProperty("status", out var statusElement)) if (root.TryGetProperty("status", out var statusElement))
{ {
status = statusElement.GetString(); status = statusElement.GetString();
} }
// Extract the detailed data from the Web3Proxy response // Extract the detailed data from the Web3Proxy response
var data = new Dictionary<string, object>(); var data = new Dictionary<string, object>();
// Parse timestamp if available // Parse timestamp if available
if (root.TryGetProperty("timestamp", out var timestampElement)) if (root.TryGetProperty("timestamp", out var timestampElement))
{ {
data["timestamp"] = timestampElement.GetString(); data["timestamp"] = timestampElement.GetString();
} }
// Parse version if available // Parse version if available
if (root.TryGetProperty("version", out var versionElement)) if (root.TryGetProperty("version", out var versionElement))
{ {
data["version"] = versionElement.GetString(); data["version"] = versionElement.GetString();
} }
// Parse checks if available // Parse checks if available
if (root.TryGetProperty("checks", out var checksElement)) if (root.TryGetProperty("checks", out var checksElement))
{ {
@@ -66,35 +67,35 @@ namespace Managing.Api.HealthChecks
if (checksElement.TryGetProperty("privy", out var privyElement)) if (checksElement.TryGetProperty("privy", out var privyElement))
{ {
var privyData = new Dictionary<string, object>(); var privyData = new Dictionary<string, object>();
if (privyElement.TryGetProperty("status", out var privyStatusElement)) if (privyElement.TryGetProperty("status", out var privyStatusElement))
{ {
privyData["status"] = privyStatusElement.GetString(); privyData["status"] = privyStatusElement.GetString();
} }
if (privyElement.TryGetProperty("message", out var privyMessageElement)) if (privyElement.TryGetProperty("message", out var privyMessageElement))
{ {
privyData["message"] = privyMessageElement.GetString(); privyData["message"] = privyMessageElement.GetString();
} }
data["privy"] = privyData; data["privy"] = privyData;
} }
// Extract GMX check // Extract GMX check
if (checksElement.TryGetProperty("gmx", out var gmxElement)) if (checksElement.TryGetProperty("gmx", out var gmxElement))
{ {
var gmxData = new Dictionary<string, object>(); var gmxData = new Dictionary<string, object>();
if (gmxElement.TryGetProperty("status", out var gmxStatusElement)) if (gmxElement.TryGetProperty("status", out var gmxStatusElement))
{ {
gmxData["status"] = gmxStatusElement.GetString(); gmxData["status"] = gmxStatusElement.GetString();
} }
if (gmxElement.TryGetProperty("message", out var gmxMessageElement)) if (gmxElement.TryGetProperty("message", out var gmxMessageElement))
{ {
gmxData["message"] = gmxMessageElement.GetString(); gmxData["message"] = gmxMessageElement.GetString();
} }
// Extract GMX market data // Extract GMX market data
if (gmxElement.TryGetProperty("data", out var gmxDataElement)) if (gmxElement.TryGetProperty("data", out var gmxDataElement))
{ {
@@ -102,71 +103,71 @@ namespace Managing.Api.HealthChecks
{ {
gmxData["marketCount"] = marketCountElement.GetInt32(); gmxData["marketCount"] = marketCountElement.GetInt32();
} }
if (gmxDataElement.TryGetProperty("responseTimeMs", out var responseTimeElement)) if (gmxDataElement.TryGetProperty("responseTimeMs", out var responseTimeElement))
{ {
gmxData["responseTimeMs"] = responseTimeElement.GetInt32(); gmxData["responseTimeMs"] = responseTimeElement.GetInt32();
} }
if (gmxDataElement.TryGetProperty("uiFeeFactor", out var uiFeeFactorElement)) if (gmxDataElement.TryGetProperty("uiFeeFactor", out var uiFeeFactorElement))
{ {
gmxData["uiFeeFactor"] = uiFeeFactorElement.GetString(); gmxData["uiFeeFactor"] = uiFeeFactorElement.GetString();
} }
if (gmxDataElement.TryGetProperty("sampleMarkets", out var sampleMarketsElement)) if (gmxDataElement.TryGetProperty("sampleMarkets", out var sampleMarketsElement))
{ {
var sampleMarkets = new List<Dictionary<string, string>>(); var sampleMarkets = new List<Dictionary<string, string>>();
for (int i = 0; i < sampleMarketsElement.GetArrayLength(); i++) for (int i = 0; i < sampleMarketsElement.GetArrayLength(); i++)
{ {
var marketElement = sampleMarketsElement[i]; var marketElement = sampleMarketsElement[i];
var market = new Dictionary<string, string>(); var market = new Dictionary<string, string>();
if (marketElement.TryGetProperty("marketAddress", out var addressElement)) if (marketElement.TryGetProperty("marketAddress", out var addressElement))
{ {
market["marketAddress"] = addressElement.GetString(); market["marketAddress"] = addressElement.GetString();
} }
if (marketElement.TryGetProperty("indexToken", out var indexTokenElement)) if (marketElement.TryGetProperty("indexToken", out var indexTokenElement))
{ {
market["indexToken"] = indexTokenElement.GetString(); market["indexToken"] = indexTokenElement.GetString();
} }
if (marketElement.TryGetProperty("longToken", out var longTokenElement)) if (marketElement.TryGetProperty("longToken", out var longTokenElement))
{ {
market["longToken"] = longTokenElement.GetString(); market["longToken"] = longTokenElement.GetString();
} }
if (marketElement.TryGetProperty("shortToken", out var shortTokenElement)) if (marketElement.TryGetProperty("shortToken", out var shortTokenElement))
{ {
market["shortToken"] = shortTokenElement.GetString(); market["shortToken"] = shortTokenElement.GetString();
} }
sampleMarkets.Add(market); sampleMarkets.Add(market);
} }
gmxData["sampleMarkets"] = sampleMarkets; gmxData["sampleMarkets"] = sampleMarkets;
} }
} }
data["gmx"] = gmxData; data["gmx"] = gmxData;
} }
// Extract Redis check // Extract Redis check
if (checksElement.TryGetProperty("redis", out var redisElement)) if (checksElement.TryGetProperty("redis", out var redisElement))
{ {
var redisData = new Dictionary<string, object>(); var redisData = new Dictionary<string, object>();
if (redisElement.TryGetProperty("status", out var redisStatusElement)) if (redisElement.TryGetProperty("status", out var redisStatusElement))
{ {
redisData["status"] = redisStatusElement.GetString(); redisData["status"] = redisStatusElement.GetString();
} }
if (redisElement.TryGetProperty("message", out var redisMessageElement)) if (redisElement.TryGetProperty("message", out var redisMessageElement))
{ {
redisData["message"] = redisMessageElement.GetString(); redisData["message"] = redisMessageElement.GetString();
} }
// Extract Redis detailed data // Extract Redis detailed data
if (redisElement.TryGetProperty("data", out var redisDataElement)) if (redisElement.TryGetProperty("data", out var redisDataElement))
{ {
@@ -174,52 +175,47 @@ namespace Managing.Api.HealthChecks
{ {
redisData["connectTimeMs"] = connectTimeElement.GetInt32(); redisData["connectTimeMs"] = connectTimeElement.GetInt32();
} }
if (redisDataElement.TryGetProperty("getTimeMs", out var getTimeElement)) if (redisDataElement.TryGetProperty("getTimeMs", out var getTimeElement))
{ {
redisData["getTimeMs"] = getTimeElement.GetInt32(); redisData["getTimeMs"] = getTimeElement.GetInt32();
} }
if (redisDataElement.TryGetProperty("redisVersion", out var redisVersionElement)) if (redisDataElement.TryGetProperty("redisVersion", out var redisVersionElement))
{ {
redisData["redisVersion"] = redisVersionElement.GetString(); redisData["redisVersion"] = redisVersionElement.GetString();
} }
if (redisDataElement.TryGetProperty("uptimeSeconds", out var uptimeElement)) if (redisDataElement.TryGetProperty("uptimeSeconds", out var uptimeElement))
{ {
redisData["uptimeSeconds"] = uptimeElement.GetString(); redisData["uptimeSeconds"] = uptimeElement.GetString();
} }
if (redisDataElement.TryGetProperty("connectedClients", out var clientsElement)) if (redisDataElement.TryGetProperty("connectedClients", out var clientsElement))
{ {
redisData["connectedClients"] = clientsElement.GetString(); redisData["connectedClients"] = clientsElement.GetString();
} }
if (redisDataElement.TryGetProperty("usedMemory", out var memoryElement)) if (redisDataElement.TryGetProperty("usedMemory", out var memoryElement))
{ {
redisData["usedMemory"] = memoryElement.GetString(); redisData["usedMemory"] = memoryElement.GetString();
} }
if (redisDataElement.TryGetProperty("hasPassword", out var hasPasswordElement)) if (redisDataElement.TryGetProperty("hasPassword", out var hasPasswordElement))
{ {
redisData["hasPassword"] = hasPasswordElement.GetBoolean(); redisData["hasPassword"] = hasPasswordElement.GetBoolean();
} }
if (redisDataElement.TryGetProperty("errorType", out var errorTypeElement)) if (redisDataElement.TryGetProperty("errorType", out var errorTypeElement))
{ {
redisData["errorType"] = errorTypeElement.GetString(); redisData["errorType"] = errorTypeElement.GetString();
} }
if (redisDataElement.TryGetProperty("redisUrl", out var redisUrlElement))
{
redisData["redisUrl"] = redisUrlElement.GetString();
}
} }
data["redis"] = redisData; data["redis"] = redisData;
} }
} }
// Determine overall health result based on status // Determine overall health result based on status
if (status.ToLower() == "healthy") if (status.ToLower() == "healthy")
{ {
@@ -255,4 +251,4 @@ namespace Managing.Api.HealthChecks
} }
} }
} }
} }