Ein Modul zur Erfassen von diversen RPi/Linux-Statistiken (SYSMON)

Begonnen von hexenmeister, 06 Dezember 2013, 17:44:38

Vorheriges Thema - Nächstes Thema

anfichtn

Zitat von: druschba am 02 April 2015, 10:18:57
Hallo,

ich nutze fhem auf einem banana pi mit bananian. SYSMON läuft soweit auch.

Jedoch wird nicht die richtige Temperatur (cpu_temp) angezeigt.
Angezeigt wird die Tempearatur der PMU (power amanagement unit), es sollte natürlich die Temperatur der CPU sein.
Diese ist mit dem befehl soctemp abrufbar. Der output sieht dann folgendermaßen aus:

# soctemp
approx. 32.9°C


Evtl. ist es ja möglich das einzubauen.

Grüße

druschba
Bekommst du immer den korrekten Wert?
FHEM 5.6 + Pilight + Pimatic auf BananaPro mit Bananian 15.04 r01
FB7270 v2 & FB7412
LDA382A mit WifiLight
MAX-Cube (aculfw), 6 Fensterkonstakte, 5 HK-Thermostate, 3 WandThermostate
[...]

hexenmeister

Neue Version wird folgendes unterstützen:
- neu Reading: cpu_core_count => Anzahl der CPU-Kerne
- neues Attribut: exclude => Nimmt Kommaseparierte Liste der Datenbereiche an, die nicht Abgefragt werden sollen.
   Mögliche Werte:
    user-defined (s. user-defined und user-fn), cpucount, uptime, fhemuptime,
    loadavg, cputemp, cpufreq, bogomips, diskstat, cpustat, ramswap, filesystem, network,
    fbwlan, fbnightctrl, fbnewmessages, fbdecttemp, fbversion, fbdsl, powerinfo

Blackmore

#857
Jetzt muss ich auch mal nachfragen:

Ich hab einen Intel Nuc mit Fhem, darauf läuft sysmon soweit gut...

Jetzt wollte ich von meinem NAS auch Daten erhalten... Dazu habe ich folgendes gemacht:

define NAS_sysmon SYSMON telnet:fhem@192.168.178.26:23 1 1 1 10
Blabla

Auf dem NAS (Intel Server, Linux Debian) habe ich einen User namens fhem erstellt...


a) set NAS_sysmon password <passwort>  bringt mir einen Fehler (grad ist fhem abgeschmiert)
b) scheint mir fhem nicht das NAS zu loggen, sondern den Nuc, jetzt halt zweimal...

Was muss ich auf dem NAS installieren, damit fhem auslesen kann...
Wie kann ich dem FHEM beibringen, das er das NAS auslesen soll???
update check && update gerade gemacht...

Viele Infos findet man - wohl weil es so neu ist - leider nicht...

Danke für Eure schnelle Hilfe ;)

Gruß Blacky


::Edit::

a) Passwort setzen ging jetzt - hatte die Seite nicht aktualisiert, und das 'alte' Fhem kann das set passwort nicht
b) user fhem war schon ok, aber es fehlte der telnetd - den musste ich noch nachinstallieren, jetzt gehts...
Nur telnet bringt mir da irgendwie nix ;)))

Könnte theoretisch gelöscht werden - erledigt - von meiner Seite aus....

snx

Zum Modul habe ich folgedne Vorschläge/Anmerkungen/Probleme:


  • Sobald ich SYSMON_getValues verwendet kommt:
Can't use an undefined value as a HASH reference at ./FHEM/42_SYSMON.pm line 1350

  • Möglicherweise liegts nicht an diesem Modul, aber die fhem uptime scheint nicht immer zu stimmen. Habe grade eine uptime(system): 1d 35m und uptime(fhem): 1d 59m :-/
  • Die IDLE-Time sollte im Reading durch die Anzahl der Kerne geteilt werden (machst du ja in der %-Berechnung auch). Es sieht seltsam aus, wenn ein System 2 Tage läuft und 7,x Tage IDLE ist ;)
  • Die Anzahl der Kerne könnte man als zusätzliches Reading aufnehmen.
  • Ebenso z.B. Modelname des Prozessors
qgrep -i -m1 '^model name' /proc/cpuinfo | cut -c 14-
  • und Geschwindigkeit der Netwerk-Verbindung
cat /sys/class/net/eth0/speed
  • Zusätzliche Readings: min-, max- und avg-Werte zu diversen Readings (CPU freq, CPU load, MEM, SWAP, ..) über die Zeit, die die Modulinstanz logt... Warum? Darum:

Zur weblink-Darstellung habe ich mit folgendes gebaut:
(http://snx.in/upls/shot.jpg)
(Bei Interesse könnte man sowas ja auch ins Modul integrieren, Code hier).
Hier würde ich allerdings auch gerne min-, max- und avg-Werte als Linie in den Balken anzeigen.

hexenmeister

Coole Visualisierung! Vielen Dank!

Die Ursache für den Uptime-Fehler ist mir nicht klar. Kann bei mir auch nicht nachstellen. Was Zeigt in solchen Fällen uptime im System?
procinfo sieht bei mir anders aus:
alex@cubie ~ $ cat /proc/cpuinfo
Processor       : ARMv7 Processor rev 4 (v7l)
processor       : 0
BogoMIPS        : 957.64

processor       : 1
BogoMIPS        : 957.64

Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 4

Hardware        : sun7i
Revision        : 0000
Serial          : 0000000000000000
Chipid          : 16516649-80485072-56534848-0480f885

Also funktioniert grep mit "model name" nicht. Wie ist die Ausgabe an Deiner Maschine?

Die min/max/avg-Werte ist eine ganz schöne Fleißarbeit. Ich werde nach und nach einbauen.

Grüße,

Alexander

snx

Uptime ist korrekt, wie auf der console halt (und dieser wert kommt hin. Die fhem uptime ist die fehlerhafte..

Meine cpuinfo sieht folgendermaßen aus (RasPi2):
snx@snxpi ~ $ cat /proc/cpuinfo
processor       : 0
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 38.40
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

processor       : 1
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 38.40
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

processor       : 2
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 38.40
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

processor       : 3
model name      : ARMv7 Processor rev 5 (v7l)
BogoMIPS        : 38.40
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xc07
CPU revision    : 5

Hardware        : BCM2709
Revision        : a01041
Serial          : 00000000fc049082

hexenmeister

FHEM-Uptime bekomme ich indem ich aus der internen FHEM-Variable die Startzeit nehme und die aktuelle Zeit abziehe. Wann war das? Kann das mit der Zeitumstellung zu tu haben?

hexenmeister

Nach dem Update morgen gibt es eine neue Reading 'cpu_model_name'.

snx

Zitat von: hexenmeister am 06 April 2015, 18:51:52
FHEM-Uptime bekomme ich indem ich aus der internen FHEM-Variable die Startzeit nehme und die aktuelle Zeit abziehe. Wann war das? Kann das mit der Zeitumstellung zu tu haben?
Ja, hab gesehen, dass du nur die fhem variable nimmst.
Es mag natürlich sein, dass die Zeitumstellung im Spiel war, allerdings die Differenz war zwischen 20 und 30 Minuten, bei ned Stunde könnt ichs mir eher vorstellen ;)

Aber ist ja auch nicht so schlimm, is mir halt nur das eine mal aufgefallen, ansonsten passt es immer...

Bjoern2480

Hallo zusammen

habe ein kleines Problem mit diesem Modul.
FHEM läuft bei mir auf einem RaspberryPi. Ich kann per SYSMON die Daten vom RaspberryPi und meiner Fritzbox auslesen. Alles ohne Probleme.

Jetzt mmöchte ich noch die Daten von meiner Synology ermitteln. Hier kommt immer die Fehlermeldung: "Telnet error while waiting for command prompt: pattern match timed-out"

Das Passwort habe ich über die WebOberfläche im "mySysMonSynoPlay" gesetzt. Was muss ich ändern, damit ich die Synology auslesen kann?
Der Prompt sieht laut direktem Telnet wie folgt aus: "SynoPlay> "


Hier meine Config-Daten:
define mySysMonSynoPlay SYSMON telnet:bjoern@192.168.150.2:23 1 1 1 1
attr mySysMonSynoPlay telnet-login-prompt-regx SynoPlay>
# attr mySysMonSynoPlay filesystems fs_boot:/boot,fs_root:/:Root,fs_usb1:/media/usb1:USB-Stick
# attr mySysMonSynoPlay network-interfaces eth0:eth0:Ethernet
# attr mySysMonSynoPlay telnet-login-prompt-regx /[:$%#>] \z/n
# attr mySysMonSynoPlay telnet-prompt-regx /[:$%#>] \z/n

Log-Datei:
2015.04.07 12:41:24 5: SYSMON : Initialize.121
2015.04.07 12:41:24 5: SYSMON mySysMonSynoPlay: Define.142 mySysMonSynoPlay SYSMON telnet:bjoern@192.168.150.2:23 1 1 1 1
2015.04.07 12:41:24 5: SYSMON mySysMonSynoPlay: Exec.3729 mySysMonSynoPlay: Open single telnet connection
2015.04.07 12:41:24 5: SYSMON mySysMonSynoPlay: readPassword.3506 Read password from file
2015.04.07 12:41:24 5: SYSMON mySysMonSynoPlay: Open_Connection.3600 Open Telnet connection to 192.168.150.2:23
2015.04.07 12:41:24 5: SYSMON mySysMonSynoPlay: Open_Connection.3614 Wait for user or password prompt.
2015.04.07 12:41:24 5: SYSMON mySysMonSynoPlay: Open_Connection.3633 Entering user name
2015.04.07 12:41:24 5: SYSMON mySysMonSynoPlay: Open_Connection.3636 Wait for password prompt
2015.04.07 12:41:24 5: SYSMON mySysMonSynoPlay: Open_Connection.3651 Entering password
2015.04.07 12:41:24 5: SYSMON mySysMonSynoPlay: Open_Connection.3654 Wait for command prompt
2015.04.07 12:41:35 2: SYSMON mySysMonSynoPlay: Open_Connection.3660 Telnet error while waiting for command prompt: pattern match timed-out
2015.04.07 12:41:35 5: SYSMON mySysMonSynoPlay: Exec_Remote.3821 Execute '[ -f /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq ] && echo 1 || echo 0'
2015.04.07 12:41:35 5: SYSMON mySysMonSynoPlay: Exec.3768 Result undef
2015.04.07 12:41:35 5: SYSMON mySysMonSynoPlay: Exec_Remote.3821 Execute '[ -f /sys/devices/system/cpu/cpu1/cpufreq/scaling_cur_freq ] && echo 1 || echo 0'
2015.04.07 12:41:36 5: SYSMON mySysMonSynoPlay: Exec.3768 Result undef

hexenmeister

Zitat von: snx am 07 April 2015, 19:04:17
Es mag natürlich sein, dass die Zeitumstellung im Spiel war, allerdings die Differenz war zwischen 20 und 30 Minuten, bei ned Stunde könnt ichs mir eher vorstellen ;)
Doch, das könnte u.U. schon sein. Wenn z.B. FHEM halbe Stunde nach dem Start neugestartet worden wäre. Dann noch Stunde drauf... Aber ich gestehe, ich weiß es nicht.

hexenmeister

Hallo Bjoern,

ich habe auch immer meine Probleme mit dem Telnet-Prompt. Kann auch leider bei mir nicht nachstellen. Hast Du schon so etwas versucht:
SynoPlay>\s*$|Login failed.


Bjoern2480

Hallo Hexenmeister

danke für deine Unterstützung


ist es möglich dass das Attribut "telnet-login-prompt-regx" nicht angenommen wird?
wenn ich in Zeile 3667 die folgende Zeile einfüge:
   SYSMON_Log($hash, 5, "$name.telnet-login-prompt-regx = $tlogin_prompt");
erscheint im Log immer der default-wert, und nicht derjenige, den ich beim Gerät hinterlegt habe.
   attr mySysMonSynoPlay telnet-login-prompt-regx (>|\$)\s*$|Login failed.

Wenn ich in Zeile 3665 fest beim regex das # durch > ersetze, verbindet er mich zur Synology. Allerdings hängt er sich dann halbwegs auf, da keiner der Pfade zu den einzelnen Werten (CPU-Temp, Frequenz, ...) auf der Synology so lautet wie in der SYSMON.pm hinterlegt ist.

Daher wird die Synology wohl erst funktionieren, wenn ein umfangreicher Implementierungsaufwand betrieben wird.


hexenmeister

Hm... bei mir funktioniert das Ersetzen von Prompt mit dem Attribut.
Probiere mal, ob die angehängte Version sich (ohne Attribut) verbinden kann.

Wegen der Pfade: wenn Du mir diese nennst, kann ich sie nach und nach einbauen.

Bjoern2480

Hi Hexenmeister

ich habe lediglich die folgende Zeile in der Config:
  define mySysMonSynoPlay SYSMON telnet:bjoern@192.168.150.2:23 5 5 5 10

Die Verbindung sieht soweit in Ordnung aus, allerdings ist FHEM so ausgelastet, dass der WebServer nichts mehr macht. Liegt wohl daran, dass die Synology die Pfade nicht kennt.

In der Log steht:

2015.04.08 00:17:41 5: SYSMON mySysMonSynoPlay: Define.143 mySysMonSynoPlay SYSMON telnet:admin@192.168.150.2:23 5 5 5 10
2015.04.08 00:17:41 5: SYSMON mySysMonSynoPlay: Exec.3739 mySysMonSynoPlay: Open single telnet connection
2015.04.08 00:17:41 5: SYSMON mySysMonSynoPlay: readPassword.3516 Read password from file
2015.04.08 00:17:41 5: SYSMON mySysMonSynoPlay: Open_Connection.3610 Open Telnet connection to 192.168.150.2:23
2015.04.08 00:17:41 5: SYSMON mySysMonSynoPlay: Open_Connection.3624 Wait for user or password prompt.
2015.04.08 00:17:41 5: SYSMON mySysMonSynoPlay: Open_Connection.3643 Entering user name
2015.04.08 00:17:41 5: SYSMON mySysMonSynoPlay: Open_Connection.3646 Wait for password prompt
2015.04.08 00:17:41 5: SYSMON mySysMonSynoPlay: Open_Connection.3661 Entering password
2015.04.08 00:17:41 5: SYSMON mySysMonSynoPlay: Open_Connection.3664 Wait for command prompt
2015.04.08 00:17:41 5: SYSMON mySysMonSynoPlay: Exec_Remote.3831 Execute ''
2015.04.08 00:23:12 5: SYSMON mySysMonSynoPlay: Exec_Remote.3831 Execute '[ -f /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq ] && echo 1 || echo 0'
2015.04.08 00:23:24 5: SYSMON mySysMonSynoPlay: Exec.3751 mySysMonSynoPlay: Close single telnet connection
2015.04.08 00:23:24 5: SYSMON mySysMonSynoPlay: Close_Connection.3713 Close Telnet connection
2015.04.08 00:23:24 5: SYSMON mySysMonSynoPlay: Exec.3778 Result undef
2015.04.08 00:23:24 5: SYSMON mySysMonSynoPlay: Exec.3739 mySysMonSynoPlay: Open single telnet connection
2015.04.08 00:23:24 5: SYSMON mySysMonSynoPlay: readPassword.3516 Read password from file
2015.04.08 00:23:24 5: SYSMON mySysMonSynoPlay: Open_Connection.3610 Open Telnet connection to 192.168.150.2:23
2015.04.08 00:23:24 5: SYSMON mySysMonSynoPlay: Open_Connection.3624 Wait for user or password prompt.
2015.04.08 00:23:24 5: SYSMON mySysMonSynoPlay: Open_Connection.3643 Entering user name
2015.04.08 00:23:24 5: SYSMON mySysMonSynoPlay: Open_Connection.3646 Wait for password prompt
2015.04.08 00:23:24 5: SYSMON mySysMonSynoPlay: Open_Connection.3661 Entering password
2015.04.08 00:23:24 5: SYSMON mySysMonSynoPlay: Open_Connection.3664 Wait for command prompt
2015.04.08 00:23:24 5: SYSMON mySysMonSynoPlay: Exec_Remote.3831 Execute ''
2015.04.08 00:23:35 5: SYSMON mySysMonSynoPlay: Exec_Remote.3831 Execute '[ -f /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq ] && echo 1 || echo 0'
2015.04.08 00:23:46 5: SYSMON mySysMonSynoPlay: Exec.3751 mySysMonSynoPlay: Close single telnet connection
2015.04.08 00:23:46 5: SYSMON mySysMonSynoPlay: Close_Connection.3713 Close Telnet connection
2015.04.08 00:23:46 5: SYSMON mySysMonSynoPlay: Exec.3778 Result undef
2015.04.08 00:23:46 5: SYSMON mySysMonSynoPlay: Exec.3739 mySysMonSynoPlay: Open single telnet connection
2015.04.08 00:23:46 5: SYSMON mySysMonSynoPlay: readPassword.3516 Read password from file
2015.04.08 00:23:46 5: SYSMON mySysMonSynoPlay: Open_Connection.3610 Open Telnet connection to 192.168.150.2:23
2015.04.08 00:23:46 5: SYSMON mySysMonSynoPlay: Open_Connection.3624 Wait for user or password prompt.
2015.04.08 00:23:46 5: SYSMON mySysMonSynoPlay: Open_Connection.3643 Entering user name
2015.04.08 00:23:46 5: SYSMON mySysMonSynoPlay: Open_Connection.3646 Wait for password prompt
2015.04.08 00:23:46 5: SYSMON mySysMonSynoPlay: Open_Connection.3661 Entering password
2015.04.08 00:23:46 5: SYSMON mySysMonSynoPlay: Open_Connection.3664 Wait for command prompt
2015.04.08 00:23:47 5: SYSMON mySysMonSynoPlay: Exec_Remote.3831 Execute ''
2015.04.08 00:23:58 5: SYSMON mySysMonSynoPlay: Exec_Remote.3831 Execute '[ -f /sys/devices/system/cpu/cpu1/cpufreq/scaling_cur_freq ] && echo 1 || echo 0'
2015.04.08 00:24:09 5: SYSMON mySysMonSynoPlay: Exec.3751 mySysMonSynoPlay: Close single telnet connection
2015.04.08 00:24:09 5: SYSMON mySysMonSynoPlay: Close_Connection.3713 Close Telnet connection
2015.04.08 00:24:09 5: SYSMON mySysMonSynoPlay: Exec.3778 Result undef
2015.04.08 00:24:09 5: SYSMON mySysMonSynoPlay: Exec.3739 mySysMonSynoPlay: Open single telnet connection
2015.04.08 00:24:09 5: SYSMON mySysMonSynoPlay: readPassword.3516 Read password from file
2015.04.08 00:24:09 5: SYSMON mySysMonSynoPlay: Open_Connection.3610 Open Telnet connection to 192.168.150.2:23
2015.04.08 00:24:09 5: SYSMON mySysMonSynoPlay: Open_Connection.3624 Wait for user or password prompt.
2015.04.08 00:24:09 5: SYSMON mySysMonSynoPlay: Open_Connection.3643 Entering user name
2015.04.08 00:24:09 5: SYSMON mySysMonSynoPlay: Open_Connection.3646 Wait for password prompt
2015.04.08 00:24:09 5: SYSMON mySysMonSynoPlay: Open_Connection.3661 Entering password
2015.04.08 00:24:09 5: SYSMON mySysMonSynoPlay: Open_Connection.3664 Wait for command prompt
2015.04.08 00:24:09 5: SYSMON mySysMonSynoPlay: Exec_Remote.3831 Execute ''