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

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

Vorheriges Thema - Nächstes Thema

TWART016

Zitat von: SabineT am 16 Juni 2017, 20:58:33
mach einfach mal am anderen Server df da siehst du dann, welche Dateisysteme gemounted sind. Die mit /dev/ am Zeilenanfang sind dann die, die sinnvollerweise vom SYSMON abgefragt werden sollten. Falls da nur eine einzige Partition im Einsatz ist wird dann auch nur die Zeile mit / am Ende vorhanden sein.
Zeilen mit udev oder tmpfs am Anfang sind eher uninteressant für SYSMOM.

Das kommt bei df

Dateisystem    1K-Blöcke Benutzt Verfügbar Verw% Eingehängt auf
udev             1004172       0   1004172    0% /dev
tmpfs             204836    6056    198780    3% /run
/dev/sda1       14317616 5222776   8344504   39% /
tmpfs            1024164       0   1024164    0% /dev/shm
tmpfs               5120       0      5120    0% /run/lock
tmpfs            1024164       0   1024164    0% /sys/fs/cgroup
tmpfs             204836       0    204836    0% /run/user/1000

Also ist nur /dev/sda1 interessant.

filesystems fs_root:/,fs_sda1:/dev/sda1
Aber auch dort erscheint nur not available

2017.06.16 22:37:12 5: SYSMON sysmon_FHEM: blockingFinish.1041 name|sysmon_FHEM|cpu_idle_stat|24.82 99.80 98.19|cpu0_temp|100.00|swap_used_stat|0.00 8.87 0.01|fhemuptime_text|0 days, 00 hours, 25 minutes|fs_root|Total: 13983 MB, Used: 5101 MB, 39 %, Available: 8149 MB at /|cpu1_temp|100.00|ens32_tx|27639868|idletime|8 0.19 %|ens32_speed|1000|cpu0_temp_avg|100.0|uptime_text|0 days, 01 hours, 17 minutes|starttime|1497640776|ram|Total: 2000.32 MB, Used: -1484.62 MB, -74.22 %, Free: 3192.70 MB|cpu1_temp_avg|100.0|stat_cpu_percent|0.73 0.00 0.50 98.75 0.00 0.00 0.03|cpu1_temp_stat|100.00 100.00 100.00|loadavg|0.05 0.03 0.00|ens32_ip|192.168.178.11|ens32|RX: 23.70 MB, TX: 26.36 MB, Total: 50.06 MB|fhemstarttime_text|16.06.2017 22:11:15|cpu_core_count|512|uptime|4656|fhemuptime|1557|idletime_text|0 days, 00 hours, 00 minutes (0.19 %)|ens32_diff|RX: 0.10 MB, TX: 0.08 MB, Total: 0.18 MB|stat_cpu|6749 53 2699 454887 79 0 144|swap|Total: 2046.00 MB, Used: 0.00 MB,  0.00 %, Free: 2046.00 MB|ens32_rx|24849379|fs_sda1|Total: 0 MB, Used: 0 MB, 0 %, Available: 0 MB at /dev/sda1 (not available)|ram_used_stat|-2728.20 -1023.36 -1485.91|cpu0_temp_stat|100.00 100.00 100.00|starttime_text|16.06.2017 21:19:36|stat_cpu_diff|22 0 15 2992 0 0 1|fhemstarttime|1497643875|stat_cpu_text|user: 0.73 %, nice: 0.00 %, sys: 0.50 %, idle: 98.75 %, io: 0.00 %, irq: 0.00 %, sirq: 0.03 %
for /dev/sda1
2017.06.16 22:37:12 5: SYSMON sysmon_FHEM: getFileSystemInfo.2626 analyse line /dev/sda1          13983    5101      8149   39% /

2017.06.16 22:37:12 5: SYSMON sysmon_FHEM: getFileSystemInfo.2607 recieved line0 Dateisystem    1M-Blöcke Benutzt Verfügbar Verw% Eingehängt auf
2017.06.16 22:37:12 5: SYSMON sysmon_FHEM: getFileSystemInfo.2590 recieved 2 lines
'
';
$VAR2 = '/dev/sda1          13983    5101      8149   39% /
';
2017.06.16 22:37:12 5: SYSMON sysmon_FHEM: Exec_Local.4141 Result '$VAR1 = 'Dateisystem    1M-Blöcke Benutzt Verfügbar Verw% Eingehängt auf
2017.06.16 22:37:12 5: SYSMON sysmon_FHEM: Exec_Local.4136 Execute 'df /dev/sda1 -m 2>/dev/null'
2017.06.16 22:37:12 5: SYSMON sysmon_FHEM: getFileSystemInfo.2585 exec df /dev/sda1 -m 2>/dev/null
2017.06.16 22:37:12 5: SYSMON sysmon_FHEM: getFileSystemInfo.2574 get fs_sda1:/dev/sda1



SabineT

Zitat von: TWART016 am 16 Juni 2017, 22:39:17
Also ist nur /dev/sda1 interessant.

filesystems fs_root:/,fs_sda1:/dev/sda1
Aber auch dort erscheint nur not available
Dann darfst du auch nur
filesystems fs_root:/
verwenden!
/dev/sda1 ist ja das fs_root und an / gemounted.

Spezialtrick

Zitat von: andies am 05 Juni 2017, 09:56:59
Dann gehen wir mal durch:

  • Hast Du ein Reading mit dem Eintrag loadavg <und dann drei Zahlen> 0.07 0.02 0.00? Wenn nein, dann wird es nicht erfasst. Die Erfassung wird über ein Attribut erfasst, event-on-update-reading
    cpu_temp,cpu_temp_avg,cpu_freq,wlan0_diff,loadavg,fs_.*,stat_cpu_percent
  • DbLog sollte das dann mitloggen, wenn es so definiert wurde: DEF ./db.conf (sysmon|Stromzaehler):.*
  • Zuletzt stellt sich die Frage der Anzeige. Da habe ich ja den Proxy dazwischen geschaltet. Ich hänge mal den Screenshot an, den ich erhalte, wenn ich zuerst DbLog aufrufe, dann unten die assoziierten wl_sysmon_load anklicke und dann die Grafik selbst sehe. Die lange Zeile, die im Screenshot nicht zu sehen ist, lautet
    DbLog:sysmon:loadavg:1:::$val=~s/[\d.]+\s([\d.]+)\s[\d.]+/$1/
    und sorgt dafür, dass nur der mittlere Eintrag abgebildet wird (das regeln die runden Klammern, die in der Mitte stehen).

Mir sind folgende Meldungen im Log aufgefallen:


2017.06.18 13:06:45 3: DbLog: Error in inline function: <:$val=~s/[\d.]+\s([\d.]+)\s[\d.]+/$1/>, Error: syntax error at (eval 37016) line 1, near ":"

2017.06.18 13:06:45 1: PERL WARNING: Argument "1.00 1.11 1.15" isn't numeric in sprintf at ./FHEM/98_SVG.pm line 2161.


Hast du die auch? Kann man die beheben?
FHEM - Debmatic - Zigbee2MQTT - Homekit

TWART016

Zitat von: TWART016 am 16 Juni 2017, 20:20:09
Ich habe nun die Keys erstellt. Sie wurde auch erfolgreich in den home Ordner des Benutzers auf dem anderen Server kopiert. Der Key steht in der Datei authorized_keys.

Auch der Login mit ssh tim@192.168.178.12 funktioniert.

Ich habe wegen meiner Anfrage einen neuen Thread erstellt.
https://forum.fhem.de/index.php/topic,73321.msg649632.html#msg649632

andies

Zitat von: Spezialtrick am 18 Juni 2017, 13:09:08
Mir sind folgende Meldungen im Log aufgefallen:


2017.06.18 13:06:45 3: DbLog: Error in inline function: <:$val=~s/[\d.]+\s([\d.]+)\s[\d.]+/$1/>, Error: syntax error at (eval 37016) line 1, near ":"

2017.06.18 13:06:45 1: PERL WARNING: Argument "1.00 1.11 1.15" isn't numeric in sprintf at ./FHEM/98_SVG.pm line 2161.


Hast du die auch? Kann man die beheben?
Zur zweiten kann ich sofort was sagen, das ist kompliziert und wiederum einfach: https://forum.fhem.de/index.php/topic,71464.msg629919.html#msg629919

Die erste besagt, dass dein Regex falsch ist. Probiere mal hier: https://regex101.com/
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Spezialtrick

Zitat von: andies am 18 Juni 2017, 15:04:56
Zur zweiten kann ich sofort was sagen, das ist kompliziert und wiederum einfach: https://forum.fhem.de/index.php/topic,71464.msg629919.html#msg629919

Die erste besagt, dass dein Regex falsch ist. Probiere mal hier: https://regex101.com/

D.h. um den ersten Fehler zu umgehen, muss man lediglich

{if ($DEVICE eq "sysmon_pi" && $READING eq "loadavg"){$VALUE =~ s/\d+\.?\d*.(\d+\.?\d*).*/$1/e;}}

als Attribut valueFn in der DBLog setzen? Wie würde das denn für den "1min" Wert funktionieren? Ich verstehe den Ausdruck leider überhaupt nicht.  :-[


Meinst du mit Regex diesen Teil hier:

DBLog:sysmon:loadavg:1:::$val=~s/[\d.]+\s([\d.]+)\s[\d.]+/$1/

Da habe ich exakt deine GPlot Datei verwendet und nichts verändert.
FHEM - Debmatic - Zigbee2MQTT - Homekit

andies

Zitat von: Spezialtrick am 18 Juni 2017, 15:17:15
D.h. um den ersten Fehler zu umgehen, muss man lediglich

{if ($DEVICE eq "sysmon_pi" && $READING eq "loadavg"){$VALUE =~ s/\d+\.?\d*.(\d+\.?\d*).*/$1/e;}}

als Attribut valueFn in der DBLog setzen? Wie würde das denn für den "1min" Wert funktionieren? Ich verstehe den Ausdruck leider überhaupt nicht.  :-[
Ja, genau. Wenn Du allerdings ein update machst und die Datei verwendest, die FHEM bereitstellt, wird das sofort überschrieben. Zur Erläuterung:
{if ($DEVICE eq "sysmon_pi" && $READING eq "loadavg")
Wenn man vom Gerät sysmon_pi und dessen Reading loadavg ausliest, dann übergebe den Wert dieses Readings ($VALUE) und substituiere (das zeigt das s in dem  Ausdruck)
s/eins/zwei/
überall dort, wo "eins" steht durch "zwei. Nun besteht "eins" aus einem Regex, der ist so zu lesen: Zuerst eine Ziffer (\d), die dann aber (wegen des +) beliebig wiederholt werden kann, dann kommt ein Komma (das ist \.), dann kommt ein beliebiges Zeichen (glaube ich, das ist das Fragezeichen - hier wird das das Leerzeichen sein), danach wieder eine Ziffer  (\d beliebig oft wiederholt), ein Komma und noch eine Ziffer nach dem Komma. Weil die zweite Zahl in Klammern gesetzt ist, wird sie dem Ausdruck $1 zugewiesen. Die zweite Klammer würde dann $2 zugewiesen.

Am Ende ersetzt man die Ausgangsgröße einfach durch $1 und das wird dann ausgegeben. So habe ich mir das jedenfalls zusammengereimt, das war nicht von mir. Ich habe das irgendwo abgeschrieben und versucht nachzuvollziehen.

Die zweite Frage ist komplizierter, da muss irgendwo ein Schreibfehler sein. Ich schreibe mal meine Datei hier hin:
# Created by FHEM/98_SVG.pm, 2017-05-13 21:19:26
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title 'Load'
set ytics
set y2tics
set grid y2tics
set ylabel ""
set y2label "Load average"

#lp DbLog:DbLog:sysmon:loadavg:1:::$val=~s/[\d.]+\s([\d.]+)\s[\d.]+/$1/
#lp ConstY:1

plot "<IN>" using 1:2 axes x1y1 title '1 min' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 notitle ls l2 lw 1 with lines
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Spezialtrick

Zitat von: andies am 18 Juni 2017, 16:30:57
Ja, genau. Wenn Du allerdings ein update machst und die Datei verwendest, die FHEM bereitstellt, wird das sofort überschrieben.

Dieser Fehler hat sich mit dem Eintrag gelöst.

Zitat von: andies am 18 Juni 2017, 16:30:57
Die zweite Frage ist komplizierter, da muss irgendwo ein Schreibfehler sein. Ich schreibe mal meine Datei hier hin:
# Created by FHEM/98_SVG.pm, 2017-05-13 21:19:26
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title 'Load'
set ytics
set y2tics
set grid y2tics
set ylabel ""
set y2label "Load average"

#lp DbLog:DbLog:sysmon:loadavg:1:::$val=~s/[\d.]+\s([\d.]+)\s[\d.]+/$1/
#lp ConstY:1

plot "<IN>" using 1:2 axes x1y1 title '1 min' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 notitle ls l2 lw 1 with lines


Ich habe deinen Dateiinhalt nun kopiert und lediglich aus dem zweiten DbLog ein DBLog gemacht, weil es bei mir ja anders benannt ist:


# Created by FHEM/98_SVG.pm, 2017-05-13 21:19:26
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title 'Load'
set ytics
set y2tics
set grid y2tics
set ylabel ""
set y2label "Load average"

#lp DbLog:DBLog:sysmon:loadavg:1:::$val=~s/[\d.]+\s([\d.]+)\s[\d.]+/$1/
#lp ConstY:1

plot "<IN>" using 1:2 axes x1y1 title '1 min' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 notitle ls l2 lw 1 with lines


Der Fehler ist leider weiterhin vorhanden:

2017.06.19 12:18:37 3: DbLog: Error in inline function: <:$val=~s/[\d.]+\s([\d.]+)\s[\d.]+/$1/>, Error: syntax error at (eval 14889) line 1, near ":"

:(
FHEM - Debmatic - Zigbee2MQTT - Homekit

andies

Das hört sich sehr nach einem Sonderzeichenproblem (Codierung) an. Kannst du mal alles mit der Hand abschreiben, und gerade *nicht* kopieren? Manchmal steht da eine "falsche" Tilde ~, ein falsches Leerzeichen etc pp.


Gesendet von iPhone mit Tapatalk Pro
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

Oder irgendwas mit den Versionen ist falsch. D.h. update?


Gesendet von iPhone mit Tapatalk Pro
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

andies

Oder irgendwas mit den Versionen ist falsch. D.h. update?


Gesendet von iPhone mit Tapatalk Pro
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

SabineT

Ich denke, in der Zeile:
#lp DbLog:DBLog:sysmon:loadavg:1:::$val=~s/[\d.]+\s([\d.]+)\s[\d.]+/$1/
ist ein : zu viel drinnen. Probiers mal mit
#lp DbLog:DBLog:sysmon:loadavg:1::$val=~s/[\d.]+\s([\d.]+)\s[\d.]+/$1/
Wenn ich mich nicht irre ist das Format:
lp DbLog:<myDb>:<myDevice>:<myReading>:<default>:<Func>:<Regex>

lg, Sabine

Spezialtrick

Zitat von: andies am 19 Juni 2017, 12:36:00
Das hört sich sehr nach einem Sonderzeichenproblem (Codierung) an. Kannst du mal alles mit der Hand abschreiben, und gerade *nicht* kopieren? Manchmal steht da eine "falsche" Tilde ~, ein falsches Leerzeichen etc pp.

Ich habe es nun ab getippt und danach auch deine Datei aus dem vorherigen Post und lediglich aus dem zweiten DbLog ein DBLog gemacht, weil es bei mir ja anders benannt ist, leider ohne Erfolg.  ???

Zitat von: SabineT am 19 Juni 2017, 18:11:51
Ich denke, in der Zeile:
#lp DbLog:DBLog:sysmon:loadavg:1:::$val=~s/[\d.]+\s([\d.]+)\s[\d.]+/$1/
ist ein : zu viel drinnen. Probiers mal mit
#lp DbLog:DBLog:sysmon:loadavg:1::$val=~s/[\d.]+\s([\d.]+)\s[\d.]+/$1/
Wenn ich mich nicht irre ist das Format:
lp DbLog:<myDb>:<myDevice>:<myReading>:<default>:<Func>:<Regex>

Danke für deine Nachricht Sabine. Diese Änderung behebt zwar die Fehlermeldungen, erzeugt jedoch alle paar Sekunden einen Freeze von Fhem:


2017.06.19 22:06:29 1: Perfmon: possible freeze starting at 22:06:28, delay is 1.935
2017.06.19 22:06:34 1: Perfmon: possible freeze starting at 22:06:33, delay is 1.991
2017.06.19 22:06:44 1: Perfmon: possible freeze starting at 22:06:43, delay is 1.296


Ist nun tatsächlich ein Fehler im Code und liegt ein weiterer Fehler woanders oder stimmt irgendwas mit meiner Gplot Datei nicht?
FHEM - Debmatic - Zigbee2MQTT - Homekit

andies

Ist FHEM aktuell (update)? Also hier ist irgend etwas grundsätzlich faul. Der Fehler liegt irgendwo, wo wir ihn gerade nicht suchen.


Gesendet von iPad mit Tapatalk Pro
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

Spezialtrick

Zitat von: andies am 19 Juni 2017, 22:31:28
Ist FHEM aktuell (update)? Also hier ist irgend etwas grundsätzlich faul. Der Fehler liegt irgendwo, wo wir ihn gerade nicht suchen.

Mein letztes Update habe ich heute morgen gemacht.
FHEM - Debmatic - Zigbee2MQTT - Homekit