sysstat

Begonnen von justme1968, 25 Januar 2013, 17:43:34

Vorheriges Thema - Nächstes Thema

Kai-Alfonso

Zitat von: justme1968 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


Hi, erstmal vielen Dank für die Änderung. Leider hab ich nach Upload und reload des Moduls noch kein Mib Attribut...
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)

justme1968

das hast du nur wenn das das perl Net::SNMP modul installiert ist (z.b. per cpan install Net::SNMP) und in den internals auch HAS_Net::SNMP 1 siehst.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Kai-Alfonso

Zitat von: justme1968 am 05 Juli 2015, 12:59:58
das hast du nur wenn das das perl Net::SNMP modul installiert ist (z.b. per cpan install Net::SNMP) und in den internals auch HAS_Net::SNMP 1 siehst.

gruss
  andre

Ja, hatte ich installiert - dachte ich zumindest, weil ich Perl Module meistens eher mit apt-get installiere und libsnmp-perl war installiert - reichte aber wohl nicht, mit der Nachinstallation per CPAN erkennt jetzt das Modul auch das Perl SNMP Modul und das mibs Attribut ist jetzt da.Mal weiter testen :)
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)

Spiff

Hi Andre,

Zitat von: justme1968 am 05 Juli 2015, 12:40:09
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.

Habe ich gemacht, damit ist das Problem mit dem "\" anscheinend behoben. Es lief lange durch und auch das automatische Update per Longpoll bei den entsprechenden Readings wird durchgeführt.

Ich habe allerdings einen neuen Fehler (der damit eventuell gar nichts zu tun hat), der aber mein FHEM abschießt:

2015.07.06 01:11:31.282 1: PERL WARNING: Use of uninitialized value in subtraction (-) at ./FHEM/32_SYSSTAT.pm line 290.
2015.07.06 01:11:31.282 1: PERL WARNING: Use of uninitialized value in multiplication (*) at ./FHEM/32_SYSSTAT.pm line 293.
2015.07.06 01:11:31.282 1: PERL WARNING: Use of uninitialized value in division (/) at ./FHEM/32_SYSSTAT.pm line 293.
Illegal division by zero at ./FHEM/32_SYSSTAT.pm line 293.


Kann es sein, dass dieser Fehler kommt, wenn der auszulesende PC nicht eingeschaltet ist?
Ansonsten wenns hilft, lass ich verbose 5 nochmal bis zum Absturz mitlaufen.

Gruß
Spiff

justme1968

mit einem nicht erreichbaren rechner kommt SYSSTAT zur zeit nicht besonders gut klar. vor allem aber weil alles blockierend gepollt wird und vor allem die snmp lib in einen timeout läuft.

wenn die rechner zu definierten zeiten aus sind solltest du disabledForIntervals setzen, wenn die zeiten nicht fest liegen solltest du SYSTAT über ein PRESENCE notify für diese zeit per disable deaktivieren.

den absturz habe ich jetzt glaube ich abgefangen.

ich habe eine version mit dem mibs attribut und dem ersetzen der \ durch / eben eingecheckt.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Spiff

Hi Andre,

Zeiten sind leider nicht definiert und PRESENCE läuft bei mir nicht, weil es keine Windows-fähige Version dafür gibt.
Zitat von: justme1968 am 06 Juli 2015, 18:52:00
den absturz habe ich jetzt glaube ich abgefangen.
d.H. ich kann es so lassen, muss aber mit Fehlern im Log leben, wenn der Rechner aus ist?

Danke auf jeden Fall für den Fix.

Gruß
Spiff

justme1968

es sollte auch keine fehler mehr geben. nur das blockieren kann ich nicht so einfach verhindern.

hier scheint es eine möglichkeit zu geben PRESENCE auch unter windows zu nutzen: http://forum.fhem.de/index.php/topic,10810.msg285238.html#msg285238

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Spiff

Hi Andre,

Zitat von: justme1968 am 06 Juli 2015, 18:52:00
ich habe eine version mit dem mibs attribut und dem ersetzen der \ durch / eben eingecheckt.
Wohin denn? :) Ich sehe nur die Version vom 1.7. im trunk.

Zitat von: justme1968 am 06 Juli 2015, 19:11:05
hier scheint es eine möglichkeit zu geben PRESENCE auch unter windows zu nutzen: http://forum.fhem.de/index.php/topic,10810.msg285238.html#msg285238
Super Tipp, danke! Ich hatte hin und wieder mal etwas ausprobiert, aber nie Erfolg gehabt. Diese Lösung funktioniert sehr gut.

Gruß
Spiff

justme1968

ups. da ist mit dem einchecken was schief gegangen. jetzt aber...

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

vbs

Ich hab mal eine Frage zu einer Art "Best Practice". Ich frage per SNMP die CPU-Auslastung meiner 4 Kerne ab (handelt sich um einen Remote-Windows-PC mit Windows-SNMP-Agent):

mibs .1.3.6.1.2.1.25.3.3.1.2.7:cpuUsage0 ,.1.3.6.1.2.1.25.3.3.1.2.8:cpuUsage1 ,.1.3.6.1.2.1.25.3.3.1.2.9:cpuUsage2 ,.1.3.6.1.2.1.25.3.3.1.2.10:cpuUsage3


Nun würde ich jedoch daraus gerne eine Durschnittsauslastung "cpuUsageOverall" generieren. Wie würde ich das am besten machen? Im Moment nutze ich ein userReading:
userReadings cpuUsageOverall:cpuUsage. { GetUsageCpuOverall() }

Also die Funktion "GetUsageCpuOverall" liest alle 4 CPU-Readings und liefert den Durchschnitt zurück. Nun es es ja so, dass das Reading bei allen vier MIBs getriggert wird und Overall dementsprechend 4mal gebildet wird, wobei nur der letzte Wert gewünscht ist (wobei die ersten drei sogar falsch sind, da sie mit nicht zusammen gehörenden Werten gebildet werden).
Wie kann ich es hinbekommen, dass Overall für jeden SNMP-Poll nur einmal gebildet wird (über alle 4 Kerne)? Ich hatte schon verschiedene Ideen, die aber alle irgendwelche Pferdefüße hatten. Habt ihr da einen Tipp für mich?

justme1968

das könnte gehen wenn du das user reading mit :cpuUsage3 auf das letzte der vieru readings festlegst.

aber schau dir noch mal die mibs an die es unter windows gibt. ich glaube da war auch eine dabei die direkt so einen wert über alle CPUs ausspuckt

gruß
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

vbs

Hi Andre,

danke für die Antwort!
Zitat von: justme1968 am 15 September 2015, 13:42:17
das könnte gehen wenn du das user reading mit :cpuUsage3 auf das letzte der vieru readings festlegst.
Die Idee kam mir auch und wäre auch eine gute Lösung. Setzt aber eben jedoch vorraus, dass die Readings in einer definierten Reihenfolge gesetzt werden (also alphabetisch). Ist das so?

Zitat von: justme1968 am 15 September 2015, 13:42:17
aber schau dir noch mal die mibs an die es unter windows gibt. ich glaube da war auch eine dabei die direkt so einen wert über alle CPUs ausspuckt
Ich hatte nach sowas gesucht, jedoch konnte ich nichts finden. Ich habe jedoch keine ordentliche Doku zu der Windows-MIB finden können und hab mich dann mit snmpwalk und Lesen der MIBs begnügt. Ich werde aber nochmals suchen, da du mir Hoffnung machst ;)

justme1968

die mibs werden genau in der reihenfolge in der sie im mibs attribut stehen abgearbeitet. die readings werden auf einen schlag aktualisiert. d.h. du kannst du an das letzte reading hängen und alle vorher sind dann aktuell.

ich meine bei der implementierung des windows load ist mir einen solche min über den weg gelaufen. ich erinnere mich aber nicht mehr genau.

die windows Perser load min (1.3.6.1.2.1.25.3.3.1.2) musst du aber eigentlich sowieso nicht selber abfragen. das ist das was systat für einen windows rechner sowieso verwendet.
in state steht die liste der einzelnen cpu werte drin, in avg_1 die summe geteilt durch 100. du kannst du einfach noch mal durch die anzahl der cpus teilen dann hast du deinen wert eigentlich.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

vbs

Zitat von: justme1968 am 15 September 2015, 19:10:11
die mibs werden genau in der reihenfolge in der sie im mibs attribut stehen abgearbeitet. die readings werden auf einen schlag aktualisiert. d.h. du kannst du an das letzte reading hängen und alle vorher sind dann aktuell.
Ah danke, das ist generell gut zu wissen.

Zitat von: justme1968 am 15 September 2015, 19:10:11ich meine bei der implementierung des windows load ist mir einen solche min über den weg gelaufen. ich erinnere mich aber nicht mehr genau.

die windows Perser load min (1.3.6.1.2.1.25.3.3.1.2) musst du aber eigentlich sowieso nicht selber abfragen. das ist das was systat für einen windows rechner sowieso verwendet.
in state steht die liste der einzelnen cpu werte drin, in avg_1 die summe geteilt durch 100. du kannst du einfach noch mal durch die anzahl der cpus teilen dann hast du deinen wert eigentlich.
Ok, state hatte ich mißverstanden in der Commandref. Aber ist super, deckt sich, genau wie du sagst, mit den einzelnen Werten, die ich abfrage. Also im Prinzip kann ich mein userReading durch "state" triggern und dann den String in "state" parsen (falls ich nicht noch eine eigene OID dafür CpuSummary finde).
"avg_1" wiederum hab ich bei mir nicht. Dem Quellcode nach, handelt es sich dabei um oid ".1.3.6.1.4.1.2021.10.1.3.1". Die scheint es bei mir jedoch nicht zu geben:
C:\usr\bin>snmpget.exe -c public -v2c localhost .1.3.6.1.4.1.2021.10.1.3.1.343
UCD-SNMP-MIB::laLoad.1.343 = No Such Object available on this agent at this OID

Könnte daran liegen, dass ich ja den Windows-SNMP-Agent nutze. Wäre es deiner Meinung nach besser, auf NET-SNMP unter Windows zu wechseln? Gibt es da mehr/andere OIDs?

justme1968

mein fehler. das reading heisst load. nicht avg_1.

unter linux wird 1.3.6.1.4.1.2021.10.1.3.1, 1.3.6.1.4.1.2021.10.1.3.2 und 1.3.6.1.4.1.2021.10.1.3.3 verwendet. das sind die avg_1, avg_5 und avg_15 load werte.

unter windows wird 1.3.6.1.2.1.25.3.3.1.2 verwendet und alles zum avg_1 wert zusammengerechnet.

der avg_1 wert landet dann im load reading. state ist unter linux die drei avg werte und unter die pro cpu werte in state.

die oids sollten immer gleich sein.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968