SysServerService.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. // 大名科技(天津)有限公司版权所有 电话:18020030720 QQ:515096995
  2. //
  3. // 此源代码遵循位于源代码树根目录中的 LICENSE 文件的许可证
  4. using AngleSharp.Html.Parser;
  5. using AspNetCoreRateLimit;
  6. using Lazy.Captcha.Core;
  7. using Magicodes.ExporterAndImporter.Pdf;
  8. using MailKit.Net.Smtp;
  9. using Nest;
  10. using OnceMi.AspNetCore.OSS;
  11. namespace Admin.NET.Core.Service;
  12. /// <summary>
  13. /// 系统服务器监控服务 💥
  14. /// </summary>
  15. [ApiDescriptionSettings(Order = 290)]
  16. public class SysServerService : IDynamicApiController, ITransient
  17. {
  18. public SysServerService()
  19. {
  20. }
  21. /// <summary>
  22. /// 获取服务器配置信息 🔖
  23. /// </summary>
  24. /// <returns></returns>
  25. [DisplayName("获取服务器配置信息")]
  26. public dynamic GetServerBase()
  27. {
  28. return new
  29. {
  30. HostName = Environment.MachineName, // 主机名称
  31. SystemOs = ComputerUtil.GetOSInfo(),//RuntimeInformation.OSDescription, // 操作系统
  32. OsArchitecture = Environment.OSVersion.Platform.ToString() + " " + RuntimeInformation.OSArchitecture.ToString(), // 系统架构
  33. ProcessorCount = Environment.ProcessorCount + " 核", // CPU核心数
  34. SysRunTime = ComputerUtil.GetRunTime(), // 系统运行时间
  35. RemoteIp = ComputerUtil.GetIpFromOnline(), // 外网地址
  36. LocalIp = App.HttpContext?.Connection?.LocalIpAddress.ToString(), // 本地地址
  37. FrameworkDescription = RuntimeInformation.FrameworkDescription, // NET框架
  38. Environment = App.HostEnvironment.IsDevelopment() ? "Development" : "Production",
  39. Wwwroot = App.WebHostEnvironment.WebRootPath, // 网站根目录
  40. Stage = App.HostEnvironment.IsStaging() ? "Stage环境" : "非Stage环境", // 是否Stage环境
  41. };
  42. }
  43. /// <summary>
  44. /// 获取服务器使用信息 🔖
  45. /// </summary>
  46. /// <returns></returns>
  47. [DisplayName("获取服务器使用信息")]
  48. public dynamic GetServerUsed()
  49. {
  50. var programStartTime = Process.GetCurrentProcess().StartTime;
  51. var totalMilliseconds = (DateTime.Now - programStartTime).TotalMilliseconds.ToString();
  52. var ts = totalMilliseconds.Contains('.') ? totalMilliseconds.Split('.')[0] : totalMilliseconds;
  53. var programRunTime = DateTimeUtil.FormatTime(ts.ParseToLong());
  54. var memoryMetrics = ComputerUtil.GetComputerInfo();
  55. return new
  56. {
  57. memoryMetrics.FreeRam, // 空闲内存
  58. memoryMetrics.UsedRam, // 已用内存
  59. memoryMetrics.TotalRam, // 总内存
  60. memoryMetrics.RamRate, // 内存使用率
  61. memoryMetrics.CpuRate, // Cpu使用率
  62. StartTime = programStartTime.ToString("yyyy-MM-dd HH:mm:ss"), // 服务启动时间
  63. RunTime = programRunTime, // 服务运行时间
  64. };
  65. }
  66. /// <summary>
  67. /// 获取服务器磁盘信息 🔖
  68. /// </summary>
  69. /// <returns></returns>
  70. [DisplayName("获取服务器磁盘信息")]
  71. public dynamic GetServerDisk()
  72. {
  73. return ComputerUtil.GetDiskInfos();
  74. }
  75. /// <summary>
  76. /// 获取框架主要程序集 🔖
  77. /// </summary>
  78. /// <returns></returns>
  79. [DisplayName("获取框架主要程序集")]
  80. public dynamic GetAssemblyList()
  81. {
  82. var furionAssembly = typeof(App).Assembly.GetName();
  83. var sqlSugarAssembly = typeof(ISqlSugarClient).Assembly.GetName();
  84. var yitIdAssembly = typeof(YitIdHelper).Assembly.GetName();
  85. var redisAssembly = typeof(Redis).Assembly.GetName();
  86. var jsonAssembly = typeof(NewtonsoftJsonMvcCoreBuilderExtensions).Assembly.GetName();
  87. var excelAssembly = typeof(IExcelImporter).Assembly.GetName();
  88. var pdfAssembly = typeof(IPdfExporter).Assembly.GetName();
  89. var captchaAssembly = typeof(ICaptcha).Assembly.GetName();
  90. var wechatApiAssembly = typeof(WechatApiClient).Assembly.GetName();
  91. var wechatTenpayAssembly = typeof(WechatTenpayClient).Assembly.GetName();
  92. var ossAssembly = typeof(IOSSServiceFactory).Assembly.GetName();
  93. var parserAssembly = typeof(Parser).Assembly.GetName();
  94. var nestAssembly = typeof(IElasticClient).Assembly.GetName();
  95. var limitAssembly = typeof(IpRateLimitMiddleware).Assembly.GetName();
  96. var htmlParserAssembly = typeof(HtmlParser).Assembly.GetName();
  97. var fluentEmailAssembly = typeof(SmtpClient).Assembly.GetName();
  98. return new[]
  99. {
  100. new { furionAssembly.Name, furionAssembly.Version },
  101. new { sqlSugarAssembly.Name, sqlSugarAssembly.Version },
  102. new { yitIdAssembly.Name, yitIdAssembly.Version },
  103. new { redisAssembly.Name, redisAssembly.Version },
  104. new { jsonAssembly.Name, jsonAssembly.Version },
  105. new { excelAssembly.Name, excelAssembly.Version },
  106. new { pdfAssembly.Name, pdfAssembly.Version },
  107. new { captchaAssembly.Name, captchaAssembly.Version },
  108. new { wechatApiAssembly.Name, wechatApiAssembly.Version },
  109. new { wechatTenpayAssembly.Name, wechatTenpayAssembly.Version },
  110. new { ossAssembly.Name, ossAssembly.Version },
  111. new { parserAssembly.Name, parserAssembly.Version },
  112. new { nestAssembly.Name, nestAssembly.Version },
  113. new { limitAssembly.Name, limitAssembly.Version },
  114. new { htmlParserAssembly.Name, htmlParserAssembly.Version },
  115. new { fluentEmailAssembly.Name, fluentEmailAssembly.Version },
  116. };
  117. }
  118. }