SYSMON: Unterschied zwischen den Versionen

Aus FHEMWiki
K (Modul Infobox eingefügt)
K (Sichtung / Überarbeitung der letzten Änderung; Verwendung von Syntaxhighlight...)
 
(19 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Infobox Modul
{{Infobox Modul
|ModPurpose=Anzeige von Informationen und Statistiken zu dem System, auf dem Fhem ausgeführt wird.
|ModPurpose=Anzeige von Informationen und Statistiken zu dem System, auf dem FHEM ausgeführt wird.
|ModType=h
|ModType=d
<!-- |ModCmdRef= -->
|ModForumArea=Unterstützende Dienste
|ModTechName=42_SYSMON.pm
|ModTechName=42_SYSMON.pm
|ModOwner=hexenmeister / [http://forum.fhem.de/index.php?action=profile;u=4065 Hexenmeister]
|ModOwner=hexenmeister <br />([http://forum.fhem.de/index.php?action=profile;u=4065 Forum] / [[Benutzer:Hexenmeister|Wiki]])
}}
}}
Das [[SYSMON]] Modul liefert diverse Informationen und Statistiken zu dem System, auf dem FHEM-Server ausgeführt wird. Seit Version 2.0 können auch Remote-Systeme abgefragt werden (Telnet).
Es werden nur Linux-basierte Systeme unterstützt. Manche Informationen sind hardwarespezifisch und sind daher nicht auf jeder Plattform verfügbar.
Bis jetzt wurde dieses Modul auf folgenden Systemen getestet: Raspberry Pi (Debian Wheezy), BeagleBone Black, FritzBox 7390, WR703N unter OpenWrt, CubieTruck und einige andere.
Für Informationen zu einer FritzBox beachten Sie bitte auch Module: [[FRITZBOX]] und [[FB_CALLMONITOR]].


Das [[SYSMON]] Modul liefert diverse Informationen und Statistiken zu dem System, auf dem FHEM-Server ausgeführt wird.  
Das Modul nutzt das Perlmodule 'Net::Telnet' für den Fernzugriff. Dieses muss ggf. nachinstalliert werden. Unter Ubuntu kann dafür das Paket libnet-telnet-perl verwendet werden.
Es werden nur Linux-basierte Systeme unterstützt. Manche Informationen sind hardwarespezifisch und sind daher nicht auf jeder Plattform verfügbar.
Bis jetzt wurde dieses Modul auf folgenden Systemen getestet: Raspberry Pi (Debian Wheezy), BeagleBone Black, FritzBox 7390, WR703N unter OpenWrt.


==Definition==  
==Definition==  
:<code>define <name> SYSMON [<M1>[ <M2>[ <M3>[ <M4>]]]]</code>
:<code>define <name> SYSMON [MODE[:[USER@]HOST][:PORT]] [<M1>[ <M2>[ <M3>[ <M4>]]]]</code>


Diese Anweisung erstellt eine neue SYSMON-Instanz. Die Parameter M1 bis M4 legen die Aktualisierungsintervalle für verschiedenen Readings (Statistiken) fest. Die Parameter sind als Multiplikatoren für die Zeit, die durch INTERVAL_BASE definiert ist, zu verstehen. Da diese Zeit fest auf 60 Sekunden gesetzt ist, können die Mx-Parameters als Zeitintervalle in Minuten angesehen werden.
Diese Anweisung erstellt eine neue SYSMON-Instanz. Die Parameter M1 bis M4 legen die Aktualisierungsintervalle für verschiedenen Readings (Statistiken) fest. Die Parameter sind als Multiplikatoren für die Zeit, die durch INTERVAL_BASE definiert ist, zu verstehen. Da diese Zeit fest auf 60 Sekunden gesetzt ist, können die Mx-Parameters als Zeitintervalle in Minuten angesehen werden.
Zeile 21: Zeile 24:


* '''M1''': (Default-Wert: 1)
* '''M1''': (Default-Wert: 1)
:CPU-Daten: ''cpu_freq'', ''cpu_temp'', ''cpu_temp_avg'', ''loadavg'', ''stat_cpu'', ''stat_cpu_diff'', ''stat_cpu_percent'', ''stat_cpu_text''
:CPU-Daten: ''cpu_freq'', ''cpu_temp'', ''cpu_temp_avg'', ''loadavg'', ''stat_cpu'', ''stat_cpu_diff'', ''stat_cpu_percent'', ''stat_cpu_text'', power readings


* '''M2''': (Default-Wert: M1)
* '''M2''': (Default-Wert: M1)
Zeile 35: Zeile 38:
''fhemuptime'', ''fhemuptime_text'', ''idletime'', ''idletime_text'', ''uptime'', ''uptime_text''
''fhemuptime'', ''fhemuptime_text'', ''idletime'', ''idletime_text'', ''uptime'', ''uptime_text''


Für Abfrage eines entfernten Systems muss mindestens deren Adresse (HOST) angegeben werden, bei Bedarf ergänzt durch den Port und/oder den Benutzernamen. Das eventuell benötigte Passwort muss einmalig mit dem Befehl 'set password <pass>' definiert werden. Als MODE sind derzeit 'telnet' und 'local' erlaubt. 'local' erfordert keine weiteren Angaben und kann auch ganz weggelassen werden.


==readings==
==readings==
* '''cpu_bogomips'''
* '''cpu_bogomips'''
:CPU Speed: BogoMIPS
:CPU Speed: BogoMIPS
Zeile 54: Zeile 57:


* '''fhemuptime_text'''
* '''fhemuptime_text'''
:Zeit seit dem Start des FHEM-Servers: Menschenlesbare Ausgabe (texttuelle Darstellung).
:Zeit seit dem Start des FHEM-Servers: Menschenlesbare Ausgabe (textuelle Darstellung).


* '''idletime'''
* '''idletime'''
Zeile 72: Zeile 75:


* '''uptime'''
* '''uptime'''
:Zeit (in Sekenden) seit dem Systemstart.
:Zeit (in Sekunden) seit dem Systemstart.


* '''uptime_text'''
* '''uptime_text'''
Zeile 89: Zeile 92:
:Seit Version 1.1.0 können Dateisysteme auch benannt werden (s.u.).
:Seit Version 1.1.0 können Dateisysteme auch benannt werden (s.u.).
:In diesem Fall werden für die diese Readings die angegebenen Namen verwendet.
:In diesem Fall werden für die diese Readings die angegebenen Namen verwendet.
:Dies soll die Übersicht verbessern und die Erstellung von Plots erleichten.
:Dies soll die Übersicht verbessern und die Erstellung von Plots erleichtern.
:Beispiel:
:Beispiel:
::fs_root: Total: 7340 MB, Used: 3573 MB, 52 %, Available: 3425 MB at /
::fs_root: Total: 7340 MB, Used: 3573 MB, 52 %, Available: 3425 MB at /
Zeile 102: Zeile 105:


* '''Benutzerdefinierte Einträge'''
* '''Benutzerdefinierte Einträge'''
::Diese Readings sind Ausgaben der Kommanden, die an das Betriebssystem übergeben werden. Die entsprechende Angaben werden im Attribut user-defined vorgenommen.
::Diese Readings sind Ausgaben der Kommandos, die an das Betriebssystem übergeben werden. Die entsprechende Angaben werden im Attribut user-defined vorgenommen.


'''FritzBox-spezifische Readings'''
'''FritzBox-spezifische Readings'''
Zeile 125: Zeile 128:
* '''fw_version_info'''
* '''fw_version_info'''
:Angaben zu der installierten Firmware-Version:  
:Angaben zu der installierten Firmware-Version:  
<br>
'''Readings zur Stromversorgung'''
* '''power_ac_stat'''
:Statusinformation für die AC-Buchse: present (0|1), online (0|1), voltage, current
:Beispiel:
::power_ac_stat: 1 1 4.807 264
* '''power_ac_text'''
:Statusinformation für die AC-Buchse in menschenlesbarer Form
:Beispiel:
::power_ac_text ac: present / online, Voltage: 4.807 V, Current: 264 mA
* '''power_usb_stat'''
:Statusinformation für die USB-Buchse
* '''power_usb_text'''
Statusinformation für die USB-Buchse in menschenlesbarer Form
* '''power_battery_stat'''
:Statusinformation für die Batterie (wenn vorhanden): present (0|1), online (0|1), voltage, current, actual capacity
:Beispiel:
::power_battery_stat: 1 1 4.807 264 100
* '''power_battery_text'''
:Statusinformation für die Batterie (wenn vorhanden) in menschenlesbarer Form
* '''power_battery_info'''
:Menschenlesbare Zusatzinformationen für die Batterie (wenn vorhanden): Technologie, Kapazität, Status, Zustand, Gesamtkapazität
:Beispiel:
::power_battery_info: battery info: Li-Ion , capacity: 100 %, status: Full , health: Good , total capacity: 2100 mAh


===Ausgabe-Beispiel===
===Ausgabe-Beispiel===
-TODO-
{| class="wikitable"
|-
|cpu_freq
|900
|2013-11-27 00:05:36
|-
|cpu_temp
|49.77
|2013-11-27 00:05:36
|-
|cpu_temp_avg
|49.7
|2013-11-27 00:05:36
|-
|eth0
|RX: 2954.22 MB, TX: 3469.21 MB, Total: 6423.43 MB
|2013-11-27 00:05:36
|-
|eth0_diff
|RX: 6.50 MB, TX: 0.23 MB, Total: 6.73 MB
|2013-11-27 00:05:36
|-
|fhemuptime
|11231
|2013-11-27 00:05:36
|-
|fhemuptime_text 
|0 days, 03 hours, 07 minutes
|2013-11-27 00:05:36
|-
|idletime
|931024 88.35 %
|2013-11-27 00:05:36
|-
|idletime_text
|10 days, 18 hours, 37 minutes (88.35 %)
|2013-11-27 00:05:36
|-
|loadavg
|0.14 0.18 0.22
|2013-11-27 00:05:36
|-
|ram
|Total: 485 MB, Used: 140 MB, 28.87 %, Free: 345 MB
|2013-11-27 00:05:36
|-
|swap
|n/a
|2013-11-27 00:05:36
|-
|uptime
|1053739
|2013-11-27 00:05:36
|-
|uptime_text
|12 days, 04 hours, 42 minutes
|2013-11-27 00:05:36
|-
|wlan0
|RX: 0.00 MB, TX: 0.00 MB, Total: 0 MB
|2013-11-27 00:05:36
|-
|wlan0_diff
|RX: 0.00 MB, TX: 0.00 MB, Total: 0.00 MB
|2013-11-27 00:05:36
|-
|fs_root
|Total: 7404 MB, Used: 3533 MB, 50 %, Available: 3545 MB at /
|2013-11-27 00:05:36
|-
|fs_boot
|Total: 56 MB, Used: 19 MB, 33 %, Available: 38 MB at /boot
|2013-11-27 00:05:36
|-
|fs_usb1
|Total: 30942 MB, Used: 6191 MB, 21 %, Available: 24752 MB at /media/usb1 
|2013-11-27 00:05:36
|-
|stat_cpu
|10145283 0 2187286 90586051 542691 69393 400342 
|2013-11-27 00:05:36
|-
|stat_cpu_diff
|2151 0 1239 2522 10 3 761 
|2013-11-27 00:05:36
|-
|stat_cpu_percent
|4.82 0.00 1.81 93.11 0.05 0.00 0.20 
|2013-11-27 00:05:36
|-
|stat_cpu_text
|user: 32.17 %, nice: 0.00 %, sys: 18.53 %, idle: 37.72 %, io: 0.15 %, irq: 0.04 %, sirq: 11.38 % 
|2013-11-27 00:05:36
|}


==Befehle==
==Befehle==
===get===
*interval
:Listet die bei der Definition angegebene Polling-Intervalle auf.


===get===
*list
-TODO-
:Gibt alle Readings aus.
 
*update
:Aktualisiert alle Readings. Alle Werte werden neu abgefragt.
 
*version
:Zeigt die Version des SYSMON-Moduls.


===set===
===set===
-TODO-
*interval_multipliers
:Definiert Multipliers (wie bei der Definition des Gerätes).
 
*clean
:Löscht benutzerdefinierbare Readings. Nach einem Update (oder nach der automatischen Aktualisierung) werden neue Readings generiert.
 
*clear <reading name>
:Löscht den Reading-Eintrag mit dem gegebenen Namen. Nach einem Update (oder nach der automatischen Aktualisierung) wird dieser Eintrag ggf. neu erstellt (falls noch definiert). Dieses Mechanismus erlaubt das gezielte Löschen nicht mehr benötigter benutzerdefinierten Einträge.


==Attribute==
==Attribute==
-TODO-
*filesystems <reading name>[:<mountpoint>[:<comment>]],...
:Gibt die zu überwachende Dateisysteme an. Es wird eine kommaseparierte Liste erwartet.
:Reading-Name wird bei der Anzeige und Logging verwendet, Mount-Point ist die Grundlage der Auswertung, Kommentar ist relevant für die HTML-Anzeige (s. SYSMON_ShowValuesHTML)
:Beispiel: /boot,/,/media/usb1
:oder: fs_boot:/boot,fs_root:/:Root,fs_usb1:/media/usb1:USB-Stick
:Im Sinne der besseren Übersicht sollten zumindest Name und MountPoint angegeben werden.
 
*network-interfaces <name>[:<interface>[:<comment>]],...
:Kommaseparierte Liste der Netzwerk-Interfaces, die überwacht werden sollen. Jeder Eintrag besteht aus dem Reading-Namen, dem Namen des Netzwerk-Adapters und einem Kommentar für die HTML-Anzeige (s. SYSMON_ShowValuesHTML). Wird kein Doppelpunkt verwendet, wird der Wert gleichzeitig als Reading-Name und Interface-Name verwendet.
:Beispiel ethernet:eth0:Ethernet,wlan:wlan0:WiFi
 
*user-defined <readingsName>:<Interval_Minutes>:<Comment>:<Cmd>,...
:Diese kommaseparierte Liste definiert Einträge mit jeweils folgenden Daten: Reading-Name, Aktualisierungsintervall in Minuten, Kommentar und Betriebssystem-Kommando.
:Die BS-Befehle werden entsprechend des angegebenen Intervalls ausgeführt und als Readings mit den angegebenen Namen vermerkt. Kommentare werden für die HTML-Ausgaben (s. SYSMON_ShowValuesHTML) benötigt.
:Alle Parameter sind nicht optional!
:Es ist wichtig, dass die angegebenen Befehle schnell ausgeführt werden, denn in dieser Zeit wird der gesamte FHEM-Server blockiert!
:Werden Ergebnisse der lang laufenden Operationen benötigt, sollten diese z.B als CRON-Job eingerichtet werden und in FHEM nur die davor gespeicherten Ausgaben visualisiert.
 
:Beispiel: Anzeige der vorliegenden Paket-Aktualisierungen für das Betriebssystem:
:In einem cron-Job wird folgendes täglich ausgeführt:
:apt-get upgrade --dry-run| perl -ne '/(\d*)\s[upgraded|aktualisiert]\D*(\d*)\D*install|^ \S+.*/ and print "$1 aktualisierte, $2 neue Pakete"' 2>/dev/null > /opt/fhem/data/updatestatus.txt
:Das Attribute uder-defined wird auf
:sys_updates:1440:System Aktualisierungen:cat /opt/fhem/data/updatestatus.txt
:gesetzt. Danach wird die Anzahl der verfügbaren Aktualisierungen täglich als Reading 'sys_updates' protokolliert.
 
*disable
:Mögliche Werte: 0,1. Bei 1 wird die Aktualisierung gestoppt.


==Plots==
==Plots==
-TODO-
Für dieses Modul sind bereits einige gplot-Dateien vordefiniert:
 
:FileLog-Versionen:
::SM_RAM.gplot
::SM_CPUTemp.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_CPUStat.gplot
::SM_CPUStatSum.gplot
::SM_CPUStatTotal.gplot
::SM_power_ac.gplot
::SM_power_usb.gplot
::SM_power_battery.gplot
:DbLog-Versionen:
::SM_DB_all.gplot
::SM_DB_CPUFreq.gplot
::SM_DB_CPUTemp.gplot
::SM_DB_Load.gplot
::SM_DB_Network_eth0.gplot
::SM_DB_RAM.gplot


==Methoden==
==Methoden==
===HTML-Ausgabe===
===HTML-Ausgabe===
HTML-Ausgabe-Methode (für ein Weblink): SYSMON_ShowValuesHTML(<SYSMON-Instanz>[,<Liste>])
HTML-Ausgabe-Methode (für ein Weblink): SYSMON_ShowValuesHTML(<SYSMON-Instanz>[,<Liste>])


-TODO-
Das Modul definiert eine Funktion, die ausgewählte Readings in HTML-Format ausgibt.
Als Parameter wird der Name des definierten SYSMON-Geräts erwartet.
Der zweite Parameter ist optional und gibt eine Liste der anzuzeigenden Readings im Format <ReadingName>[:<Comment>[:<Postfix>]] an.
Dabei gibt ReadingName den anzuzeigenden Reading an, der Wert aus Comment wird als der Anzeigename verwendet und Postfix wird nach dem einheitlichen Wert angezeigt (so können z.B. Einheiten wie MHz angezeigt werden).
Falls kein Comment angegeben ist, wird eine intern vordefinierte Beschreibung angegeben. Bei benutzerdefinierbaren Readings wird ggf. Comment aus der Definition verwendet.
Wird keine Liste angegeben, wird eine vordefinierte Auswahl verwendet (alle Werte).
 
<pre>define sysv1 weblink htmlCode {SYSMON_ShowValuesHTML('sysmon')}
define sysv2 weblink htmlCode {SYSMON_ShowValuesHTML('sysmon', ('date:Datum', 'cpu_temp:CPU Temperatur: °C', 'cpu_freq:CPU Frequenz: MHz'))}
</pre>


===Text-Ausgabe===
===Text-Ausgabe===
-TODO-
Text-Ausgabe-Methode: SYSMON_ShowValuesText(<SYSMON-Instance>[,<Liste>])
 
Analog SYSMON_ShowValuesHTML, jedoch formatiert als reines Text.


===Readings-Werte mit Perl lesen===
===Readings-Werte mit Perl lesen===
SYSMON_getValues([<Liste der gewünschten Schlüssel>])
SYSMON_getValues([<Liste der gewünschten Schlüssel>])


-TODO-
Liefert ein Hash-Ref mit den gewünschten Werten. Wenn keine Liste (array) übergeben wird, werden alle Werte geliefert.


==Beispielkonfiguration==
==Beispielkonfiguration==
<syntaxhighlight lang="Perl">
define sysmon SYSMON 1 1 1 10
# Modul-Definition
#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_.*,stat_cpu_percent
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ür 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ür 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
define wl_sysmon_cpustatT SVG FileLog_sysmon:SM_CPUStatTotal:CURRENT
attr wl_sysmon_cpustatT label "CPU-Auslastung"
attr wl_sysmon_cpustatT group RPi
attr wl_sysmon_cpustatT plotsize 840,420
# Anzeige Stromversorgung AC
define wl_sysmon_power_ac SVG FileLog_sysmon:SM_power_ac:CURRENT
attr wl_sysmon_power_ac label "Stromversorgung (ac) Spannung: $data{min1} - $data{max1} V,  Strom: $data{min2} - $data{max2} mA"
attr wl_sysmon_power_ac room Technik
attr wl_sysmon_power_ac group system
# Anzeige Stromversorgung Battery
define wl_sysmon_power_bat SVG FileLog_sysmon:SM_power_battery:CURRENT
attr wl_sysmon_power_bat label "Stromversorgung (bat) Spannung: $data{min1} - $data{max1} V,  Strom: $data{min2} - $data{max2} mA"
attr wl_sysmon_power_bat room Technik
attr wl_sysmon_power_bat group system
</syntaxhighlight>
==Konfigurationsbeispiel "Remote System per SSH"==
Es bedarf einiger Vorarbeit, damit man sich per SSH verbinden kann. Im folgenden Beispiel geht es um einen kleinen Orange Pi als Snapcast Audioreceiver. Dazu ein passwortloses Login per authkey ermöglicht werden. Das wird auf dem FHEM Server als fhem User mit folgendem Befehl erzeugt:
<syntaxhighlight lang="bash">
ssh-keygen -t rsa
</syntaxhighlight>
Auf dem zu überwachenden Gerät (hier der OPi) wird ein Benutzer zum Abfragen der Daten angelegt.
<syntaxhighlight lang="bash">
adduser fhemremote
</syntaxhighlight>
Nun muss noch der Key vom FHEM Server zum OPi übertragen werden (auf dem FHEM Server als fhem User ausführen):
<syntaxhighlight lang="bash">
ssh-copy-id fhemremote@orangeaudio1
</syntaxhighlight>
Jetzt noch einmal das Passwort des fhemremote User eingeben und die Vorbereitung ist geschafft.


    # Modul-Definition
Jetzt kann das Device angelegt werden. Ich überwache zusätzlich noch die Installierbaren Pakete einmal am Tag.
    define sysmon SYSMON 1 1 1 10
<syntaxhighlight lang="Perl">
    #attr sysmon event-on-update-reading cpu_temp,cpu_temp_avg,cpu_freq,eth0_diff,loadavg,ram,^~ /.*usb.*,~ /$
define systemSysmonOrangeAudio1 SYSMON ssh:fhemremote@orangeaudio1 1 10 10 10
    attr sysmon event-on-update-reading cpu_temp,cpu_temp_avg,cpu_freq,eth0_diff,loadavg,ram,fs_.*,stat_cpu_percent
attr systemSysmonOrangeAudio1 room Audio,Systemgeräte
    attr sysmon filesystems fs_boot:/boot,fs_root:/:Root,fs_usb1:/media/usb1:USB-Stick
attr systemSysmonOrangeAudio1 user-defined apt_upgradeable_pkg:1440:Upgradable Packages in Apt:apt-get -q -y --ignore-hold --allow-change-held-packages --allow-unauthenticated -s dist-upgrade | /bin/grep  ^Inst | wc -l
    attr sysmon network-interfaces eth0:eth0:Ethernet,wlan0:wlan0:WiFi
</syntaxhighlight>
    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ür 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ür 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
    define wl_sysmon_cpustatT SVG FileLog_sysmon:SM_CPUStatTotal:CURRENT
    attr wl_sysmon_cpustatT label "CPU-Auslastung"
    attr wl_sysmon_cpustatT group RPi
    attr wl_sysmon_cpustatT plotsize 840,420


...to be continued...
== Links ==
* ...

Aktuelle Version vom 23. Januar 2023, 08:37 Uhr

SYSMON
Zweck / Funktion
Anzeige von Informationen und Statistiken zu dem System, auf dem FHEM ausgeführt wird.
Allgemein
Typ Gerätemodul
Details
Dokumentation EN / DE
Support (Forum) Unterstützende Dienste
Modulname 42_SYSMON.pm
Ersteller hexenmeister
(Forum / Wiki)
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!

Das SYSMON Modul liefert diverse Informationen und Statistiken zu dem System, auf dem FHEM-Server ausgeführt wird. Seit Version 2.0 können auch Remote-Systeme abgefragt werden (Telnet). Es werden nur Linux-basierte Systeme unterstützt. Manche Informationen sind hardwarespezifisch und sind daher nicht auf jeder Plattform verfügbar. Bis jetzt wurde dieses Modul auf folgenden Systemen getestet: Raspberry Pi (Debian Wheezy), BeagleBone Black, FritzBox 7390, WR703N unter OpenWrt, CubieTruck und einige andere.

Für Informationen zu einer FritzBox beachten Sie bitte auch Module: FRITZBOX und FB_CALLMONITOR.

Das Modul nutzt das Perlmodule 'Net::Telnet' für den Fernzugriff. Dieses muss ggf. nachinstalliert werden. Unter Ubuntu kann dafür das Paket libnet-telnet-perl verwendet werden.

Definition

define <name> SYSMON [MODE[:[USER@]HOST][:PORT]] [<M1>[ <M2>[ <M3>[ <M4>]]]]

Diese Anweisung erstellt eine neue SYSMON-Instanz. Die Parameter M1 bis M4 legen die Aktualisierungsintervalle für verschiedenen Readings (Statistiken) fest. Die Parameter sind als Multiplikatoren für die Zeit, die durch INTERVAL_BASE definiert ist, zu verstehen. Da diese Zeit fest auf 60 Sekunden gesetzt ist, können die Mx-Parameters als Zeitintervalle in Minuten angesehen werden. Wird einer (oder mehrere) Multiplikatoren auf Null gesetzt werden, wird das entsprechende Readings deaktiviert.

Parameter

Die Parameter sind für die Aktualisierung der Readings nach folgender Schema zuständig:

  • M1: (Default-Wert: 1)
CPU-Daten: cpu_freq, cpu_temp, cpu_temp_avg, loadavg, stat_cpu, stat_cpu_diff, stat_cpu_percent, stat_cpu_text, power readings
  • M2: (Default-Wert: M1)
Speicher: ram, swap etc.
  • M3: (Default-Wert: M1)
Netztwerkinformationen: eth0, eth0_diff, wlan0, wlan0_diff etc.
  • M4: (Default-Wert: 10*M1)
Filesystem-Informationen

folgende Readings werden immer anhand des Basisintervalls (unabhängig von den Mx-Parameters) aktualisiert: fhemuptime, fhemuptime_text, idletime, idletime_text, uptime, uptime_text

Für Abfrage eines entfernten Systems muss mindestens deren Adresse (HOST) angegeben werden, bei Bedarf ergänzt durch den Port und/oder den Benutzernamen. Das eventuell benötigte Passwort muss einmalig mit dem Befehl 'set password <pass>' definiert werden. Als MODE sind derzeit 'telnet' und 'local' erlaubt. 'local' erfordert keine weiteren Angaben und kann auch ganz weggelassen werden.

readings

  • cpu_bogomips
CPU Speed: BogoMIPS
  • cpu_freq
CPU-Frequenz
  • cpu_temp
CPU-Temperatur
  • cpu_temp_avg
Durchschnitt der CPU-Temperatur, gebildet über die letzten 4 Werte.
  • fhemuptime
Zeit (in Sekunden) seit dem Start des FHEM-Servers.
  • fhemuptime_text
Zeit seit dem Start des FHEM-Servers: Menschenlesbare Ausgabe (textuelle Darstellung).
  • idletime
Zeit (in Sekunden und in Prozent), die das System (nicht der FHEM-Server!) seit dem Start in dem Idle-Modus verbracht hat. Also die Zeit der Inaktivität.
  • idletime_text
Zeit der Inaktivität des Systems seit dem Systemstart in menschenlesbarer Form.
  • loadavg
Ausgabe der Werte für die Systemauslastung (load average): 1 Minute-, 5 Minuten- und 15 Minuten-Werte.
  • ram
Ausgabe der Speicherauslastung.
  • swap
Benutzung und Auslastung der SWAP-Datei (bzw. Partition).
  • uptime
Zeit (in Sekunden) seit dem Systemstart.
  • uptime_text
Zeit seit dem Systemstart in menschenlesbarer Form.
  • Netzwerkinformationen
Informationen zu den über die angegebene Netzwerkschnittstellen übertragene Datenmengen und der Differenz zu der vorherigen Messung.
Beispiele:
Menge der übertragenen Daten über die Schnittstelle eth0.
eth0: RX: 940.58 MB, TX: 736.19 MB, Total: 1676.77 MB
Änderung der übertragenen Datenmenge in Bezug auf den vorherigen Aufruf (für eth0).
eth0_diff: RX: 0.66 MB, TX: 0.06 MB, Total: 0.72 MB
  • Dateisysteminformationen
Informationen zu der Größe und der Belegung der gewünschten Dateisystemen.
Seit Version 1.1.0 können Dateisysteme auch benannt werden (s.u.).
In diesem Fall werden für die diese Readings die angegebenen Namen verwendet.
Dies soll die Übersicht verbessern und die Erstellung von Plots erleichtern.
Beispiel:
fs_root: Total: 7340 MB, Used: 3573 MB, 52 %, Available: 3425 MB at /
  • CPU Auslastung
Informationen zu der Auslastung der CPU(s).
Beispiel:
stat_cpu: 10145283 0 2187286 90586051 542691 69393 400342
stat_cpu_diff: 2151 0 1239 2522 10 3 761
stat_cpu_percent: 4.82 0.00 1.81 93.11 0.05 0.00 0.20
stat_cpu_text: user: 32.17 %, nice: 0.00 %, sys: 18.53 %, idle: 37.72 %, io: 0.15 %, irq: 0.04 %, sirq: 11.38 %
  • Benutzerdefinierte Einträge
Diese Readings sind Ausgaben der Kommandos, die an das Betriebssystem übergeben werden. Die entsprechende Angaben werden im Attribut user-defined vorgenommen.

FritzBox-spezifische Readings

  • wlan_state
WLAN-Status: on/off
  • wlan_guest_state
Gast-WLAN-Status: on/off
  • internet_ip
aktuelle IP-Adresse
  • internet_state
Status der Internetverbindung: connected/disconnected
  • night_time_ctrl
Status der Klingelsperre on/off
  • num_new_messages
Anzahl der neuen Anrufbeantworter-Meldungen
  • fw_version_info
Angaben zu der installierten Firmware-Version:


Readings zur Stromversorgung

  • power_ac_stat
Statusinformation für die AC-Buchse: present (0|1), online (0|1), voltage, current
Beispiel:
power_ac_stat: 1 1 4.807 264
  • power_ac_text
Statusinformation für die AC-Buchse in menschenlesbarer Form
Beispiel:
power_ac_text ac: present / online, Voltage: 4.807 V, Current: 264 mA
  • power_usb_stat
Statusinformation für die USB-Buchse
  • power_usb_text

Statusinformation für die USB-Buchse in menschenlesbarer Form

  • power_battery_stat
Statusinformation für die Batterie (wenn vorhanden): present (0|1), online (0|1), voltage, current, actual capacity
Beispiel:
power_battery_stat: 1 1 4.807 264 100
  • power_battery_text
Statusinformation für die Batterie (wenn vorhanden) in menschenlesbarer Form
  • power_battery_info
Menschenlesbare Zusatzinformationen für die Batterie (wenn vorhanden): Technologie, Kapazität, Status, Zustand, Gesamtkapazität
Beispiel:
power_battery_info: battery info: Li-Ion , capacity: 100 %, status: Full , health: Good , total capacity: 2100 mAh

Ausgabe-Beispiel

cpu_freq 900 2013-11-27 00:05:36
cpu_temp 49.77 2013-11-27 00:05:36
cpu_temp_avg 49.7 2013-11-27 00:05:36
eth0 RX: 2954.22 MB, TX: 3469.21 MB, Total: 6423.43 MB 2013-11-27 00:05:36
eth0_diff RX: 6.50 MB, TX: 0.23 MB, Total: 6.73 MB 2013-11-27 00:05:36
fhemuptime 11231 2013-11-27 00:05:36
fhemuptime_text 0 days, 03 hours, 07 minutes 2013-11-27 00:05:36
idletime 931024 88.35 % 2013-11-27 00:05:36
idletime_text 10 days, 18 hours, 37 minutes (88.35 %) 2013-11-27 00:05:36
loadavg 0.14 0.18 0.22 2013-11-27 00:05:36
ram Total: 485 MB, Used: 140 MB, 28.87 %, Free: 345 MB 2013-11-27 00:05:36
swap n/a 2013-11-27 00:05:36
uptime 1053739 2013-11-27 00:05:36
uptime_text 12 days, 04 hours, 42 minutes 2013-11-27 00:05:36
wlan0 RX: 0.00 MB, TX: 0.00 MB, Total: 0 MB 2013-11-27 00:05:36
wlan0_diff RX: 0.00 MB, TX: 0.00 MB, Total: 0.00 MB 2013-11-27 00:05:36
fs_root Total: 7404 MB, Used: 3533 MB, 50 %, Available: 3545 MB at / 2013-11-27 00:05:36
fs_boot Total: 56 MB, Used: 19 MB, 33 %, Available: 38 MB at /boot 2013-11-27 00:05:36
fs_usb1 Total: 30942 MB, Used: 6191 MB, 21 %, Available: 24752 MB at /media/usb1 2013-11-27 00:05:36
stat_cpu 10145283 0 2187286 90586051 542691 69393 400342 2013-11-27 00:05:36
stat_cpu_diff 2151 0 1239 2522 10 3 761 2013-11-27 00:05:36
stat_cpu_percent 4.82 0.00 1.81 93.11 0.05 0.00 0.20 2013-11-27 00:05:36
stat_cpu_text user: 32.17 %, nice: 0.00 %, sys: 18.53 %, idle: 37.72 %, io: 0.15 %, irq: 0.04 %, sirq: 11.38 % 2013-11-27 00:05:36

Befehle

get

  • interval
Listet die bei der Definition angegebene Polling-Intervalle auf.
  • list
Gibt alle Readings aus.
  • update
Aktualisiert alle Readings. Alle Werte werden neu abgefragt.
  • version
Zeigt die Version des SYSMON-Moduls.

set

  • interval_multipliers
Definiert Multipliers (wie bei der Definition des Gerätes).
  • clean
Löscht benutzerdefinierbare Readings. Nach einem Update (oder nach der automatischen Aktualisierung) werden neue Readings generiert.
  • clear <reading name>
Löscht den Reading-Eintrag mit dem gegebenen Namen. Nach einem Update (oder nach der automatischen Aktualisierung) wird dieser Eintrag ggf. neu erstellt (falls noch definiert). Dieses Mechanismus erlaubt das gezielte Löschen nicht mehr benötigter benutzerdefinierten Einträge.

Attribute

  • filesystems <reading name>[:<mountpoint>[:<comment>]],...
Gibt die zu überwachende Dateisysteme an. Es wird eine kommaseparierte Liste erwartet.
Reading-Name wird bei der Anzeige und Logging verwendet, Mount-Point ist die Grundlage der Auswertung, Kommentar ist relevant für die HTML-Anzeige (s. SYSMON_ShowValuesHTML)
Beispiel: /boot,/,/media/usb1
oder: fs_boot:/boot,fs_root:/:Root,fs_usb1:/media/usb1:USB-Stick
Im Sinne der besseren Übersicht sollten zumindest Name und MountPoint angegeben werden.
  • network-interfaces <name>[:<interface>[:<comment>]],...
Kommaseparierte Liste der Netzwerk-Interfaces, die überwacht werden sollen. Jeder Eintrag besteht aus dem Reading-Namen, dem Namen des Netzwerk-Adapters und einem Kommentar für die HTML-Anzeige (s. SYSMON_ShowValuesHTML). Wird kein Doppelpunkt verwendet, wird der Wert gleichzeitig als Reading-Name und Interface-Name verwendet.
Beispiel ethernet:eth0:Ethernet,wlan:wlan0:WiFi
  • user-defined <readingsName>:<Interval_Minutes>:<Comment>:<Cmd>,...
Diese kommaseparierte Liste definiert Einträge mit jeweils folgenden Daten: Reading-Name, Aktualisierungsintervall in Minuten, Kommentar und Betriebssystem-Kommando.
Die BS-Befehle werden entsprechend des angegebenen Intervalls ausgeführt und als Readings mit den angegebenen Namen vermerkt. Kommentare werden für die HTML-Ausgaben (s. SYSMON_ShowValuesHTML) benötigt.
Alle Parameter sind nicht optional!
Es ist wichtig, dass die angegebenen Befehle schnell ausgeführt werden, denn in dieser Zeit wird der gesamte FHEM-Server blockiert!
Werden Ergebnisse der lang laufenden Operationen benötigt, sollten diese z.B als CRON-Job eingerichtet werden und in FHEM nur die davor gespeicherten Ausgaben visualisiert.
Beispiel: Anzeige der vorliegenden Paket-Aktualisierungen für das Betriebssystem:
In einem cron-Job wird folgendes täglich ausgeführt:
apt-get upgrade --dry-run| perl -ne '/(\d*)\s[upgraded|aktualisiert]\D*(\d*)\D*install|^ \S+.*/ and print "$1 aktualisierte, $2 neue Pakete"' 2>/dev/null > /opt/fhem/data/updatestatus.txt
Das Attribute uder-defined wird auf
sys_updates:1440:System Aktualisierungen:cat /opt/fhem/data/updatestatus.txt
gesetzt. Danach wird die Anzahl der verfügbaren Aktualisierungen täglich als Reading 'sys_updates' protokolliert.
  • disable
Mögliche Werte: 0,1. Bei 1 wird die Aktualisierung gestoppt.

Plots

Für dieses Modul sind bereits einige gplot-Dateien vordefiniert:

FileLog-Versionen:
SM_RAM.gplot
SM_CPUTemp.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_CPUStat.gplot
SM_CPUStatSum.gplot
SM_CPUStatTotal.gplot
SM_power_ac.gplot
SM_power_usb.gplot
SM_power_battery.gplot
DbLog-Versionen:
SM_DB_all.gplot
SM_DB_CPUFreq.gplot
SM_DB_CPUTemp.gplot
SM_DB_Load.gplot
SM_DB_Network_eth0.gplot
SM_DB_RAM.gplot

Methoden

HTML-Ausgabe

HTML-Ausgabe-Methode (für ein Weblink): SYSMON_ShowValuesHTML(<SYSMON-Instanz>[,<Liste>])

Das Modul definiert eine Funktion, die ausgewählte Readings in HTML-Format ausgibt. Als Parameter wird der Name des definierten SYSMON-Geräts erwartet. Der zweite Parameter ist optional und gibt eine Liste der anzuzeigenden Readings im Format <ReadingName>[:<Comment>[:<Postfix>]] an. Dabei gibt ReadingName den anzuzeigenden Reading an, der Wert aus Comment wird als der Anzeigename verwendet und Postfix wird nach dem einheitlichen Wert angezeigt (so können z.B. Einheiten wie MHz angezeigt werden). Falls kein Comment angegeben ist, wird eine intern vordefinierte Beschreibung angegeben. Bei benutzerdefinierbaren Readings wird ggf. Comment aus der Definition verwendet. Wird keine Liste angegeben, wird eine vordefinierte Auswahl verwendet (alle Werte).

define sysv1 weblink htmlCode {SYSMON_ShowValuesHTML('sysmon')}
define sysv2 weblink htmlCode {SYSMON_ShowValuesHTML('sysmon', ('date:Datum', 'cpu_temp:CPU Temperatur: °C', 'cpu_freq:CPU Frequenz: MHz'))}

Text-Ausgabe

Text-Ausgabe-Methode: SYSMON_ShowValuesText(<SYSMON-Instance>[,<Liste>])

Analog SYSMON_ShowValuesHTML, jedoch formatiert als reines Text.

Readings-Werte mit Perl lesen

SYSMON_getValues([<Liste der gewünschten Schlüssel>])

Liefert ein Hash-Ref mit den gewünschten Werten. Wenn keine Liste (array) übergeben wird, werden alle Werte geliefert.

Beispielkonfiguration

define sysmon SYSMON 1 1 1 10
# Modul-Definition
#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_.*,stat_cpu_percent
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ür 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ür 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
define wl_sysmon_cpustatT SVG FileLog_sysmon:SM_CPUStatTotal:CURRENT
attr wl_sysmon_cpustatT label "CPU-Auslastung"
attr wl_sysmon_cpustatT group RPi
attr wl_sysmon_cpustatT plotsize 840,420

# Anzeige Stromversorgung AC
define wl_sysmon_power_ac SVG FileLog_sysmon:SM_power_ac:CURRENT
attr wl_sysmon_power_ac label "Stromversorgung (ac) Spannung: $data{min1} - $data{max1} V,  Strom: $data{min2} - $data{max2} mA"
attr wl_sysmon_power_ac room Technik
attr wl_sysmon_power_ac group system

# Anzeige Stromversorgung Battery
define wl_sysmon_power_bat SVG FileLog_sysmon:SM_power_battery:CURRENT
attr wl_sysmon_power_bat label "Stromversorgung (bat) Spannung: $data{min1} - $data{max1} V,  Strom: $data{min2} - $data{max2} mA"
attr wl_sysmon_power_bat room Technik
attr wl_sysmon_power_bat group system

Konfigurationsbeispiel "Remote System per SSH"

Es bedarf einiger Vorarbeit, damit man sich per SSH verbinden kann. Im folgenden Beispiel geht es um einen kleinen Orange Pi als Snapcast Audioreceiver. Dazu ein passwortloses Login per authkey ermöglicht werden. Das wird auf dem FHEM Server als fhem User mit folgendem Befehl erzeugt:

ssh-keygen -t rsa

Auf dem zu überwachenden Gerät (hier der OPi) wird ein Benutzer zum Abfragen der Daten angelegt.

adduser fhemremote

Nun muss noch der Key vom FHEM Server zum OPi übertragen werden (auf dem FHEM Server als fhem User ausführen):

ssh-copy-id fhemremote@orangeaudio1

Jetzt noch einmal das Passwort des fhemremote User eingeben und die Vorbereitung ist geschafft.

Jetzt kann das Device angelegt werden. Ich überwache zusätzlich noch die Installierbaren Pakete einmal am Tag.

define systemSysmonOrangeAudio1 SYSMON ssh:fhemremote@orangeaudio1 	1 10 10 10
attr systemSysmonOrangeAudio1 room Audio,Systemgeräte
attr systemSysmonOrangeAudio1 user-defined apt_upgradeable_pkg:1440:Upgradable Packages in Apt:apt-get -q -y --ignore-hold --allow-change-held-packages --allow-unauthenticated -s dist-upgrade | /bin/grep  ^Inst | wc -l

Links

  • ...