Exemplo n.º 1
0
        private void monitor(PerfMonLib perfMon)
        {
            int interval = 5; // seconds

            while (!_stopping)
            {
                PerfData data = perfMon.GetValues();

                DateTime now       = DateTime.Now;
                string   timestamp = now.ToString("yyyy-MM-ddTHH:mm:ss") + now.ToString("zzz").Replace(":", "");
                string   message   = "{"
                                     + CreateJsonItem("device", Environment.MachineName)
                                     + ","
                                     + CreateJsonItem("timestamp", timestamp)
                                     + ","
                                     + CreateJsonItem("cpu", data.ProcessorUtilization)
                                     + ","
                                     + CreateJsonItem("memory", data.AvailableMemoryMB)
                                     + ","
                                     + CreateJsonItem("process", data.ActiveProcess)
                                     + ","
                                     + CreateJsonItem("interval", interval)
                                     + "}";

                Console.WriteLine(message);

                string path = Path.Combine(_dataDir, timestamp.Replace("-", "").Replace(":", "") + ".json");
                File.WriteAllText(path, message, _encoding);

                Thread.Sleep(interval * 1000);
            }
        }
Exemplo n.º 2
0
        public PerfData GetValues()
        {
            double        processorUtilization;
            double        availableMemoryMB;
            StringBuilder activeProcess = new StringBuilder(512);

            if (!PdhGetValues(out processorUtilization, out availableMemoryMB, activeProcess, activeProcess.Capacity))
            {
                string error = PdhGetLastError();
                throw new Exception(error);
            }

            PerfData data = new PerfData();

            data.ProcessorUtilization = processorUtilization;
            data.AvailableMemoryMB    = (int)availableMemoryMB;
            if (activeProcess.ToString().Length > 0)
            {
                data.ActiveProcess = Path.GetFileName(activeProcess.ToString());
            }
            return(data);
        }