using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using System.Diagnostics; using System.Runtime.InteropServices; namespace ZR.Admin.WebApi.Controllers.monitor { /// /// 系统监控 /// [ApiExplorerSettings(GroupName = "sys")] public class MonitorController : BaseController { private OptionsSetting Options; private IWebHostEnvironment HostEnvironment; private NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); public MonitorController(IOptions options, IWebHostEnvironment hostEnvironment) { this.HostEnvironment = hostEnvironment; this.Options = options.Value; } /// /// 获取缓存监控数据 /// /// [HttpGet("monitor/cache")] public IActionResult GetCache() { return SUCCESS(1); } /// /// 获取服务器信息 /// /// [HttpGet("monitor/server")] //[AllowAnonymous] public IActionResult Server() { //核心数 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 = Request.HttpContext.Connection.LocalIpAddress.MapToIPv4().ToString() + ":" + Request.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 SUCCESS(data); } } }