|
|
|
@ -73,8 +73,26 @@ namespace CncService.Impl
|
|
|
|
public object GetCollectorStatus()
|
|
|
|
public object GetCollectorStatus()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var latest = _collectorHeartbeatRepository.GetLatest("collector-service");
|
|
|
|
var latest = _collectorHeartbeatRepository.GetLatest("collector-service");
|
|
|
|
bool isRunning = latest != null && latest.Status == "running";
|
|
|
|
|
|
|
|
long uptimeSeconds = isRunning ? (latest.UptimeSeconds ?? 0) : 0;
|
|
|
|
// 心跳超时阈值:90秒(3个心跳间隔,采集服务默认每30秒上报一次)
|
|
|
|
|
|
|
|
const int heartbeatTimeoutSeconds = 90;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool isRunning = false;
|
|
|
|
|
|
|
|
long uptimeSeconds = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (latest != null && latest.Status == "running")
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// 检查最后心跳时间是否在阈值内,超时则判定为已停止
|
|
|
|
|
|
|
|
var lastHeartbeat = latest.CreatedAt;
|
|
|
|
|
|
|
|
var elapsed = (DateTime.Now - lastHeartbeat).TotalSeconds;
|
|
|
|
|
|
|
|
isRunning = elapsed <= heartbeatTimeoutSeconds;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (isRunning)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
uptimeSeconds = latest.UptimeSeconds ?? 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return new { status = isRunning ? "running" : "stopped", uptimeSeconds, lastCollectTime = latest?.LastCollectTime };
|
|
|
|
return new { status = isRunning ? "running" : "stopped", uptimeSeconds, lastCollectTime = latest?.LastCollectTime };
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|