SYSMON
SYSMON | |
---|---|
Zweck / Funktion | |
Anzeige von Informationen und Statistiken zu dem System, auf dem Fhem ausgeführt wird. | |
Allgemein | |
Typ | Hilfsmodul |
Details | |
Dokumentation | EN / DE |
Modulname | 42_SYSMON.pm |
Ersteller | hexenmeister / Hexenmeister |
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.
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
define <name> SYSMON [<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
- 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
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 (texttuelle 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 Sekenden) 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 erleichten.
- 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 Kommanden, 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:
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 Netwerk-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-Commando.
- 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
- 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 anzuzeigende 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 eihentlichen 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
-TODO-
Readings-Werte mit Perl lesen
SYSMON_getValues([<Liste der gewünschten Schlüssel>])
-TODO-
Beispielkonfiguration
# 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_.*,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
...to be continued...