コード例 #1
0
 public void Print(MetricsCollection metricsCollection, int top)
 {
     lock (sync)
     {
         PrintInternal(metricsCollection, top);
     }
 }
コード例 #2
0
        public void Save(MetricsCollection collection)
        {
            var serializedSize = Serializer.GetEstimatedSerializedSize(collection);

            using (var stream = MemoryStreamPool.Get(serializedSize))
            {
                Serializer.Serialize(collection, stream);
                targetStream.Write(BitConverter.GetBytes((int)stream.Value.Length), 0, sizeof(int));
                stream.Value.CopyToAsync(targetStream);
            }
        }
コード例 #3
0
 private static void PrintInternal(MetricsCollection collection, int top)
 {
     Console.Clear();
     Console.SetCursorPosition(0, 0);
     Console.WriteLine($"Machine: {collection.MachineName}, Uptime: {collection.Uptime}, Timestamp: {collection.Timestamp}");
     ConsoleTable.From(
         collection
         .ProcessMetricsCollection
         .OrderByDescending(x => x.WorkingSet)
         .Take(top)
         .Select(x => new ProcessMetricsModel(x)))
     .Write(Format.MarkDown);
 }
コード例 #4
0
        private void Collect()
        {
            var processes         = Process.GetProcesses();
            var processMetrics    = processes.Select(x => new ProcessMetrics(x)).ToArray();
            var upTime            = uptimeProvider.GetValue();
            var metricsCollection = new MetricsCollection
            {
                ProcessMetricsCollection = processMetrics,
                Timestamp   = DateTime.UtcNow,
                Uptime      = upTime,
                MachineName = Environment.MachineName
            };

            Task.Run(() => MetricsAvailable(this, metricsCollection));
        }