Browse Source

NetworkStatusMonitor 修改执行命名优化

master
root 3 days ago
parent
commit
3809594434
  1. 134
      CoreAgent.Infrastructure/Services/Network/NetworkStatusMonitor.cs

134
CoreAgent.Infrastructure/Services/Network/NetworkStatusMonitor.cs

@ -101,20 +101,16 @@ public class NetworkStatusMonitor : INetworkStatusMonitor
switch (configType) switch (configType)
{ {
case NetworkConfigType.BothRagAndCore: case NetworkConfigType.BothRagAndCore:
var ragResult = await CheckRagEndPointsAsync(endPoints); await CheckRagEndPointAsync(endPoints, results);
results.Add(ragResult); await CheckCoreEndPointsAsync(endPoints, results);
var coreResult = await CheckCoreEndPointsAsync(endPoints);
results.Add(coreResult);
break; break;
case NetworkConfigType.RagOnly: case NetworkConfigType.RagOnly:
var ragOnlyResult = await CheckRagEndPointsAsync(endPoints); await CheckRagEndPointAsync(endPoints, results);
results.Add(ragOnlyResult);
break; break;
case NetworkConfigType.CoreOnly: case NetworkConfigType.CoreOnly:
var coreOnlyResult = await CheckCoreEndPointsAsync(endPoints); await CheckCoreEndPointsAsync(endPoints, results);
results.Add(coreOnlyResult);
break; break;
case NetworkConfigType.None: case NetworkConfigType.None:
@ -127,78 +123,32 @@ public class NetworkStatusMonitor : INetworkStatusMonitor
} }
/// <summary> /// <summary>
/// 检查 RAG 相关端点状态 /// 检查 RAG 端点
/// </summary> /// </summary>
/// <returns>检查结果</returns> private async Task CheckRagEndPointAsync(NetworkIPEndPointCollection endPoints, List<EndPointStatusResult> results)
private async Task<EndPointStatusResult> CheckRagEndPointsAsync(NetworkIPEndPointCollection endPoints)
{ {
var result = new EndPointStatusResult(); var ragResult = await CheckRanStatusAsync(endPoints.RanEndPoint);
results.Add(ragResult);
if (endPoints.RanEndPoint == null)
{
result.IsSuccess = true;
return result;
}
result.ComAddr = endPoints.RanEndPoint.ComAddr;
var ranResult = await CheckRanStatusAsync(endPoints.RanEndPoint);
_logger.LogInformation("RAN 端点状态检查: {ComAddr}, 结果: {IsSuccess}",
ranResult.ComAddr, ranResult.IsSuccess);
result.IsSuccess = ranResult.IsSuccess;
result.ErrorMessage = ranResult.ErrorMessage;
return result;
} }
/// <summary> /// <summary>
/// 检查 Core 相关端点状态 /// 检查 Core 端点(IMS 和 CN)
/// </summary> /// </summary>
/// <returns>检查结果</returns> private async Task CheckCoreEndPointsAsync(NetworkIPEndPointCollection endPoints, List<EndPointStatusResult> results)
private async Task<EndPointStatusResult> CheckCoreEndPointsAsync(NetworkIPEndPointCollection endPoints)
{ {
var result = new EndPointStatusResult { IsSuccess = true };
var errorMessages = new List<string>();
// 检查 IMS 端点 // 检查 IMS 端点
if (endPoints.ImsEndPoints != null && endPoints.ImsEndPoints.Any()) if (endPoints.ImsEndPoints != null && endPoints.ImsEndPoints.Any())
{ {
var imsResults = await CheckImsStatusAsync(endPoints.ImsEndPoints); var imsResults = await CheckImsStatusAsync(endPoints.ImsEndPoints);
foreach (var imsResult in imsResults) results.AddRange(imsResults);
{
_logger.LogInformation("IMS 端点状态检查: {ComAddr}, 结果: {IsSuccess}",
imsResult.ComAddr, imsResult.IsSuccess);
if (!imsResult.IsSuccess)
{
result.IsSuccess = false;
errorMessages.Add($"IMS端点 {imsResult.ComAddr}: {imsResult.ErrorMessage}");
}
}
} }
// 检查 CN 端点 // 检查 CN 端点
if (endPoints.CnEndPoints != null && endPoints.CnEndPoints.Any()) if (endPoints.CnEndPoints != null && endPoints.CnEndPoints.Any())
{ {
var cnResults = await CheckCnStatusAsync(endPoints.CnEndPoints); var cnResults = await CheckCnStatusAsync(endPoints.CnEndPoints);
foreach (var cnResult in cnResults) results.AddRange(cnResults);
{
_logger.LogInformation("CN 端点状态检查: {ComAddr}, 结果: {IsSuccess}",
cnResult.ComAddr, cnResult.IsSuccess);
if (!cnResult.IsSuccess)
{
result.IsSuccess = false;
errorMessages.Add($"CN端点 {cnResult.ComAddr}: {cnResult.ErrorMessage}");
}
}
}
if (!result.IsSuccess)
{
result.ErrorMessage = string.Join("; ", errorMessages);
} }
return result;
} }
/// <summary> /// <summary>
@ -221,8 +171,7 @@ public class NetworkStatusMonitor : INetworkStatusMonitor
result.ComAddr = ranEndPoint.ComAddr; result.ComAddr = ranEndPoint.ComAddr;
try try
{ {
await CheckEndPointStatusAsync(ranEndPoint.ComAddr, "RAN"); result.IsSuccess= await CheckEndPointStatusAsync(ranEndPoint.ComAddr, "RAN");
result.IsSuccess = true;
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -257,8 +206,7 @@ public class NetworkStatusMonitor : INetworkStatusMonitor
try try
{ {
await CheckEndPointStatusAsync(imsEndPoint.ComAddr, "IMS"); statusResult.IsSuccess = await CheckEndPointStatusAsync(imsEndPoint.ComAddr, "IMS");
statusResult.IsSuccess = true;
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -296,8 +244,7 @@ public class NetworkStatusMonitor : INetworkStatusMonitor
try try
{ {
await CheckEndPointStatusAsync(cnEndPoint.ComAddr, "CN"); statusResult.IsSuccess = await CheckEndPointStatusAsync(cnEndPoint.ComAddr, "CN");
statusResult.IsSuccess = true;
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -317,21 +264,60 @@ public class NetworkStatusMonitor : INetworkStatusMonitor
/// </summary> /// </summary>
/// <param name="comAddr">通信地址</param> /// <param name="comAddr">通信地址</param>
/// <param name="endPointType">端点类型</param> /// <param name="endPointType">端点类型</param>
private async Task<(bool isSuccess, string data)> CheckEndPointStatusAsync(string comAddr, string endPointType) private async Task<bool> CheckEndPointStatusAsync(string comAddr, string endPointType)
{ {
var command = $"{_appSettings.WebSocketJsPath} {comAddr} '{_appSettings.WebSocketCommands.Stats.ToJson()}'"; var command = $"{_appSettings.WebSocketJsPath} {comAddr} '{_appSettings.WebSocketCommands.Stats.ToJson()}'";
_logger.LogInformation("开始检查{EndPointType}端点状态,地址: {ComAddr}", endPointType, comAddr);
var result = await _commandExecutor.ExecuteCommandAsync(command, new CancellationTokenSource()); var result = await _commandExecutor.ExecuteCommandAsync(command, new CancellationTokenSource());
if (string.IsNullOrEmpty(result.Output))
{
_logger.LogWarning("{EndPointType}端点 {ComAddr} 状态检查失败: 返回数据为空",
endPointType, comAddr);
return false;
}
var parsedData = result.Output.ParseWsResultLogs();
// 验证是否为有效的JSON且内容不为空
try
{
using var jsonDoc = JsonDocument.Parse(parsedData);
var root = jsonDoc.RootElement;
if (root.ValueKind == JsonValueKind.Object && root.EnumerateObject().Count() == 0)
{
_logger.LogWarning("{EndPointType}端点 {ComAddr} 状态检查失败: 返回的JSON数据为空对象",
endPointType, comAddr);
return false;
}
if (root.ValueKind == JsonValueKind.Array && root.GetArrayLength() == 0)
{
_logger.LogWarning("{EndPointType}端点 {ComAddr} 状态检查失败: 返回的JSON数据为空数组",
endPointType, comAddr);
return false;
}
}
catch (JsonException)
{
_logger.LogWarning("{EndPointType}端点 {ComAddr} 状态检查失败: 返回数据不是有效的JSON格式",
endPointType, comAddr);
return false;
}
if (result.IsSuccess) if (result.IsSuccess)
{ {
_logger.LogInformation("{EndPointType} 端点 {ComAddr} 状态检查成功", endPointType, comAddr); _logger.LogInformation("{EndPointType}端点 {ComAddr} 状态检查成功,返回数据: {Data}",
return (result.IsSuccess, result.Output.ParseWsResultLogs()); endPointType, comAddr, parsedData);
return true;
} }
else else
{ {
var error = $"检查失败: {result.Error}"; var error = $"检查失败: {result.Error},返回数据: {result.Output}";
_logger.LogWarning("{EndPointType} 端点 {ComAddr} 状态检查失败: {Error}", endPointType, comAddr, result.Error); _logger.LogWarning("{EndPointType}端点 {ComAddr} 状态检查失败: {Error}",
return (result.IsSuccess, result.Output.ParseWsResultLogs()); endPointType, comAddr, error);
return false;
} }
} }
} }
Loading…
Cancel
Save