This commit is contained in:
智能大石头 2025-07-28 16:30:00 +08:00
commit 32a7de8995
10 changed files with 22 additions and 15 deletions

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 951 KiB

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

@ -84,7 +84,7 @@ public class StarService : DisposeBase, IApi
var ai = _agentInfo ??= AgentInfo.GetLocal(true);
ai.Server = set.Server;
ai.Services = Manager?.Services.Where(e => e.Enable || !e.Name.EqualIgnoreCase("test", "test2")).Select(e => e.Name).ToArray();
ai.Services = Manager?.Services?.Where(e => e.Enable || !e.Name.EqualIgnoreCase("test", "test2")).Select(e => e.Name).ToArray();
ai.Code = AgentSetting.Code;
ai.IP = AgentInfo.GetIps();
@ -95,13 +95,13 @@ public class StarService : DisposeBase, IApi
}
// 更新应用服务
var controller = Manager?.QueryByProcess(info.ProcessId);
var controller = info == null ? null : Manager?.QueryByProcess(info.ProcessId);
if (controller != null)
{
// 标记为星尘应用停止Deploy上报进程信息
controller.IsStarApp = true;
controller.WriteEvent("本地探测", raw);
controller.WriteEvent("本地探测", raw!);
}
// 返回插件服务器地址

View File

@ -108,17 +108,19 @@ public partial class AppMeter : Entity<AppMeter>
/// <summary>高级查询</summary>
/// <param name="appId">应用</param>
/// <param name="clientId">客户端标识</param>
/// <param name="source">数据来源。区分Ping/Deploy</param>
/// <param name="start">开始时间</param>
/// <param name="end">结束时间</param>
/// <param name="key">关键字</param>
/// <param name="page">分页参数信息。可携带统计和数据权限扩展查询等信息</param>
/// <returns>实体列表</returns>
public static IList<AppMeter> Search(Int32 appId, String clientId, DateTime start, DateTime end, String key, PageParameter page)
public static IList<AppMeter> Search(Int32 appId, String clientId, String source, DateTime start, DateTime end, String key, PageParameter page)
{
var exp = new WhereExpression();
if (appId >= 0) exp &= _.AppId == appId;
if (!clientId.IsNullOrEmpty() && clientId != "null") exp &= _.ClientId == clientId;
if (!source.IsNullOrEmpty()) exp &= _.Source == source;
exp &= _.Id.Between(start, end, Meta.Factory.Snow);
if (!key.IsNullOrEmpty()) exp &= _.ClientId.Contains(key) | _.Creator.Contains(key) | _.CreateIP.Contains(key);

View File

@ -47,7 +47,7 @@
<ItemGroup>
<PackageReference Include="NewLife.IP" Version="2.3.2025.601" />
<PackageReference Include="NewLife.Redis" Version="6.3.2025.701" />
<PackageReference Include="NewLife.Remoting.Extensions" Version="3.4.2025.719-beta0004" />
<PackageReference Include="NewLife.Remoting.Extensions" Version="3.4.2025.722-beta0820" />
</ItemGroup>
<ItemGroup>

View File

@ -25,7 +25,7 @@ public class NodeOnlineController : ReadOnlyEntityController<NodeOnline>
var list = ListFields;
list.Clear();
var allows = new[] { "ID", "ProjectName", "Name", "Category", "ProductCode", "CityName", "Address", "PingCount", "WebSocket", "Version", "OSKind", "IP", "AvailableMemory", "MemoryUsed", "AvailableFreeSpace", "SpaceUsed", "CpuRate", "ProcessCount", __.Signal, __.Offset, "UplinkSpeed", "DownlinkSpeed", "TraceId", "LocalTime", "CreateTime", "UpdateTime", "UpdateIP" };
var allows = new[] { "ID", "ProjectName", "Name", "Category", "ProductCode", "CityName", "Address", "PingCount", "WebSocket", "Version", "OSKind", "IP", "AvailableMemory", "MemoryUsed", "AvailableFreeSpace", "SpaceUsed", "CpuRate", "ProcessCount", __.Signal, __.Offset, "UplinkSpeed", "DownlinkSpeed", "IntranetScore", "InternetScore", "TraceId", "LocalTime", "CreateTime", "UpdateTime", "UpdateIP" };
foreach (var item in allows)
{
list.AddListField(item);

View File

@ -23,6 +23,10 @@ public class AppMeterController : EntityController<AppMeter>
var df = ListFields.GetField("ClientId") as ListField;
df.Url = "/Registry/AppMeter?appId={AppId}&clientId={ClientId}";
}
{
var df = ListFields.GetField("Source") as ListField;
df.Url = "/Registry/AppMeter?appId={AppId}&clientId={ClientId}&source={Source}";
}
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
@ -56,6 +60,7 @@ public class AppMeterController : EntityController<AppMeter>
var appId = p["appId"].ToInt(-1);
var clientId = p["clientId"];
var source = p["source"];
// 应用在线多IP时只取第一个
if (!clientId.IsNullOrEmpty())
@ -90,7 +95,7 @@ public class AppMeterController : EntityController<AppMeter>
if (p.Sort.IsNullOrEmpty()) p.OrderBy = _.Id.Desc();
var list = AppMeter.Search(appId, clientId, start, end, p["Q"], p);
var list = AppMeter.Search(appId, clientId, source, start, end, p["Q"], p);
// 如果没有clientId则可能列表数据里面只有一个选择它便于展示图表
if (list.Count > 0 && clientId.IsNullOrEmpty())

View File

@ -53,7 +53,7 @@
<PackageReference Include="NewLife.Cube.Core" Version="6.5.2025.715-beta1654" />
<PackageReference Include="NewLife.IP" Version="2.3.2025.601" />
<PackageReference Include="NewLife.Redis" Version="6.3.2025.701" />
<PackageReference Include="NewLife.Remoting.Extensions" Version="3.4.2025.719-beta0004" />
<PackageReference Include="NewLife.Remoting.Extensions" Version="3.4.2025.722-beta0820" />
</ItemGroup>
<ItemGroup>

View File

@ -47,12 +47,12 @@ public class PingMonitor
var threshold = 1f;
var successRate = rtTimes.Count / Times;
var latency = rtTimes.Average();
var latencyScore = 0d;
if (latency <= threshold)
latencyScore = 1f;
else
// 衰减系数λ=0.001。1ms为100%10ms为99.1%100ms为90.57%500ms为60.71%1000ms为36.82%
latencyScore = Math.Exp(-0.001 * (latency - threshold));
//var latencyScore = 0d;
//if (latency <= threshold)
// latencyScore = 1f;
//else
// 衰减系数λ=0.001。1ms为100%10ms为99.1%100ms为90.57%500ms为60.71%1000ms为36.82%
var latencyScore = Math.Exp(-0.001 * (latency - threshold));
// 确保得分在0-1之间
var score = successRate * latencyScore;

View File

@ -119,7 +119,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="NewLife.Remoting" Version="3.4.2025.719-beta0004" />
<PackageReference Include="NewLife.Remoting" Version="3.4.2025.722-beta0820" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="NewLife.Core" Version="11.5.2025.717-beta0001" />