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

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

Vorheriges Thema - Nächstes Thema

hexenmeister

Hallo!

Bei der Suche nach Möglichkeiten, mit FHEM das Wirt-System zu überwachen, habe ich mir das SYSSTAT-Modul und die RPiUtils-Bibliothek angesehen. Da irgendwie beides mir nicht so richtig zugesagt hatte, habe ich ein neues Modul geschrieben. Vielleicht kann es jemand sonst auch gebrauchen.
Beispiel-Plots:
(http://www.s6z.de/cms/images/content/RPi/RPi_SYSMON_01.png)
(http://www.s6z.de/cms/images/content/RPi/RPi_SYSMON_02.png)

Edit:
Das Modul ist mittlerweile ein Bestandteil der offiziellen FHEM-Distribution. Die aktuelle Beschreibung ist unter http://fhem.de/commandref_DE.html#SYSMON zu finden.
Die benötigten Dateien kommen per FHEM-update. Außerdem liegen diese auch auf GitHub:
https://github.com/hexenmeister/MyFHEM/blob/master/FHEM/42_SYSMON.pm
und unter
https://github.com/hexenmeister/MyFHEM/blob/master/www/gplot/
sind mehrere Plots zu finden (alles was mit SM_ anfängt):
      
   SM_CPUStat.gplot
   SM_CPUStatSum.gplot    
   SM_CPUTemp.gplot    
   SM_DB_CPUFreq.gplot    
   SM_DB_CPUTemp.gplot    
   SM_DB_Load.gplot    
   SM_DB_Network_eth0.gplot    
   SM_DB_RAM.gplot    
   SM_DB_all.gplot    
   SM_FS_root.gplot    
   SM_FS_usb1.gplot    
   SM_Load.gplot    
   SM_Network_eth0.gplot    
   SM_Network_eth0t.gplot
   SM_Network_wlan0.gplot
   SM_RAM.gplot

Beispiel-Definitionen für fhem.cfg:

# Modul-Definition
define sysmon SYSMON 1 1 1 10
#attr sysmon event-on-update-reading cpu_temp,cpu_temp_avg,cpu_freq,eth0_diff,loadavg,ram,^~ /.*usb.*,~ /$
attr sysmon event-on-update-reading cpu_temp,cpu_temp_avg,cpu_freq,eth0_diff,loadavg,ram,fs_.*
attr sysmon filesystems fs_boot:/boot,fs_root:/:Root,fs_usb1:/media/usb1:USB-Stick
attr sysmon network-interfaces eth0:eth0:Ethernet,wlan0:wlan0:WiFi
attr sysmon group RPi
attr sysmon room 9.03_Tech

# Log
define FileLog_sysmon FileLog ./log/sysmon-%Y-%m.log sysmon
attr FileLog_sysmon group RPi
attr FileLog_sysmon logtype SM_CPUTemp:Plot,text
attr FileLog_sysmon room 9.03_Tech

# Visualisierung: CPU-Temperatur
define wl_sysmon_temp SVG FileLog_sysmon:SM_CPUTemp:CURRENT
attr wl_sysmon_temp group RPi
attr wl_sysmon_temp label "CPU Temperatur: Min $data{min2}, Max $data{max2}, Last $data{currval2}"
attr wl_sysmon_temp room 9.03_Tech

# Visualisierung: Netzwerk-Datenübertragung fü eth0
define wl_sysmon_eth0 SVG FileLog_sysmon:SM_Network_eth0:CURRENT
attr wl_sysmon_eth0 group RPi
attr wl_sysmon_eth0 label "Netzwerk-Traffic eth0: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
attr wl_sysmon_eth0 room 9.03_Tech

# Visualisierung: Netzwerk-Datenübertragung fü wlan0
define wl_sysmon_wlan0 SVG FileLog_sysmon:SM_Network_wlan0:CURRENT
attr wl_sysmon_wlan0 group RPi
attr wl_sysmon_wlan0 label "Netzwerk-Traffic wlan0: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
attr wl_sysmon_wlan0 room 9.03_Tech

# Visualisierung: CPU-Auslastung (load average)
define wl_sysmon_load SVG FileLog_sysmon:SM_Load:CURRENT
attr wl_sysmon_load group RPi
attr wl_sysmon_load label "Load Min: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"
attr wl_sysmon_load room 9.03_Tech

# Visualisierung: RAM-Nutzung
define wl_sysmon_ram SVG FileLog_sysmon:SM_RAM:CURRENT
attr wl_sysmon_ram group RPi
attr wl_sysmon_ram label "RAM-Nutzung Total: $data{max1}, Min: $data{min2}, Max: $data{max2}, Aktuell: $data{currval2}"
attr wl_sysmon_ram room 9.03_Tech

# Visualisierung: Dateisystem: Root-Partition
define wl_sysmon_fs_root SVG FileLog_sysmon:SM_FS_root:CURRENT
attr wl_sysmon_fs_root group RPi
attr wl_sysmon_fs_root label "Root Partition Total: $data{max1}, Min: $data{min2}, Max: $data{max2}, Aktuell: $data{currval2}"
attr wl_sysmon_fs_root room 9.03_Tech

# Visualisierung: Dateisystem: USB-Stick
define wl_sysmon_fs_usb1 SVG FileLog_sysmon:SM_FS_usb1:CURRENT
attr wl_sysmon_fs_usb1 group RPi
attr wl_sysmon_fs_usb1 label "USB1 Total: $data{max1}, Min: $data{min2}, Max: $data{max2}, Aktuell: $data{currval2}"
attr wl_sysmon_fs_usb1 room 9.03_Tech

# Anzeige der Readings zum Einbinden in ein 'Raum'.
define SysValues weblink htmlCode {SYSMON_ShowValuesHTML('sysmon')}
attr SysValues group RPi
attr SysValues room 9.03_Tech

# Anzeige CPU Auslasung
define wl_sysmon_cpustat SVG FileLog_sysmon:SM_CPUStat:CURRENT
attr wl_sysmon_cpustat label "CPU(min/max): user:$data{min1}/$data{max1} nice:$data{min2}/$data{max2} sys:$data{min3}/$data{max3} idle:$data{min4}/$data{max4} io:$data{min5}/$data{max5} irq:$data{min6}/$data{max6} sirq:$data{min7}/$data{max7}"
attr wl_sysmon_cpustat group RPi
attr wl_sysmon_cpustat room 9.99_Test
attr wl_sysmon_cpustat plotsize 840,420
define wl_sysmon_cpustat_s SVG FileLog_sysmon:SM_CPUStatSum:CURRENT
attr wl_sysmon_cpustat_s label "CPU(min/max): user:$data{min1}/$data{max1} nice:$data{min2}/$data{max2} sys:$data{min3}/$data{max3} idle:$data{min4}/$data{max4} io:$data{min5}/$data{max5} irq:$data{min6}/$data{max6} sirq:$data{min7}/$data{max7}"
attr wl_sysmon_cpustat_s group RPi
attr wl_sysmon_cpustat_s room 9.99_Test
attr wl_sysmon_cpustat_s plotsize 840,420


Beschreibung auf meiner Seite: http://www.s6z.de/cms/index.php/homeautomation/fhem/54-raspberry-pi-system-ueberwachen-mit-sysmon

Grüße,

Alexander

salvadore

Hallo Alexander,
zuerst mal meinen größten Respekt; an solchen Dingen erkenne ich, was ich alles nicht kann/weis aber als >60 wird man auch ruhiger.

Wie Du in deinem Beitrag erläuterst, habe ich die Konfiguration vorgenommen. Ich habe zwar kein Laufwerk am PI aber es sollte ja trotzdem fuktionieren. Tut es auch, zumindest teilweise.
Beim reload von 42_SYSMon kommt diese Fehlermeldung:

Unrecognized character \xC2; marked by <-- HERE after at master <-- HERE near column 51 at ./FHEM/42_SYSMON.pm line 9.

Eine Screen anbei, was anschliessend ausgegeben wird.

Was habe ich nichr richtig konfiguriert?
Gruss
Salvadore

FHEM 5.6, APU-Board, CUNO 1.x, RFXtrx433, 8 FHT80B, diverse FS20 Aktoren, Rasperry, div. DS18x-Sensoren, KD101, AB400R, HE877, ESA2000, Beaglebone Black Rev.C, Jeelink, PCA 301, PT8005,

salvadore

Hi Alexander,
nehme alles zurück, habe alles neu heruntergeladen und dann hat es auf Anhieb funktioniert.
Nochmal Danke für das Modul und Deine Arbeit.
LG
salvadore  8)
FHEM 5.6, APU-Board, CUNO 1.x, RFXtrx433, 8 FHT80B, diverse FS20 Aktoren, Rasperry, div. DS18x-Sensoren, KD101, AB400R, HE877, ESA2000, Beaglebone Black Rev.C, Jeelink, PCA 301, PT8005,

hexenmeister

Hallo!

War gerade am antworten, habe auch vermutet, dass beim Kopieren aus GitHub etwas schief gelaufen war.
Mich würde Deine Meinung zu dem Modul interessieren, nachdem Du ihn etwas länger im Einsatz hast. Ist es nützlich? Läuft stabil (bei mir schon seit Tagen)? Fehlt etwas? Verbesserungswünsche?

Grüße,

Alexander

salvadore

Hi Alexander,
ich lass es jetzt mal laufen.

Auf dem Pi läuft z.Zt. keine andere "FHEM-Anwendung". Ich hoffe z.B. damit die Stabilität des PI nachvollziehen zu können. In der Vergangenheit ist er nämlich des öfteren abgestürzt. Zu Testzwecken lief die auch hier im Forum vorgestellte Anwendung zur Einbindung eines Schallpegelmessgerätes; die ist jetzt auskommentiert, weil ich eingrenzen möchte, liegt es am PI und Fhem oder am angeschlossenen Meßgerät. Und da ist Dein Modul bestens geeignet.

Ich gebe nach dem Wochende Rückmeldung.

LG
salvadore
FHEM 5.6, APU-Board, CUNO 1.x, RFXtrx433, 8 FHT80B, diverse FS20 Aktoren, Rasperry, div. DS18x-Sensoren, KD101, AB400R, HE877, ESA2000, Beaglebone Black Rev.C, Jeelink, PCA 301, PT8005,

salvadore

Hi Alexander,
bei den Plots, müsste da nicht auch konsequenterweise wlan0 integriert werden?
LG
Salvadore
FHEM 5.6, APU-Board, CUNO 1.x, RFXtrx433, 8 FHT80B, diverse FS20 Aktoren, Rasperry, div. DS18x-Sensoren, KD101, AB400R, HE877, ESA2000, Beaglebone Black Rev.C, Jeelink, PCA 301, PT8005,

hexenmeister

Hallo,

ich habe kein WLAN am Pi, daher hatte ich bis jetzt kein Plot dafür. Ist jedoch praktisch das selbe, wie bei eth0.
Habe kurzerhand eins erstellt: https://github.com/hexenmeister/MyFHEM/blob/master/www/gplot/mySMNetworkWlan0.gplot
Leider weiß ich nicht, ob und wie man die Plot-Dateien parametrisieren kann, dann könnte man den gleichen Plot für jede Schnittstelle nutzen.

In Config sollte das in etwa so aussehen:

define wl_sysmon_wlan0 SVG FileLog_sysmon:mySMNetworkWlan0:CURRENT
attr wl_sysmon_wlan0 label "Netzwerk-Traffic wlan0: $data{min1}, Max: $data{max1}, Aktuell: $data{currval1}"


Grüße,

Alexander

salvadore

Hi,
genau das habe ich gemacht und integriert. Den Eintrag für Eth0 habe ich auskommentiert; in der Modulkonfiguration ergänzt um den Eintrag wlan0_diff; das Ergebnis unten.
LG salvadore
FHEM 5.6, APU-Board, CUNO 1.x, RFXtrx433, 8 FHT80B, diverse FS20 Aktoren, Rasperry, div. DS18x-Sensoren, KD101, AB400R, HE877, ESA2000, Beaglebone Black Rev.C, Jeelink, PCA 301, PT8005,

hexenmeister

@salvadore:

laut Deiner Signatur, läuft Dein FHEM nicht auf einem Raspberry Pi, ist das richtig? Dann dürften zumindest die CPU-Parameter (Temp, Frequenz) nicht funktionieren.

Danke fürs Testen und viele Grüße,

Alexander

salvadore

Danke für den Hinweis, muss ich noch alles anpassen.
Schönen 2.Advent
Salvadore
FHEM 5.6, APU-Board, CUNO 1.x, RFXtrx433, 8 FHT80B, diverse FS20 Aktoren, Rasperry, div. DS18x-Sensoren, KD101, AB400R, HE877, ESA2000, Beaglebone Black Rev.C, Jeelink, PCA 301, PT8005,

Olly

Hi,

nettes Modul.
Ich hatte mich auch mal kurz mit den RPiUtils beschäftigt, bin aber auch damit nicht klar gekommen.
Ich hab dein Modul gerade mal auf meinem Raspi eingebunden, funktioniert soweit ganz gut. Ich werde das mal testen.
Ich hab allerdings keinen USB-Stick am System, den entsprechenden Plot hab ich raus genommen.

Gruß

     Olly
BananaPi 1GB;NetCSM 868MHz, miniCUL 433MHz, LaCrosseGateway, 2x SignalESP; FHEM 6.2

hexenmeister

Hallo Olly,

danke, bin interessiert an Deiner Meinung und Erfahrungen mit dem Modul.
Mit den RPiUtils kam ich nach einiger Zeit klar, das Ergebnis ist jedoch nicht wirklisch 'sauber'.
Den Auszug aus der aufgeblähten fhem.cfg habe ich hier: http://s6z.de/cms/index.php/homeautomation/fhem/50-raspberry-pi-system-ueberwachen
Aber als Inspirationquelle für die zu protokollierenden Informationen war die RPiUtils sehr nützlich  :)

Grüße,

Alexander

Puschel74

Hallo,

für github bin ich mal wieder zu blöd  :o

Könntest du die 42_SYSMON.pm auch hier verlinken bitte?
Besser wäre natürlich wenn die eingecheckt werden könnte  ;)

Danke und

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

hexenmeister

#13
Hi!

Klar, kann ich de Dateien auch hier anhängen, kann allerdings nicht für die Alktualisierungen bei eventuellen künstigen Änderungen garantieren.

Man kann die Dateien auch von GitHub als ZIP laden, bekommt aktuell aber noch andere Dinge mit drin, ich habe keine 'sauber' Aufteilung jetzt: https://github.com/hexenmeister/MyFHEM/archive/master.zip

Einchecken würde ich auch gut finden. Wo kann man sich dafür bewerben? ;)
In jedem Fall warte ich etwas ab, ob noch mehr FHEM-Benutzer das Modul nutzen wollen und ob es keine Probleme verursaht (läuft bei mir zwar seit längerem problemlos, man kann aber nie wissen).

Grüße,

Alexander

Edit: alte Dateiversionen entfernt. Dia aktuellen sind bei GitHub (und später in SVN).

Puschel74

#14
Hallo,

danke.
Fortan laufen die Daten in die Datenbank.
Wie ich sie später mal visualisiere - darüber grübel ich morgen (oder besser heute).
Meine HDD hat noch mehr als genug Platz.

Grüße

Edith: Hab mich grad mal an den Plot für load gemacht.
Funktioniert soweit auch aber ich bräucht mal einen Schupps wie ich an die drei Werte mit DBLog dran komme bzw. wie ich diese in der Plotdefinition abfragen kann.

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 grid xtics y2tics

set ylabel "Last"
set y2label "Last"

#DbLog <SPEC1>:loadavg::

plot \
     "< awk '/load avg:/ {print $1, $4}' <IN>" \
   using 1:2 ls l0fill axes x1y1 title '1 min' lw 0 with lines \
   "< awk '/load avg5:/ {print $1, $4}' <IN>" \
   using 1:2 ls l1 axes x1y1 title '5 min' lw 2 with lines \
  "< awk '/load avg15:/ {print $1, $4}' <IN>" \
   using 1:2 ls l2 axes x1y1 title '15 min' lw 3 with lines


Danke schonmal für die Hilfe.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.