65 lines
2.7 KiB
C#
65 lines
2.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
using System.Runtime.InteropServices;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Furion.Logging;
|
|
using Microsoft.AspNetCore.Hosting;
|
|
using Microsoft.Extensions.Hosting;
|
|
using Microsoft.Extensions.Options;
|
|
using Yi.Framework.Infrastructure.Extensions;
|
|
using Yi.Framework.Infrastructure.Helper;
|
|
|
|
namespace Yi.Furion.Application.Rbac.Services
|
|
{
|
|
|
|
public class MonitorServerService: IMonitorServerService,IDynamicApiController, ITransient
|
|
{
|
|
private IWebHostEnvironment _hostEnvironment;
|
|
private IHttpContextAccessor _httpContextAccessor;
|
|
public MonitorServerService(IWebHostEnvironment hostEnvironment, IHttpContextAccessor httpContextAccessor)
|
|
{
|
|
this._hostEnvironment = hostEnvironment;
|
|
_httpContextAccessor = httpContextAccessor;
|
|
}
|
|
[HttpGet("info")]
|
|
public object GetInfo()
|
|
{
|
|
int cpuNum = Environment.ProcessorCount;
|
|
string computerName = Environment.MachineName;
|
|
string osName = RuntimeInformation.OSDescription;
|
|
string osArch = RuntimeInformation.OSArchitecture.ToString();
|
|
string version = RuntimeInformation.FrameworkDescription;
|
|
string appRAM = ((double)Process.GetCurrentProcess().WorkingSet64 / 1048576).ToString("N2") + " MB";
|
|
string startTime = Process.GetCurrentProcess().StartTime.ToString("yyyy-MM-dd HH:mm:ss");
|
|
string sysRunTime = ComputerHelper.GetRunTime();
|
|
string serverIP = _httpContextAccessor.HttpContext.Connection.LocalIpAddress.MapToIPv4().ToString() + ":" + _httpContextAccessor.HttpContext.Connection.LocalPort;//获取服务器IP
|
|
|
|
var programStartTime = Process.GetCurrentProcess().StartTime;
|
|
string programRunTime = DateTimeHelper.FormatTime((DateTime.Now - programStartTime).TotalMilliseconds.ToString().Split('.')[0].ParseToLong());
|
|
var data = new
|
|
{
|
|
cpu = ComputerHelper.GetComputerInfo(),
|
|
disk = ComputerHelper.GetDiskInfos(),
|
|
sys = new { cpuNum, computerName, osName, osArch, serverIP, runTime = sysRunTime },
|
|
app = new
|
|
{
|
|
name = _hostEnvironment.EnvironmentName,
|
|
rootPath = _hostEnvironment.ContentRootPath,
|
|
webRootPath = _hostEnvironment.WebRootPath,
|
|
version,
|
|
appRAM,
|
|
startTime,
|
|
runTime = programRunTime,
|
|
host = serverIP
|
|
},
|
|
};
|
|
|
|
return data;
|
|
}
|
|
|
|
}
|
|
}
|