(SYSMON) "PERL WARNING: 42_SYSMON.pm line ... "

Begonnen von Sunny, 22 Juli 2015, 16:56:02

Vorheriges Thema - Nächstes Thema

Sunny

Moin hexenmeister,

Zitat von: hexenmeister am 30 Juli 2015, 00:01:40
...Anzeige welcher Plots die Meldungen kommen,... Plot-Dateien reingucken.
Danke für Deinen Hinweiß!  8)

Der Fehler kam von meinem erstellten SVG_Db_SM_CPUFreq.gplot# Created by FHEM/98_SVG.pm, 2015-07-27 06:26:17
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 '<L1>'
set ytics
set y2tics
set grid ytics
set ylabel "Temp"
set y2label ""

#myDbLog sysmon:cpu_freq
#myDbLog sysmon:cpu_temp
#myDbLog sysmon:cpu_temp_avg
#myDbLog sysmon:loadavg
#myDbLog sysmon:ram
#myDbLog sysmon:stat_cpu_percent
#myDbLog sysmon:eth0_diff

plot "<IN>" using 1:2 axes x1y2 title 'CPU Frequenz' ls l0 lw 1 with steps,\
     "<IN>" using 1:2 axes x1y1 title 'CPU Temp' ls l1 lw 1 with steps,\
     "<IN>" using 1:2 axes x1y1 title 'CPU Ttemp AVG' ls l2 lw 1 with steps,\
     "<IN>" using 1:2 axes x1y1 title 'Load AVG' ls l3 lw 1 with steps,\
     "<IN>" using 1:2 axes x1y1 title 'Ram' ls l4 lw 1 with steps,\
     "<IN>" using 1:2 axes x1y1 title 'CPU%' ls l5 lw 1 with steps,\
     "<IN>" using 1:2 axes x1y2 title 'Eth0' ls l6 lw 1 with steps


Musste mein Hauptsystem doch nicht neu aufsetzen, habe nur die SVG_Db_SM_CPUFreq.gplot aus der fhem.cfg entfernt.  :-[
Damit erscheinen die Perl Warnigs aus " Antwort #10" nicht mehr.


Viele Grüße
Sunny
FHEM 6.0 (RPi's 1b-4,CeleronM,Odroid C1+)
1-Wire (DS18B20,DS2406) |miniCUL|miniCUL868WLAN|HM|IT(-1500,LR-3500) |FB6591,FB7490,FB7580|DECT200|Powerline546E|520E|openwrt
Anfänger: Linux,FHEM+Perl

ChrisK

Ich habe seit ein paar Wochen durch SYSMON auch sehr viel Warnings im Log.
Da ich Warnings auch gelassener sehe, habe ich mich nicht wirklich drum gekümmert, aber ich den Thread hier sehe...

Folgendes Warning kommt jede Minute:
2015.08.02 10:54:06 1: PERL WARNING: Can't exec "ifconfig": No such file or directory at ./FHEM/42_SYSMON.pm line 4072.
2015.08.02 10:54:06 3: stacktrace:
2015.08.02 10:54:06 3:     main::__ANON__                      called by ./FHEM/42_SYSMON.pm (4072)
2015.08.02 10:54:06 3:     main::SYSMON_Exec_Local             called by ./FHEM/42_SYSMON.pm (3979)
2015.08.02 10:54:06 3:     main::SYSMON_Exec                   called by ./FHEM/42_SYSMON.pm (3665)
2015.08.02 10:54:06 3:     main::SYSMON_execute                called by ./FHEM/42_SYSMON.pm (2645)
2015.08.02 10:54:06 3:     main::SYSMON_getNetworkInfo         called by ./FHEM/42_SYSMON.pm (1280)
2015.08.02 10:54:06 3:     main::SYSMON_obtainParameters_intern called by ./FHEM/42_SYSMON.pm (1119)
2015.08.02 10:54:06 3:     main::SYSMON_obtainParameters       called by ./FHEM/42_SYSMON.pm (947)
2015.08.02 10:54:06 3:     main::SYSMON_blockingCall           called by FHEM/Blocking.pm (88)
2015.08.02 10:54:06 3:     main::BlockingCall                  called by ./FHEM/42_SYSMON.pm (896)
2015.08.02 10:54:06 3:     main::SYSMON_Update                 called by fhem.pl (2666)
2015.08.02 10:54:06 3:     main::HandleTimeout                 called by fhem.pl (580)
[/quote]

Gefolgt von jede Menge Warnings, dass Variablen nicht initialisiert sind, z.B.
[quote]
2015.08.02 10:54:06 1: PERL WARNING: Use of uninitialized value $dataThroughput[0] in index at ./FHEM/42_SYSMON.pm line 2675.
2015.08.02 10:54:06 3: stacktrace:
2015.08.02 10:54:06 3:     main::__ANON__                      called by ./FHEM/42_SYSMON.pm (2675)
2015.08.02 10:54:06 3:     main::SYSMON_getNetworkInfo         called by ./FHEM/42_SYSMON.pm (1280)
2015.08.02 10:54:06 3:     main::SYSMON_obtainParameters_intern called by ./FHEM/42_SYSMON.pm (1119)
2015.08.02 10:54:06 3:     main::SYSMON_obtainParameters       called by ./FHEM/42_SYSMON.pm (947)
2015.08.02 10:54:06 3:     main::SYSMON_blockingCall           called by FHEM/Blocking.pm (88)
2015.08.02 10:54:06 3:     main::BlockingCall                  called by ./FHEM/42_SYSMON.pm (896)
2015.08.02 10:54:06 3:     main::SYSMON_Update                 called by fhem.pl (2666)
2015.08.02 10:54:06 3:     main::HandleTimeout                 called by fhem.pl (580)
2015.08.02 10:58:06 1: PERL WARNING: Use of uninitialized value $_ in pattern match (m//) at ./FHEM/42_SYSMON.pm line 2699.
...
2015.08.02 10:58:06 1: PERL WARNING: Use of uninitialized value $_ in pattern match (m//) at ./FHEM/42_SYSMON.pm line 2702.
...
2015.08.02 10:58:06 1: PERL WARNING: Use of uninitialized value $_ in pattern match (m//) at ./FHEM/42_SYSMON.pm line 2705.
...
2015.08.02 10:58:06 1: PERL WARNING: Use of uninitialized value $_ in index at ./FHEM/42_SYSMON.pm line 2709.
...
2015.08.02 10:58:06 1: PERL WARNING: Use of uninitialized value $d in pattern match (m//) at ./FHEM/42_SYSMON.pm line 2758.
...
2015.08.02 10:58:06 1: PERL WARNING: Use of uninitialized value $d in pattern match (m//) at ./FHEM/42_SYSMON.pm line 2761.


Es scheint wohl nicht direkt an SYSMON zu liegen, sondern eher ein Berechtigungsthema zu sein, aber leider konnte nicht heraus finden, was genau das Problem ist. Bin noch perl/linux Anfänger.
Seltsam ist aber auch, dass das Problem permanent da ist, wenn ich über die Weboberfläche ein Restart ausführe (.../fhem?cmd=shutdown+restart) wenn ich aber in der Konsole neu starte (mit "sudo /etc/init.d/fhem stop" und "sudo /etc/init.d/fhem start") dann kommt der Fehler eine lange Zeit (einige Stunden) nicht und irgendwann geht's wieder los. Vielleicht sagt das jemandem irgendwas?

Wäre für jeden Tipp dankbar.
Verbose habe ich für sysmon schon auf 0 gesetzt, die Warnings machen aber die Logs leider weiterhin fast unlesbar.

hexenmeister

Zitat von: Sunny am 02 August 2015, 04:04:07
Musste mein Hauptsystem doch nicht neu aufsetzen, habe nur die SVG_Db_SM_CPUFreq.gplot aus der fhem.cfg entfernt.  :-[
Naja, ist ja klar, Du versuchst Texte als Zahlenreihen zu plotten ;)

hexenmeister

Zitat von: ChrisK am 02 August 2015, 11:04:18
Ich habe seit ein paar Wochen durch SYSMON auch sehr viel Warnings im Log...

ifconfig ist nicht im Pfad. Diesen kannst Du sehen, wenn Du im FHEM folgendes eingibst:{`echo \$PATH`}
Wie man am besten den Pfad erweitert (wo ifconfig liegt kannst Du in der Linux-Console mit sudo which ifconfig nachsehen) kann ich leide rauch nicht sagen. Normal macht man das in ~/.bashrc , diese wird zu FHEM-Start jedoch sicher nicht genutzt. Evtl. in dem Startscript etwas wie
PATH=$PATH:/sbin
export PATH

ergänzen.

ChrisK

Zitat von: hexenmeister am 02 August 2015, 12:37:46
ifconfig ist nicht im Pfad. Diesen kannst Du sehen, wenn Du im FHEM folgendes eingibst:{`echo \$PATH`}
Danke, guter Hinweis.

Wenn ich manuell neu starte, dann steht da dieser Pfad, was auch den Pfad von ifconfig enthält:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Jetzt habe ich gesehen, dass noch ein Cronjob aktiv war, der fhem jede Nacht neu gestartet hat. Das habe ich vor ein paar Monaten gemacht, weil ich das Gefühl hatte, dass sich fhem regelmäßig aufhängt.

Den cronjob hatte ich hierüber angelegt:
sudo crontab -e

Ich hatte gedacht, dass wenn ich den cronjob über sudo... anlege, das "sudo" nicht mehr im cronjob notwendig ist.
Dabin kam aber dieser Pfad in fhem raus:
/usr/bin:/bin

Wenn ich den cronjob richtig anlege (also Aufruf "sudo /etc/init.d/fhem start") dann sieht es so aus, als ob alles passt.

Danke Dir hexenmeister!

hexenmeister

Damit startest Du aber FHEM als root. Ich würde eher extra einen User dafür anlegen und diesem nur die wirklich benötigten Rechte geben.
Außerdem halte ich einen täglichen Neustart für nicht optimal. Wenn FHEM 'hängt', wird es dennoch erst nachts neugestartet. Wenn nicht - trotzdem. Da wäre besser den Hardware-Watchdog zu nutzen. Dieser würde eine erst dann einen Neustart einleiten, wenn dies wirklich nötig ist. Aber auch das ist IMHO zu viel. Es reicht doch FHEM zu überwachen und nur diesen neustartet. Ich habe da ein entsprechendes Script (http://s6z.de/cms/index.php/homeautomation/fhem/23-fhem-watchdog).
Hardware-Watchdog kann zusätzlich die Abstürze von Betriebssystem abfangen.

ChrisK

Zitat von: hexenmeister am 02 August 2015, 16:56:11
Damit startest Du aber FHEM als root. Ich würde eher extra einen User dafür anlegen und diesem nur die wirklich benötigten Rechte geben.
Danke, das macht natürlich Sinn.
Hab jetzt mal den Prozess nicht als root starten lassen und das Start-Skript wie oben von Dir beschrieben erweitert.

Das Thema Watchdog muss ich mir in Ruhe mal angucken.
Danke für den Link.