public IActionResult Monitor() { try { MemoryMetrics memoryMetrics = _machineInfo.GetMetrics(); //var model = new SystemMonitor(); //string RAMTotal = ""; //if(memoryMetrics.RAMTotal> limit) //{ //} string ProcessMemory = ((Double)Process.GetCurrentProcess().WorkingSet64 / 1048576).ToString("N2") + " MB"; var result = new ResultAdaptDto(); result.data.Add("model", memoryMetrics); result.data.Add("cpuRate", _machineInfo.GetCPURate()); result.data.Add("runtime", _machineInfo.GetOSRunTime()); result.data.Add("ProcessMemory", ProcessMemory); return(Data(result)); } catch (Exception ex) { return(Error(ex.Message)); } }
private MemoryMetrics GetUnixMetrics() { var output = ""; var info = new ProcessStartInfo("free -m"); info.FileName = "/bin/bash"; info.Arguments = "-c \"free -m\""; info.RedirectStandardOutput = true; using (var process = Process.Start(info)) { output = process.StandardOutput.ReadToEnd(); Console.WriteLine(output); } var lines = output.Split("\n"); var memory = lines[1].Split(" ", StringSplitOptions.RemoveEmptyEntries); var metrics = new MemoryMetrics(); metrics.Total = long.Parse(memory[1]); metrics.Used = long.Parse(memory[2]); metrics.Free = long.Parse(memory[3]); return(metrics); }
private MemoryMetrics GetWindowsMetrics() { var output = ""; var info = new ProcessStartInfo(); info.FileName = "wmic"; info.Arguments = "OS get FreePhysicalMemory,TotalVisibleMemorySize /Value"; info.RedirectStandardOutput = true; using (var process = Process.Start(info)) { output = process.StandardOutput.ReadToEnd(); } var lines = output.Trim().Split("\n"); var freeMemoryParts = lines[0].Split("=", StringSplitOptions.RemoveEmptyEntries); var totalMemoryParts = lines[1].Split("=", StringSplitOptions.RemoveEmptyEntries); var metrics = new MemoryMetrics(); metrics.Total = long.Parse(totalMemoryParts[1]) * 1024; // Math.Round(/ 1024, 2); metrics.Free = long.Parse(freeMemoryParts[1]) * 1024; // Math.Round( / 1024, 2); metrics.Used = metrics.Total - metrics.Free; return(metrics); }
private static MemoryMetrics GetWindowsMetrics() { var output = string.Empty; var metrics = new MemoryMetrics(); var info = new ProcessStartInfo { FileName = "wmic", Arguments = "OS get FreePhysicalMemory,TotalVisibleMemorySize /Value", RedirectStandardOutput = true }; using (var process = Process.Start(info)) { if (process != null) { output = process.StandardOutput.ReadToEnd(); } } if (!string.IsNullOrEmpty(output)) { var lines = output.Trim().Split("\n"); var freeMemoryParts = lines[0].Split("=", StringSplitOptions.RemoveEmptyEntries); var totalMemoryParts = lines[1].Split("=", StringSplitOptions.RemoveEmptyEntries); metrics.Total = Math.Round(double.Parse(totalMemoryParts[1]) / 1024, 0); metrics.Free = Math.Round(double.Parse(freeMemoryParts[1]) / 1024, 0); metrics.Used = metrics.Total - metrics.Free; } return(metrics); }
public Task <HealthCheckResult> CheckHealthAsync( HealthCheckContext context, CancellationToken cancellationToken = default) { var metrics = new MemoryMetrics(); if (IsUnix) { var info = new ProcessStartInfo("free -m") { FileName = "/bin/bash", Arguments = "-c \"free -m\"", RedirectStandardOutput = true }; using var process = Process.Start(info); string output = process.StandardOutput.ReadToEnd(); var lines = output.Split("\n"); var memory = lines[1].Split(" ", StringSplitOptions.RemoveEmptyEntries); metrics.Total = double.Parse(memory[1]); metrics.Used = double.Parse(memory[2]); metrics.Free = double.Parse(memory[3]); } else { var info = new ProcessStartInfo { FileName = "wmic", Arguments = "OS get FreePhysicalMemory,TotalVisibleMemorySize /Value", RedirectStandardOutput = true }; using var process = Process.Start(info); string output = process.StandardOutput.ReadToEnd(); var lines = output.Trim().Split("\n"); var freeMemoryParts = lines[0].Split("=", StringSplitOptions.RemoveEmptyEntries); var totalMemoryParts = lines[1].Split("=", StringSplitOptions.RemoveEmptyEntries); metrics.Total = Math.Round(double.Parse(totalMemoryParts[1]) / 1024, 0); metrics.Free = Math.Round(double.Parse(freeMemoryParts[1]) / 1024, 0); metrics.Used = metrics.Total - metrics.Free; } if (metrics.Free <= _minimumFreeMegabytes) { return(Task.FromResult( new HealthCheckResult( context.Registration.FailureStatus, description: $"The system is low on memory: {metrics.Free} mb of {metrics.Total} mb"))); } return(Task.FromResult(HealthCheckResult.Healthy(description: $"Free megabytes in memory: {metrics.Free} mb of {metrics.Total} mb"))); }
/// <summary> /// 获取内存信息 /// </summary> /// <returns></returns> private static MemoryMetrics GetMemoryMetrics() { if (_osMetrics.IsUnix) { return(GetUnixMetrics()); } return(GetWindowsMetrics()); MemoryMetrics GetWindowsMetrics() { string output = ShellHelper.Cmd("wmic", "OS get FreePhysicalMemory,TotalVisibleMemorySize /Value"); var lines = output.Trim().Split("\n"); var freeMemoryParts = lines[0].Split("=", StringSplitOptions.RemoveEmptyEntries); var totalMemoryParts = lines[1].Split("=", StringSplitOptions.RemoveEmptyEntries); double total = Math.Round(double.Parse(totalMemoryParts[1]) / 1024, 0); double free = Math.Round(double.Parse(freeMemoryParts[1]) / 1024, 0); var metrics = new MemoryMetrics { Total = Math.Ceiling(total / 1024) + " GB", Free = Math.Ceiling(free / 1024) + " GB", Used = Math.Round((total - free) / total * 100, 0) + " %" }; return(metrics); } MemoryMetrics GetUnixMetrics() { string output = ShellHelper.Bash("free -m"); var lines = output.Split("\n"); var memory = lines[1].Split(" ", StringSplitOptions.RemoveEmptyEntries); double total = double.Parse(memory[1]); double used = double.Parse(memory[2]); var metrics = new MemoryMetrics { Total = Math.Ceiling(total / 1024) + " GB", Used = Math.Round((used / total) * 100, 0) + " %", Free = Math.Ceiling((total - used) / 1024) + " GB" }; return(metrics); } }
private MemoryMetrics GetMemoryMetrics() { var result = new MemoryMetrics(); var memoryInfoResult = Server.MetricCacher.GetValue <MemoryInfoResult>(MetricCacher.Keys.Server.MemoryInfoExtended); result.InstalledMemoryInMb = memoryInfoResult.InstalledMemory.GetValue(SizeUnit.Megabytes); result.PhysicalMemoryInMb = memoryInfoResult.TotalPhysicalMemory.GetValue(SizeUnit.Megabytes); result.AllocatedMemoryInMb = memoryInfoResult.WorkingSet.GetValue(SizeUnit.Megabytes); result.LowMemorySeverity = LowMemoryNotification.Instance.IsLowMemory(memoryInfoResult, new LowMemoryMonitor(), out _); result.TotalSwapSizeInMb = memoryInfoResult.TotalSwapSize.GetValue(SizeUnit.Megabytes); result.TotalSwapUsageInMb = memoryInfoResult.TotalSwapUsage.GetValue(SizeUnit.Megabytes); result.WorkingSetSwapUsageInMb = memoryInfoResult.WorkingSetSwapUsage.GetValue(SizeUnit.Megabytes); var totalDirtyInBytes = MemoryInformation.GetDirtyMemoryState().TotalDirtyInBytes; result.TotalDirtyInMb = new Size(totalDirtyInBytes, SizeUnit.Bytes).GetValue(SizeUnit.Megabytes); return(result); }
public Task <Message> GetAsync(MemoryMetrics memoryMetrics) { if (memoryMetrics == null) { throw new NullReferenceException(nameof(memoryMetrics)); } var test = this.config.Value.Test; var config = this.config.Value.Memory; this.logger.LogDebug($"Test={test} {config.Debug} {memoryMetrics.Debug}"); var usage = Math.Round(100 * memoryMetrics.Used / memoryMetrics.Total); var maxPercentageUsage = config.MaxPercentageUsage; var warning = usage > maxPercentageUsage; var send = config.ReportMode || warning || test; Message message = null; if (send) { var title = (warning ? "Warning - " : "") + "RAM Memory"; var nl = "".NL(); var lines = new List <string>(); if (warning) { lines.Add($"RAM memory {usage}% consumed!{nl}{nl}"); } lines.Add($"Total: {memoryMetrics.Total.BytesToString()}"); lines.Add($"Used: {memoryMetrics.Used.BytesToString()}"); lines.Add($"Free: {memoryMetrics.Free.BytesToString()}"); message = new Message { Title = title, Content = string.Join(nl, lines) }; } return(Task.FromResult(message)); }
private static MemoryMetrics GetUnixMetrics() { var output = string.Empty; var metrics = new MemoryMetrics(); var info = new ProcessStartInfo("free -m") { FileName = "bash", Arguments = "-c \"free -m\"", RedirectStandardOutput = true }; using (var process = Process.Start(info)) { if (process != null) { output = process.StandardOutput.ReadToEnd(); } Console.WriteLine(output); } if (!string.IsNullOrEmpty(output)) { var lines = output.Trim().Split("\n"); // Split Free Command Results var value2 = System.Text.RegularExpressions.Regex.Split(lines[1], @"\s\s+"); var freeMemory = value2.Length == 7 ? value2[3] : "0"; var totalMemory = value2.Length == 7 ? value2[1] : "0"; metrics.Total = Math.Round(double.Parse(totalMemory) / 1024, 0); metrics.Free = Math.Round(double.Parse(freeMemory) / 1024, 0); metrics.Used = metrics.Total - metrics.Free; } return(metrics); }
public void MemoryMetrics() { MemoryMetrics metrics = Runtime.GetMemoryMetrics(); Assert.True(metrics != null); }
public void Mock_GetMemoryMetrics(MemoryMetrics response) { this.Mock .Setup(x => x.GetMemoryMetricsAsync()) .ReturnsAsync(response); }
public SystemMetrics(CpuMetrics cpu, MemoryMetrics memory) { Cpu = cpu; Memory = memory; }