MonitorController.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using Microsoft.AspNetCore.Mvc;
  2. using Microsoft.Extensions.Options;
  3. using System.Diagnostics;
  4. using System.Runtime.InteropServices;
  5. namespace ZR.Admin.WebApi.Controllers.monitor
  6. {
  7. /// <summary>
  8. /// 系统监控
  9. /// </summary>
  10. [ApiExplorerSettings(GroupName = "sys")]
  11. public class MonitorController : BaseController
  12. {
  13. private OptionsSetting Options;
  14. private IWebHostEnvironment HostEnvironment;
  15. private NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
  16. public MonitorController(IOptions<OptionsSetting> options, IWebHostEnvironment hostEnvironment)
  17. {
  18. this.HostEnvironment = hostEnvironment;
  19. this.Options = options.Value;
  20. }
  21. /// <summary>
  22. /// 获取缓存监控数据
  23. /// </summary>
  24. /// <returns></returns>
  25. [HttpGet("monitor/cache")]
  26. public IActionResult GetCache()
  27. {
  28. return SUCCESS(1);
  29. }
  30. /// <summary>
  31. /// 获取服务器信息
  32. /// </summary>
  33. /// <returns></returns>
  34. [HttpGet("monitor/server")]
  35. //[AllowAnonymous]
  36. public IActionResult Server()
  37. {
  38. //核心数
  39. int cpuNum = Environment.ProcessorCount;
  40. string computerName = Environment.MachineName;
  41. string osName = RuntimeInformation.OSDescription;
  42. string osArch = RuntimeInformation.OSArchitecture.ToString();
  43. string version = RuntimeInformation.FrameworkDescription;
  44. string appRAM = ((double)Process.GetCurrentProcess().WorkingSet64 / 1048576).ToString("N2") + " MB";
  45. string startTime = Process.GetCurrentProcess().StartTime.ToString("yyyy-MM-dd HH:mm:ss");
  46. string sysRunTime = ComputerHelper.GetRunTime();
  47. string serverIP = Request.HttpContext.Connection.LocalIpAddress.MapToIPv4().ToString() + ":" + Request.HttpContext.Connection.LocalPort;//获取服务器IP
  48. var programStartTime = Process.GetCurrentProcess().StartTime;
  49. string programRunTime = DateTimeHelper.FormatTime((DateTime.Now - programStartTime).TotalMilliseconds.ToString().Split('.')[0].ParseToLong());
  50. var data = new
  51. {
  52. cpu = ComputerHelper.GetComputerInfo(),
  53. disk = ComputerHelper.GetDiskInfos(),
  54. sys = new { cpuNum, computerName, osName, osArch, serverIP, runTime = sysRunTime },
  55. app = new
  56. {
  57. name = HostEnvironment.EnvironmentName,
  58. rootPath = HostEnvironment.ContentRootPath,
  59. webRootPath = HostEnvironment.WebRootPath,
  60. version,
  61. appRAM,
  62. startTime,
  63. runTime = programRunTime,
  64. host = serverIP
  65. },
  66. };
  67. return SUCCESS(data);
  68. }
  69. }
  70. }