Remove redis url from healthcheck
This commit is contained in:
@@ -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
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user