Temperatur, CPU Auslastung Protokollieren

Status
Für weitere Antworten geschlossen.

Hannibal7777

Benutzer
Mitglied seit
24. Jan 2010
Beiträge
180
Punkte für Reaktionen
0
Punkte
0
Hallo,

möchte gern ein Skript schreiben um die Temperatur der HDDs und CPU Auslastung etc zu Protokollieren.
Habe leider nicht viel/eigentlich keine, Erfahrung mit Skripten unter Linux, hab bis her vergleichbares über VBS und Batch und evtl. VB.Net gemacht.
Hatte mir das so vorgestellt, das Skript soll alle z.B. 2 Minuten die Temperatur in Form einer z.B. CSV Datei (in Form von 23.02.2010;13:35;64,30%;39°C;41°C) speichern, so dass ich diese mit Excel verknüpfen kann und darin dann das Diagramm erstellen kann.
Vielleicht wäre die ganze Auswertung ja auch mit html möglich, aber denke das würde wesentlich mehr Arbeit machen.
Wenn jemand eine andre Idee hat, ich bin für alles offen.

Hierzu ein paar Fragen:
Sind Cronjobs etwas das wie geplante Tasks und würden diese sich dafür eignen?
Wie lautet die Syntax bei solche Skripten bzw. in welcher Sprache werden diese geschrieben?
Wo muss ich ein solches Skript ablegen?

Das einzige was ich bis jetzt gemacht habe ist das S99mount.sh Skript,
brauche ich für das Skript hier auch das Shebang #!, wenn ja mit welchem Argument?
Das Datum und die Zeit könnte ich ungefähr so speichern

echo `date "+%d.%m.%Y;%H:%M:%S"` >> /volume1/cputemp.log

aber mit welchem Befehl kann ich CPU Auslastung und die Temperatur der Festplatten abfragen?

Schon mal Danke

Gruß
Hannibal
 

Matthieu

Benutzer
Mitglied seit
03. Nov 2008
Beiträge
13.222
Punkte für Reaktionen
88
Punkte
344
Würde mich auch mal interessieren ...
Bei einem Webserver nicht uninteressant, solche Daten ...

MfG Matthieu
 

Hannibal7777

Benutzer
Mitglied seit
24. Jan 2010
Beiträge
180
Punkte für Reaktionen
0
Punkte
0
Keiner der Coder anwesend?

Habe mal versucht unter /usr/syno/synoman/webman die einzelnen Dateien des DSM anzusehen, weil hier ja auch die Temperatur uns CPU Auslastung angezeigt wird, leider ohne Erfolg, weiß nicht wie ich die .cgi Dateien sinnvoll auslesen kann.

@itari:
Wird die Temperatur und CPU Auslastung im Admin Tool auch irgendwo angezeigt, wenn ja woher sind diese Daten ausgelesen.

Gruß
Hannibal
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.160
Punkte für Reaktionen
407
Punkte
393
Hallo,
CPU Auslastung kannst Du z.B. aus top extrahieren und Festplattentemp. aus smartctl.

Gruß Götz
 

Hannibal7777

Benutzer
Mitglied seit
24. Jan 2010
Beiträge
180
Punkte für Reaktionen
0
Punkte
0
Ok wie kann ich etwas auf top bzw. smartctl extrahieren?

Von smartctl bekommen egal was ich versuche immer das hier zurück

Rich (BBCode):
smartctl version 5.38 [armle-unknown-linux-gnu] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

WARNING - NO DEVICE FOUND ON 3WARE CONTROLLER (disk 2)
Note: /dev/sdX many need to be replaced with /dev/tweN or /dev/twaN
Smartctl: Device Read Identity Failed (not an ATA/ATAPI device)

A mandatory SMART command failed: exiting. To continue, add one or more '-T permissive' options.

Wenn ich hieraus etwas extrahiere ist dies dann für alle Systeme/Festplatte übertragbar?
Wie gesagt hab nicht so viel Erfahrung auf der Konsole bzw. beim Skript schreiben.

Gruß
Hannibal
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Probiere mal

Rich (BBCode):
/usr/syno/bin/smartctl -d marvell -A /dev/sda | awk '/^194/{print $10}'

Itari
 

Hannibal7777

Benutzer
Mitglied seit
24. Jan 2010
Beiträge
180
Punkte für Reaktionen
0
Punkte
0
Keine Rückmeldung von der Konsole

Rich (BBCode):
DS210j> /usr/syno/bin/smartctl -d marvell -A /dev/sda | awk '/^194/{print $10}'
35
Ds210j>

Gruß
Hannibal
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Keine Rückmeldung von der Konsole

Rich (BBCode):
DS210j> /usr/syno/bin/smartctl -d marvell -A /dev/sda | awk '/^194/{print $10}'
35
Ds210j>

Gruß
Hannibal

35 ist die 35° C, also die Temperatur der Platte
 

Hannibal7777

Benutzer
Mitglied seit
24. Jan 2010
Beiträge
180
Punkte für Reaktionen
0
Punkte
0
oO wo kommt die 35 her? Hab ich die gepostet?

Rich (BBCode):
DS210j> /usr/syno/bin/smartctl -d marvell -A /dev/sda | awk '/^194/{print $10}'
DS210j>

also ich bekomme wirklich nichts zurück.
Komm mir gerade verwirrt vor...
Außerdem hab ich ja 2 Festplatten, gibt sda die erste Festplatte an?

Gruß
Hannibal
 

Hannibal7777

Benutzer
Mitglied seit
24. Jan 2010
Beiträge
180
Punkte für Reaktionen
0
Punkte
0
Ok, nachdem hierzu noch niemand etwas geschrieben hat hab ich einfach mal probiert und siehe da es funktioniert

Habe in die crontab Datei folgendes eingetragen:
Rich (BBCode):
*/5	*	*	*	*	root	/volume1/cputemp.sh

und dazu natürlich die Datei cputemp.sh angelegt mit den Inhalt

Rich (BBCode):
echo `date "+%d.%m.%Y;%H:%M:%S"` >> /volume1/cputemp.log

das funktioniert schon mal ganz gut, das Datum und die Uhrzeit wird eingetragen.

Fehlen noch 3 Sachen:
  • Die Festplatten bzw. die Systemtemperatur, wie gesagt smartctl und der Befehl von itari spuckt nicht wirklich was aus.
  • Die CPU Auslastung, habe mit top herum experimentiert aber es öffnet sich immer nur die Art von "Taskmanager", mit den einzelnen Prozessen und den einzelnen Auslastungen, wüsste nicht wie ich hier die gesamte Auslastung herausbekomme

  • Wollte die Werte jeden Tag in eine neue Datei schreiben, aber leider funktioniert
    Rich (BBCode):
    echo `date "+%d.%m.%Y;%H:%M:%S"` >> /volume1/`date`.log
    nicht um der log Datei jeden Tag den Namen des aktuellen Datums zu geben

    Werde weiter probieren, aber vielleicht weiß ja jemand noch etwas

    Gruß
    Hannibal
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.160
Punkte für Reaktionen
407
Punkte
393
Hallo,
stimmt, busybox-top zeigt es nicht an
Rich (BBCode):
Mem: 61168K used, 1420K free, 0K shrd, 1480K buff, 19392K cached
Load average: 0.54, 0.44, 0.42    (State: S=sleeping R=running, W=waiting)
top aus dem ipkg procps ist gesprächiger
Rich (BBCode):
Tasks:  83 total,   1 running,  82 sleeping,   0 stopped,   0 zombie
Cpu(s):  19.3% user,   2.3% system,   0.0% nice,  78.4% idle
Mem:     62588k total,    32180k used,    30408k free,     1300k buffers
Swap:   522104k total,    44516k used,   477588k free,    17308k cached
eine andere Möglichkeit ist z.B. hier beschrieben.

Gruß Götz
 

Hannibal7777

Benutzer
Mitglied seit
24. Jan 2010
Beiträge
180
Punkte für Reaktionen
0
Punkte
0
ok habe gerade procps installiert, werde morgen mal versuchen die gewünschte "Zahl" so zu bekommen.
Die Lösung auf der verlinkten Seite verstehe ich nicht wirklich
das ganze mit der /proc/stat zu realisieren
und mit der Rechnerei aus dem Beitrag kann ich auch nicht wirklich was anfangen.

Noch eine andere Frage, die Festplatten gehen logischerweise nicht mehr in den Ruhezustand wenn ich dauernd auf die Platte schreibe.
Komm ich an irgentwelche Verzeichnisse aus dem Flash Speicher ran um das Skript und die log Datei dort hin abzulegen.
Theoretisch dürften die Festplatten ja dann nicht mehr aufwachen oder?

Gruß
Hannibal
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Noch eine andere Frage, die Festplatten gehen logischerweise nicht mehr in den Ruhezustand wenn ich dauernd auf die Platte schreibe.
Komm ich an irgentwelche Verzeichnisse aus dem Flash Speicher ran um das Skript und die log Datei dort hin abzulegen.
Theoretisch dürften die Festplatten ja dann nicht mehr aufwachen oder?

Du kannst in /tmp schreiben. Das tmpfs ist ja im RAM.

Allerdings werden die Platten ja bereits durch die Temperaturabfrage immer wieder daran gehindert in den Ruhezustand zu gelangen. Es ist ja nicht das Schreiben, sondern die Verbindung zum Platten-Controller entscheidend.

Ich denke, dass es nur ein entweder/oder geben wird.

Itari
 

Hannibal7777

Benutzer
Mitglied seit
24. Jan 2010
Beiträge
180
Punkte für Reaktionen
0
Punkte
0
Allerdings werden die Platten ja bereits durch die Temperaturabfrage immer wieder daran gehindert in den Ruhezustand zu gelangen. Es ist ja nicht das Schreiben, sondern die Verbindung zum Platten-Controller entscheidend.

Dacht ich mir schon fast, außerdem ist die crontab Datei in etc, von dem her wird sowieso auf die Festplatte zugegriffen.

Bin gerade auf der suche nach einem passenden ipkg Packet das mir solche Werte anzeigt...

Gruß
Hannibal
 

Hannibal7777

Benutzer
Mitglied seit
24. Jan 2010
Beiträge
180
Punkte für Reaktionen
0
Punkte
0
Hi itari,

Rich (BBCode):
/usr/syno/bin/smartctl -d marvell -A /dev/sda | awk '/^194/{print $10}'
hat ja nichts zurückgegeben, nach einigen Versuchen funktioniert es jetzt mit der Änderung in:
Rich (BBCode):
/usr/syno/bin/smartctl -d marvell -A /dev/sda1 | awk '/^194/{print $10}'
Also
Was macht das für eine Unterschied, kann es sein, dass dies am Raid liegt?
Nun gut bis jetzt schaut mein Skript also folgendermaßen aus

Rich (BBCode):
echo `date "+%d.%m.%Y;%H:%M:%S;"` `/usr/syno/bin/smartctl -d marvell -A /dev/sda1 | awk '/^194/{print $10}'` ";" `/usr/syno/bin/smartctl -d marvell -A /dev/sdb1 | awk '/^194/{print $10}'` >> /etc/cputemp.csv

und liefert brav das Datum; Uhrzeit; HDD1 Temp; HDD2 Temp
Fehlt also nur noch die CPU Auslastung.

Gruß
Hannibal
 

Matthieu

Benutzer
Mitglied seit
03. Nov 2008
Beiträge
13.222
Punkte für Reaktionen
88
Punkte
344
Über "uptime" bekommst du ganz hinten die Auslastung momentan, vor 5min und vor 15min.

MfG Matthieu
 

Hannibal7777

Benutzer
Mitglied seit
24. Jan 2010
Beiträge
180
Punkte für Reaktionen
0
Punkte
0
Vielen Dank,

Rich (BBCode):
uptime | awk '{print $8}'

funktioniert perfekt, das ist genau das was ich gesucht habe.
Werde das ganze jetzt mal alles zusammenbauen, evtl. ein kleines Makro für Excel, dann meld ich mich nochmal

Gruß
Hannibal
 

Hannibal7777

Benutzer
Mitglied seit
24. Jan 2010
Beiträge
180
Punkte für Reaktionen
0
Punkte
0
Sicher das es sich hierbei um die CPU auslastung handelt?
Hab mal ein bisschen was an Prozessen angeleiert,
uptime zeigt folgendest an
Rich (BBCode):
 21:18:15 up 14:37,  1 user,  load average: 5.34, 4.36, 3.06
während der DSM über 30% allein schon für das Kopieren von einem USB-Stick anzeigt.

Gruß
Hannibal
 

Matthieu

Benutzer
Mitglied seit
03. Nov 2008
Beiträge
13.222
Punkte für Reaktionen
88
Punkte
344
Vermutlich zeigt er nur das an, was der eingeloggte (SSH) Nutzer an Last produziert ...

MfG Matthieu
 

goetz

Super-Moderator
Teammitglied
Sehr erfahren
Mitglied seit
18. Mrz 2009
Beiträge
14.160
Punkte für Reaktionen
407
Punkte
393
Hallo,
entweder wie bereits geschrieben über ipkg top oder selbst rechnen.

Gruß Götz
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat