CPU-Load und andere Systemdaten per C# auslesen ?
-
Hallo zusammen,
ich möchte mir für meinen Server ein kleines Statistiktool zusammenbasteln und dafür in regelmäßigen Abständen Aufzeichnungen in eine SQL-Datenbank schreiben.
Ich suche jetzt eine halbwegs einfache Möglichkeit um Systeminformationen wie z.B. Festplattenplatz, CPU-Load, ev. diverse Temperaturen, Netzwerkauslastung, Livetime seit letztem Reset etc. auszulesen.
Gibt es da eventuelle eine C#-Klasse die das beherrscht ?
Danke
Gawan
-
System.IO.DriveInfo drive = new System.IO.DriveInfo("c"); long value = drive.AvailableFreeSpace;
Temparaturen geht nicht, da jedes Motherboard anders ist und mir wäre auch keine klasse in .Net bekannt die das kann.
Hier noch Netzwerkauslastung (nicht probiert)
Das mit Livetime (bin mir aber nicht sicher ob du das brauchst...)
-
Servus,
Stichwort: System.Diagnostics.PerformanceCounter
Dort findest du alles was dein Herz begehrt.... Einfach mal bei MSDN vorbeischauen...
http://msdn2.microsoft.com/de-de/library/system.diagnostics.performancecounter(VS.80).aspx
mfg
Hellsgore
-
Perfekt - das ist genau was ich gesucht habe !
Herzlichen Dank euch beiden !!
-
hiho,
ich hab jetzt ein Problem mit den Performance-Countern:
Ich möchte mir im Sekundentakt die Performance-Daten in eine Datenbank schreiben und hab mir dazu diverse Counter angelegt - unter anderem möchte ich einen Netzwerkauslastungs-Counter:
System.Diagnostics.PerformanceCounter network_total = new System.Diagnostics.PerformanceCounter("Netzwerkschnittstelle", "Gesamtanzahl Bytes/s", "_Total", "mainpc");
Leider gibt es kein "_Total" bei den Netzwerkcountern und d.h. ich müsste meine Netzwerkkarten mit der vollen Bezeichnunge, z.B. "NVIDIA nForce Networking Controller - SecuRemote Miniport" und das will ich echt nicht hard-codieren.
Kann ich das irgendwie umgehen ?
Danke
Gawan
-
Schau mal ob Dich System.Net.NetworkInformation.NetworkInterface (bzw. andere Klassen im gleichen Namensraum) weiterbringen.