Autor Thema: sysstat  (Gelesen 59560 mal)

Offline Masterfunk

  • Full Member
  • ***
  • Beiträge: 294
Antw:sysstat
« Antwort #120 am: 01 April 2015, 12:15:07 »
Ja, hab ich. Bekomme ja auch alle anderen Werte.

Gruß Detlef

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20150
Antw:sysstat
« Antwort #121 am: 01 April 2015, 12:16:00 »
schau mal unter welcher mib die werte stehen. dann baue ich die noch mit ein.

gruss
  andre
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline Masterfunk

  • Full Member
  • ***
  • Beiträge: 294
Antw:sysstat
« Antwort #122 am: 02 April 2015, 07:59:35 »
Werd am WE mal auf die Suche gehen.

Offline berbar

  • New Member
  • *
  • Beiträge: 38
Antw:sysstat
« Antwort #123 am: 06 Mai 2015, 23:57:39 »
Hi,

hab mal eine Frage bzgl. des BananaPi. Bei mir funktioniert das Auslesen der Temperatur nicht. Gibt es da einen Unterschied zum Rasp?

Beste Grüße
BananaPi, Fritz Box 7590, MapleCul, nanoCUL 1.67,  HM LAN, ZigBee II, deconz, FHEM 6.0
ESP-01 Garagentorsteuerung,  5xFS20ST, 1xFS20SU, 1xFS20SM4, 1xFS20SD, 12xMüller Tint GU10
2xHM-CC-TC, 4x HM-CC-VC, 8xHM-CC-RT-DN, 1xHM-TC-IT-WM-W-EU
Alexa-Fhem auf OrangePi One, FHEM2FHEM

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20150
Antw:sysstat
« Antwort #124 am: 07 Mai 2015, 09:50:27 »
ja. gibt es. ich meine das hatte ich nicht eingebaut weil mir damals niemand sagen konnte wo die temperatur auszulesen ist.

im sysmon modul ist es glaube ich inzwischen drin.

gruss
  andre
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline viegener

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3873
    • Meine Seite im fhemwiki
Antw:sysstat
« Antwort #125 am: 21 Mai 2015, 19:34:07 »
Ich habe gelegentlich eine falsche Anzeige der Uptime, wo ein zusätzliches "0 days," for der uptime steht. Ich habe dies mehrfach beobachtet aber noch kein sicheres Pattern identifiziert.

Es könnte sein, dass es damit zusammenhängt, dass uptime auf meinem raspberry so etwas ausgibt:

$ uptime
 18:52:21 up 26 days, 55 min,  1 user,  load average: 0.05, 0.05, 0.05

Normalerweise aber so:

$ uptime
 19:30:26 up 26 days,  1:33,  1 user,  load average: 0.07, 0.03, 0.05

Vermutung wäre dass es an der "xx min" Info anstatt einer "hh:mm" Angabe liegt, ich habe aber den regexp in SYSSTAT noch nicht daraufhin abgeklopft...

Hat das schonmal jemand beobachtet?

Gruss,
Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Offline viegener

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3873
    • Meine Seite im fhemwiki
Antw:sysstat
« Antwort #126 am: 24 Mai 2015, 11:08:50 »
Ich habe mal eine Korrektur für die falsche uptime-Anzeige für meine raspberry angefertigt.
Dazu müssten im Modul 32_SYSSTAT.pm in der Routine SYSSTAT_getUptime($) die Berechnung aus dem Ergebnis des Befehls uptime geändert werden (Ich habe auch eine modifizierte Version des Moduls als Attachment angehängt):

Bisher steht da (Zeilen 599-614)
  my $uptime = SYSSTAT_readCmd($hash,"uptime",0);

  $uptime = $1 if( $uptime && $uptime =~ m/[[:alpha:]]{2}\s+(((\d+)\D+,?\s+)?(\d+):(\d+))/ );
  $uptime = "0 days, $uptime" if( $uptime && !$2);

  if( AttrVal($name, "uptime", 0) == 2 ) {
    my $days = $3?$3:0;
    my $hours = $4;
    my $minutes = $5;

    $uptime = $days * 24;
    $uptime += $hours;
    $uptime *= 60;
    $uptime += $minutes;
    $uptime *= 60;
  }


dies sollte ersetzt werden durch
  my $uptime = SYSSTAT_readCmd($hash,"uptime",0);

  ############# match uptime time statement with the different formats seen on linux
  # examples
  #     18:52:21 up 26 days, 21:08,  2 users,  load average: 0.04, 0.03, 0.05
  #     18:52:21 up 26 days, 55 min,  1 user,  load average: 0.05, 0.05, 0.05
  #     18:52:21 up 55 min,  1 user,  load average: 0.05, 0.05, 0.05
  #     18:52:21 up 21:08,  1 user,  load average: 0.05, 0.05, 0.05
  #
  # complex expression to match only the time parts of the uptime result
  # $1 is complete up time information of uptime result
  # $2 is # days part of the uptime
  # $3 just the # from the "# days"" part or nothing if no days are given
  # $4 is complete hour/minutes or # min information
  # $5 is hours part if hours:min are given
  # $6 is minutes part if hours:min are given
  # $7 is minutes if # min is given
  $uptime = $1 if ( $uptime && $uptime =~ m/[[:alpha:]]{2}\s*(((\d*)\s*[[:alnum:]]*,?)?\s+((\d+):(\d+)|(\d+)\s+[[:alpha:]]+in[[:alpha:]]*)),?/ );
  $uptime = "0 days, $uptime" if( $uptime && !$2);
  if( AttrVal($name, "uptime", 0) == 2 ) {
    my $days = $3?$3:0;
    my $hours = $5?$5:0;
    my $minutes = $6?$6:$7;

    $uptime = $days * 24;
    $uptime += $hours;
    $uptime *= 60;
    $uptime += $minutes;
    $uptime *= 60;
  }

Im wesentlichen geht es darum den regexp für mehr verschiedene Varianten fit zu machen. Die verschiedenen Varianten sind auch im Kommentar zusammen mit den "geparsten" Elementen des regexp enthalten.

Eigentlich wäre wahrscheinlich ein Auslesen von /proc/uptime die sauberere Lösung, ich habe aber daran mal nichts geändert.

Vielleicht kann das ja Einzug in die nächste Version halten?

Gruss,
Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20150
Antw:sysstat
« Antwort #127 am: 24 Mai 2015, 11:20:04 »
sorry für die späte antwort. ich habe gerade wenig zeit.

ja. das problem ist die unterschiedliche ausgabe von uptime in unterschiedlichen linux versionen.

inzwischen gibt es ein neben SYSSTAT_readCmd auch ein SYSSTAT_readFile und ich würde das ganze damit eigentlich lieber auf das auslesen von /proc/uptime umstellen.

falls du zeit und lust dazu hast würde ich lieber einen solchen patch einbauen :) wenn nicht tut es erst diese version. die ist vor allem mit deinen kommentaren schon mal viel besser wie die alte.

gruss
  andre
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline viegener

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3873
    • Meine Seite im fhemwiki
Antw:sysstat
« Antwort #128 am: 24 Mai 2015, 18:41:17 »
sorry für die späte antwort. ich habe gerade wenig zeit.

Das kenne ich sehr gut ...

inzwischen gibt es ein neben SYSSTAT_readCmd auch ein SYSSTAT_readFile und ich würde das ganze damit eigentlich lieber auf das auslesen von /proc/uptime umstellen.

falls du zeit und lust dazu hast würde ich lieber einen solchen patch einbauen :) wenn nicht tut es erst diese version. die ist vor allem mit deinen kommentaren schon mal viel besser wie die alte.

OK, hier ist ein Vorschlag (wieder an der selben Stelle einzusetzen):

  my $uptime = SYSSTAT_readFile($hash,"/proc/uptime","");
  if($uptime) {
 
    $uptime = $1 if ( $uptime && $uptime =~ /^\s*([0-9.]+)\s+([0-9.]+)/ );

    if( AttrVal($name, "uptime", 0) != 2 ) {
      # cut off partial seconds
      $uptime = int( $uptime );
      my $seconds = $uptime % 60;
      $uptime = int($uptime / 60);
      my $minutes = $uptime % 60;
      $uptime = int($uptime / 60);

      my $hours = $uptime % 24;
      my $days = int($uptime / 24);

      $uptime = sprintf( "%d days, %d:%.2d", $days, $hours, $minutes);
      Log3 $name, 4, "$name: uptime returned :$uptime: via proc-uptime file ";    # JVI
    }

  # fallback if by any reason parsing /proc/uptime does not work
  } else {
    my $uptime = SYSSTAT_readCmd($hash,"uptime",0);

    ############# match uptime time statement with the different formats seen on linux
    # examples
    #     18:52:21 up 26 days, 21:08,  2 users,  load average: 0.04, 0.03, 0.05
    #     18:52:21 up 26 days, 55 min,  1 user,  load average: 0.05, 0.05, 0.05
    #     18:52:21 up 55 min,  1 user,  load average: 0.05, 0.05, 0.05
    #     18:52:21 up 21:08,  1 user,  load average: 0.05, 0.05, 0.05
    #
    # complex expression to match only the time parts of the uptime result
    # $1 is complete up time information of uptime result
    # $2 is # days part of the uptime
    # $3 just the # from the "# days"" part or nothing if no days are given
    # $4 is complete hour/minutes or # min information
    # $5 is hours part if hours:min are given
    # $6 is minutes part if hours:min are given
    # $7 is minutes if # min is given
    $uptime = $1 if ( $uptime && $uptime =~ m/[[:alpha:]]{2}\s*(((\d*)\s*[[:alnum:]]*,?)?\s+((\d+):(\d+)|(\d+)\s+[[:alpha:]]+in[[:alpha:]]*)),?/ );
    $uptime = "0 days, $uptime" if( $uptime && !$2);
    if( AttrVal($name, "uptime", 0) == 2 ) {
      my $days = $3?$3:0;
      my $hours = $5?$5:0;
      my $minutes = $6?$6:$7;

      $uptime = $days * 24;
      $uptime += $hours;
      $uptime *= 60;
      $uptime += $minutes;
      $uptime *= 60;
    }
    Log3 $name, 4, "$name: uptime returned :$uptime: via cmdline ";    # JVI
  }

Funktioniert bei mir soweit gut, allerdings habe ich es ja erst heute eingebaut. Ich habe mal meine vorherige Version dringelassen als fallback, wenn /proc/uptime nichts liefern sollte (auf BSD-Systemen ?), auch wenn das vermutlich overkill ist, aber wenn ich schonmal mehr Kommentare als Code schreibe  ;D

Gruss,
Johannes



Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20150
Antw:sysstat
« Antwort #129 am: 27 Mai 2015, 12:05:08 »
danke. habe eingecheckt.

man könnte jetzt noch den wert des uptime attributes auswerten um direkt zwischen /proc/uptime und uptime zu wählen. aber das mache ich wenn sich jemand beschwert das es ohne zu langsam ist :)

gruss
  andre
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline Kai-Alfonso

  • Sr. Member
  • ****
  • Beiträge: 744
Antw:sysstat
« Antwort #130 am: 05 Juli 2015, 10:12:04 »
Hi,

ich hab mal eine Frage, was mir auch nach durchlesen von den 9 Seiten noch nicht klar ist, ob es geht und wie.

Ich will per SNMP Daten von per Netzwerk erreichbaren Geräten abfragen - SNMP ist natürlich aktiviert, MIBS müsste ich noch herausfinden. Ich hab hier zum Beispiel einen Homeserver von HP, wo ich Temperatur und Lüftergeschwindigkeit in FHEW visualisieren möchte. Geht das eigentlich?

Danke und nen schönen Sonntag
Raspi2|nanoCul433|nanoCul868|CCU2
Energie-USBZähler|homebrew HM Devices
DBLog|DBRep|Homematic|Baumarktsteckdosen
Hue|Webcams mit DS-Station (Synology)|Bewegungsmelder|Rollladen|Schalter (IT|HM)

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20150
Antw:sysstat
« Antwort #131 am: 05 Juli 2015, 10:17:52 »
die mibs sind zur zeit nicht konfigurierbar. es wird nur eine hand voll standard mibs abgefragt.

ich wollte das zwar schon vor einer weile einbauen, aber es schein kaum jemand zu brauchen :)

ein wichtiger punkt ist auch das fhem keine traps empfängt sondert aktiv pollt. es gibt also eine grenze bis zu welcher anzahl an mibs das überhaupt sinnvoll ist.

gruss
  andre
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20150
Antw:sysstat
« Antwort #132 am: 05 Juli 2015, 10:46:21 »
probier mal die angehängte version. es gibt ein neues attribut mibs. hier kannst du eine liste aus mit leerzeichen getrennten <mib>:<reading> werten hinterlegen die dann gepollt werden.

was damit nicht geht sind indirekte mibs abfragen. d.h. nur mibs in denen direkt der anzuzeigende wert steht funktionieren damit. wenn der wert noch aufbereitet oder formatiert werden muss würde ich das über ein user reading machen.

vermutlich wäre es bei mehr als ein paar wenigen reading sinnvoll das ganze asynchron im hintergrund zu machen. das mache ich wenn es doch genug anwender gibt.

gruss
  andre
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline Spiff

  • Full Member
  • ***
  • Beiträge: 255
Antw:sysstat
« Antwort #133 am: 05 Juli 2015, 12:06:55 »
Hi Andre,

könntest du damit leben wenn der : im reading durch einen . ersetzt wird ?

Hattest du das eigentlich schon geändert? Ich würde das Modul gerne wieder benutzen :)

Gruß
Spiff

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20150
Antw:sysstat
« Antwort #134 am: 05 Juli 2015, 12:40:09 »
stimmt. da war noch was...

das problem ist nicht der : sondern der \.

bitte bau mal vor zeile 305 das hier ein: $name =~ s.\\./.g;damit werden die \ zu / und es sollte gehen.

wenn das funktioniert baue ich es ein.

gruss
  andre
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

 

decade-submarginal