FHEM - Hausautomations-Systeme > Unterstützende Dienste

überarbeitet SYSSTAT modul: non-blocking, remote kommandos, beliebige readings

(1/33) > >>

justme1968:
anbei eine erste test version des SYSTAT moduls mit den folgenden neuen möglichkeiten:
* das überwachen entfernter hosts per ssh ist komplett auf non-blocking umgestellt.
es wird pro host nur noch eine einzige ssh verbindung aufgemacht, offen gehalten und wiederverwendet. die alte version hat pro update mehrere ssh verbindungen auf und wieder zu gemacht. das kann je nach system und netzwerk insgesamt zu verzögerungen im sekunden bereich führen und erzeugt auch auf dem zu überwachenden system eine deutlich höhere last.


* für systeme die per ssh überwacht werden ist es möglich kommandos an das entferntes system zu senden. z.b. shutdown zum runterfahren.
beispiel: set <device> raw shutdown -h now


* mit dem neuen attribut readings lassen sich beliebige zusätzliche readings konfigurieren deren inhalt die rückgabe eines kommandos sein kann.
die readings werden als liste von reading:kommando paren angegeben die durch newline getrennt sein müssen. im folgenden beispiel werden die readings processes und temperature definiert. processes enthält die anzahl der gerade laufen prozesse und temperature die per snmp abgefragte systemperatur einer synology diskstation. im unterschied zum normalen snmp mode blockiert fhem durch die anfrage nicht da das komplette kommando im hintergrund und auf dem zu überwachenden system ausgeführt wird.
attr <device> readings processes:ps ax | wc -l\                                   
                        temperature:snmpwalk -c public -v 1 10.0.1.21 .1.3.6.1.4.1.6574.1.2.0 | grep -oE ..$


* mit dem attribut readingsFormat können die so erhaltenen werte für die readings noch aufbereitet werden.
im folgenden beispiel werden die temperaturen aller on-board temperaturfahler und die frequenzen aller cpu kerne aus den entsprechenden files unter /sys/devices/system/cpu und /sys/class/thermal ausgelesen. die jeweils mehrzeilige ausgabe wird zum einen in einem temperatures reading zusammengefasst das das die einzelnen werte durch leerzeichen getrennt enthält und die einzel temperaturen werden zusätzlich in grad celsius umgerechnet und auf einzelne temppeatureX readings aufgeteilt. die frequenz werte werden ebenfalls aufgeteilt und zusäzlich noch gerundet.                 
attr <device> readings temperature:cat /sys/class/thermal/thermal*/temp\                       
                        temperatures:cat /sys/class/thermal/thermal*/temp\                     
                        frequency:cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
 
attr <device> readingsFormat { frequency => '{ $VALUE = [map {int($_ / 1000)} split("\n", $VALUE)] }',\
                        temperature => '{ $VALUE = [map {$_ / 1000} split("\n", $VALUE)] }',\
                        temperatures => '{ $VALUE =~ s/\n/ /g }' }

das aufteilen auf mehrere durchnummerierte readings erfolg automatisch wenn $VALUE eine array ref ist. siehe screenshot.


* auch lokal ausgeführte kommandos werden non-blocking im hintergrund ausgeführt. wenn sie sich nach 10 sekunden nicht beendet haben werden sie automatisch beendet. frage: timeout konfigurierbar machen?


* Sys::Statistics::Linux ist nicht mehr nötig 

die non-blocking änderungen betreffen zur zeit nur lokale und per ssh überwachte systeme und sind für snmp noch nicht umgesetzt. das soll vor dem einchecken aber noch passieren.

gruss
  andre

edit 03.12.2015: die snmp abfragen sind jetzt auch non-blocking

edit 10.12.2015: neues attribut noSSH.

edit 06.10.2015: readings und readingsFormat fix

edit 2016-06-15: automatische abfrage funktioniert auch ohne host angabe wieder, diverse warnungen behoben.

edit 2016-06-30: readingsFormat kann auch für mibs verwendet werden.

edit 2016-12-22: perl 5.24 inkompatibilitäten repariert 

edit 2021-03-11: diese version ist. jetzt eingecheckt.

pipp37:
Hallo.
Thanks for update.


Ich habe das Modul installiert und da ich meinen Mikrotik Router nur per SNMP abfrage, bekomme ich diese Logs.
Auch werden dann leider keine SNMP Abfragen mehr gemacht,
Es scheint so, als ob immer ssh Requests gemacht werden obwohl kein SSH konfiguriert ist.




--- Code: ---2015.10.25 10:46:29 2: MTMainRouterStat: starting: /usr/bin/ssh -q 192.168.27.254
2015.10.25 10:46:30 3: MTMainRouterStat: read: end of file reached while sysread
2015.10.25 10:46:30 3: MTMainRouterStat: Disconnected

--- Ende Code ---

list <device>


--- Code: ---Internals:
   CONNECTS   49
   DEF        300 600 192.168.27.254
   HAS_Net::SNMP 1
   HOST       192.168.27.254
   INTERVAL   300
   INTERVAL_FS 600
   LAST_DISCONNECT 2015-10-25 10:49:48
   NAME       MTMainRouterStat
   NR         571
   NTFY_ORDER 50-MTMainRouterStat
   PARSED     0
   PARTIAL
   SENT       1
   STARTED    0
   STATE      Disconnected
   SystemDescription RouterOS RB2011UAS-2HnD
   SystemName FirewallPipp
   TYPE       SYSSTAT
   USE_SNMP   1
   interval_fs 600
   snmpCommunity public
   snmpVersion 2
   QUEUE:
     HASH(0xa4130d0)
   Readings:
     2015-10-25 10:49:48   connection      disconnected
     2015-10-25 10:39:17   entPhysicalDescr RouterOS 6.32.3 on RB2011UAS-2HnD
     2015-10-25 10:39:17   load            0.03
     2015-10-25 10:39:17   lteBytesIN      950158506
     2015-10-25 10:39:17   lteBytesOUT     622815630
     2015-10-25 10:39:17   redBytesIN      95117103
     2015-10-25 10:39:17   redBytesOUT     55270818
     2015-10-25 10:39:17   state           3
     2015-10-14 20:08:08   sysDescr        RouterOS RB2011UAS-2HnD
     2015-10-25 10:39:17   uptime          2 days, 00:17:37.00
   Helper:
Attributes:
   mibs       .1.3.6.1.2.1.47.1.1.1.1.2.65536:entPhysicalDescr
.1.3.6.1.2.1.2.2.1.10.2:redBytesIN
.1.3.6.1.2.1.2.2.1.16.2:redBytesOUT
.1.3.6.1.2.1.2.2.1.10.3:lteBytesIN
.1.3.6.1.2.1.2.2.1.16.3:lteBytesOUT
   room       System
   snmp       1
   snmpCommunity public
   snmpVersion 2
   uptime     1

--- Ende Code ---



justme1968:
ja. das stimmt. diese version bevorzugt die abfrage über ssh.

mal sehen wie ich das rückwärtskompatibel hin bekomme.

wenn ich die snmp abfragen non-blocking hin bekomme kann ich aber sowieso wieder auf die alte reihenfolge schalten.

stay tuned...

gruss
  andre

pipp37:
Thanks.
Dann warte ich darauf und teste es dann. Leider musste ich wieder das originale Modul installieren weil sonst gar keine SNMP Abfragen  gemacht wurden.
Gruss Armin

mrbreil:
Ist die per update beziehbare Version jetzt schon die nonblocking version?

Grüße Christian

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln