可以根据配置初始化监控节点

This commit is contained in:
mjzhou
2021-11-19 11:09:17 +08:00
parent c83b570084
commit ca05b93a19
8 changed files with 83 additions and 14 deletions
@@ -5,7 +5,7 @@
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
<AssemblyVersion>1.5.3.1</AssemblyVersion>
<Version>1.5.2</Version>
<PackageVersion>1.5.3.1</PackageVersion>
<PackageVersion>1.5.3.2</PackageVersion>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
</PropertyGroup>
+15 -5
View File
@@ -4,24 +4,34 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using AgileConfig.Server.IService;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace AgileConfig.Server.Apisite
{
public class InitService: IHostedService
{
private IRemoteServerNodeProxy _remoteServerNodeProxy;
private IEventRegister _eventRegister;
public InitService(IRemoteServerNodeProxy proxy, IEventRegister eventRegister)
private readonly IRemoteServerNodeProxy _remoteServerNodeProxy;
private readonly IEventRegister _eventRegister;
private readonly ISettingService _settingService;
private readonly IServerNodeService _serverNodeService;
public InitService(IServiceScopeFactory serviceScopeFactory)
{
_remoteServerNodeProxy = proxy;
_eventRegister = eventRegister;
using (var scope = serviceScopeFactory.CreateScope())
{
_remoteServerNodeProxy = scope.ServiceProvider.GetService<IRemoteServerNodeProxy>();
_eventRegister = scope.ServiceProvider.GetService<IEventRegister>();
_settingService = scope.ServiceProvider.GetService<ISettingService>();
_serverNodeService = scope.ServiceProvider.GetService<IServerNodeService>();
}
}
public Task StartAsync(CancellationToken cancellationToken)
{
if (Appsettings.IsAdminConsoleMode)
{
_serverNodeService.InitWatchNodeAsync();
_settingService.InitDefaultEnvironment();
_remoteServerNodeProxy.TestEchoAsync();
_eventRegister.Init();
}
@@ -7,6 +7,7 @@
}
},
"adminConsole": true,
"nodes": "", // 需要监控的节点
"preview_mode": true,
"db": {
"provider": "sqlite", //sqlite,mysql,sqlserver,npgsql,oracle
@@ -28,9 +29,9 @@
},
"JwtSetting": {
"SecurityKey": "dfasf343453fsdfa,./,./sdfasf34r3hfhfdb", // 密钥
"Issuer": "agileconfig.admin", // 颁发者
"Audience": "agileconfig.admin", // 接收者
"ExpireSeconds": 86400 // 过期时间
"SecurityKey": "dfasf343453fsdfa,./,./sdfasf34r3hfhfdb", // ��Կ
"Issuer": "agileconfig.admin", // �䷢��
"Audience": "agileconfig.admin", // ������
"ExpireSeconds": 86400 // ����ʱ��
}
}
@@ -7,6 +7,7 @@
}
},
"adminConsole": false,
"nodes": "", // 需要监控的节点
"preview_mode": false,
"db": {
"provider": "", //sqlite,mysql,sqlserver,npgsql,oracle
@@ -17,5 +17,11 @@ namespace AgileConfig.Server.IService
Task<bool> UpdateAsync(ServerNode node);
Task<List<ServerNode>> GetAllNodesAsync();
/// <summary>
/// 根据appsettings里的nodes配置初始化服务器节点
/// </summary>
/// <returns></returns>
Task<bool> InitWatchNodeAsync();
}
}
@@ -33,7 +33,7 @@ namespace AgileConfig.Server.Service
}
}
private IServerNodeService GetGerverNodeService()
private IServerNodeService GetServerNodeService()
{
return new ServerNodeService(new FreeSqlContext(FreeSQL.Instance));
}
@@ -222,7 +222,7 @@ namespace AgileConfig.Server.Service
public async Task TestEchoAsync(string address)
{
using var service = GetGerverNodeService();
using var service = GetServerNodeService();
var node = await service.GetAsync(address);
try
{
@@ -251,7 +251,7 @@ namespace AgileConfig.Server.Service
{
while (true)
{
using var service = GetGerverNodeService();
using var service = GetServerNodeService();
var nodes = await service.GetAllNodesAsync();
foreach (var node in nodes)
@@ -76,5 +76,57 @@ namespace AgileConfig.Server.Service
return result;
}
public async Task<bool> InitWatchNodeAsync()
{
var count = await _dbContext.ServerNodes.Select.CountAsync();
if (count > 0)
{
return false;
}
var nodes = Global.Config["nodes"];
var addresses = new List<string>();
if (!string.IsNullOrEmpty(nodes))
{
var arr = nodes.Split(',');
foreach (var item in arr)
{
var address = "";
if (item.StartsWith("http", StringComparison.OrdinalIgnoreCase))
{
address = item;
}
else
{
address = "http://" + item;
}
addresses.Add(address);
}
}
foreach (var address in addresses)
{
var node = await _dbContext.ServerNodes.Where(n => n.Address == address).ToOneAsync();
if (node == null)
{
node = new ServerNode()
{
Address = address,
CreateTime = DateTime.Now,
};
await _dbContext.ServerNodes.AddAsync(node);
}
}
var result = 0;
if (addresses.Count > 0)
{
result = await _dbContext.SaveChangesAsync();
}
return result > 0;
}
}
}
@@ -143,7 +143,6 @@ namespace AgileConfig.Server.Service
public async Task<string[]> GetEnvironmentList()
{
await InitDefaultEnvironment();
var env = await _dbContext.Settings.Where(x => x.Id == DefaultEnvironmentKey).FirstAsync();
return env.Value.ToUpper().Split(',');