LoxBerry: Statistik Plugin - Diskussion
Einklappen
X
-
Ich hab sogar eine VIM-Kaffeetasse mit den wichtigsten Kommandos :-) Z. B. %s/pattern1/pattern2/g -
Christian Fenzl Hoffe du hast gut geschlafen :-) ich programmiere im übrigen genauso - nur mit VIM :-)
Du hast sicherlich recht: wenn man nicht nur die Archive anlegt sondern auch noch die Statistiken vom Miniserver holt wird das bei vielen Statistiken vermutlich deutlich zu lange für einen Live-Import dauern. An den XML Import hatte ich gar nicht mehr gedacht...
Ich passe das addstat.cgi noch so an, dass dir das angelegte Archiv zurückgegeben wird und du auch per Variable das Template übergeben kannst. Dann brauchst du per GET nicht mehr viel zu übertragen. Das wird den Aufruf deutlich vereinfachen, denke ich.
Mist: muss ich mich doch jetzt erst einmal um das addstat.cgi kümmern. Ich spiele doch gerade so schön mit Highcharts herum :-)Zuletzt geändert von Prof.Mobilux; 15.11.2016, 05:59. -
Prof.Mobilux Das Import-UI hält wirklich auf.... Der Fork wird dir eh schon aufgefallen sein. Mein Code ist aktuell, aber nicht lauffähig (bzw. würde mich wundern). Ich bin ja "Trockenprogrammierer". Erst den kompletten Code in den Editor hineinwerfen, und wenn alles fertig ist, eine Woche Fehler suchen.
Den Import habe ich etwas anders konzipiert als du zuletzt zusammengefasst hattest. Geplant habe ich es so, dass das UI nur die Auswahl der Statistiken erlaubt, sowie die Auswahl des Templates von dir.
Der Import selbst soll in eine Queue, die von einem Cronjob abgearbeitet wird. Weil ich noch keine Idee habe, wie lange der Import dauert, habe ich Angst vor einer interaktiven Abarbeitung (die dann womöglich wegen Timeout oder Browser schließen abbricht).
Jeder Job legt beim Import-Start via addstat.cgi das RRD an. Ich bräuchte bei script=1 als Rückmeldung die ID oder den Dateinamen des RRD.
Dann wird die Import-Routine abgearbeitet, und ich lege auch regelmäßig den Status ab, den das Import-UI auch auswertet (und Status anzeigt und die Import-Option deaktiviert).
Das hat ein paar Vorteile gegenüber dem sessionbasierten Import. Beispielsweise kann ich nach Reboot resumen, und auf Pi2/3 evt. sogar multi-threaded importieren. Aber mal sehen - wenn's schnell geht, brauch ich das vielleicht auch gar nicht auslagern.
So, spät ist's - morgen leg ich mit deinem neuen Code neue Statistiken an :-)
Einen Kommentar schreiben:
-
Habe gerade auf GIT die Änderungen zum Filelocking hochgeladen: Die Ampel-Stati stehen jetzt in separaten Dateien und zusätzlich verwendet das Plugin flock bei allen Schreibzugriffen.
Zudem gibt es jetzt die Script-Option bei addstat.cgi. addstat.cgi liest alle Variablen sowohl per POST als auch per GET, mit ?script=1 wird keine Webseite als Ergebnis gezeigt sondern eine Statusmeldung im ASCII-Format:
+++OK+++Text der Meldung
oder
+++ERROR+++Text der Fehlermeldung
Das ist dann recht einfach zu parsen.Einen Kommentar schreiben:
-
Cool! Ich würde es so gestalten, dass es eine Liste mit den ganzen gefundenen Bausteinen/Ein-/Ausgänge gibt, am Zeilenanfang jeweils eine Checkbox ob importiert werden soll oder nicht. Daneben noch ein Dropdown pro Wert, welche Voreinstellung zum Anlegen der RRDs verwendet werden soll. Ganz unten dann der Importbutton, wo alles der Reihe nach importiert wird. Beim Import würde ich nur das addstat-script triggern, dann brauchen wir den Code nicht zweimal erfinden. Das Skript müsste ich aber vermutlich dann noch entsprechend vorbereiten. Das ist aber schnell erledigt.btw, ich bin vom Import jetzt mal soweit, dass ich das xml des LoxPlans soweit geparst habe, dass ich alle Daten habe, die ich für ein UI zur Auswahl benötige. Ein UI selbst gibt's noch nicht.
Mit diesen Daten in der Hand, ist es wahrscheinlich für den Benutzer doch einfacher, die RRD-Files direkt aus dem Import erstellen zu lassen, bzw. irgendwie das addstat mit Parametern zu triggern.
Ich habe Dir für den Import den "Import-Button" in der oberen Menüzeile reserviert :-)Einen Kommentar schreiben:
-
Ich hatte den Code zum Filelocking rausgeschmissen, weil ich dachte, dass das mittlerweile von Perl automatisch gemacht wird. Scheint wohl nicht der Fall zu sein... Ich baue das wieder ein und werden zudem den Status (geht nur um die Ampel) in separate Dateien pro Datenbank auslagern. Das sollte das Problem beheben.Prof.Mobilux
Es gibt irgendwo einen Bug, der die databases.dat truncated (0 Byte). Das ist bei mir jetzt den zweiten Tag hintereinander passiert.
Bzgl. Logfiles: /run/shm ist flüchtiger Speicher, oder? Das wäre eine gute Option. Man könnte nur wirkliche Fehler (Ampel rot) ins "richtige Logfile" schreiben und/oder alternativ noch eine Mail versenden.
Generell wäre es gut als LoxBerry-Option (nicht Plugin) alle Logfiles auf einen externen Speicher oder /run/shm schieben zu können (/var/log und /opt/loxberry/log).Einen Kommentar schreiben:
-
btw, ich bin vom Import jetzt mal soweit, dass ich das xml des LoxPlans soweit geparst habe, dass ich alle Daten habe, die ich für ein UI zur Auswahl benötige. Ein UI selbst gibt's noch nicht.
Mit diesen Daten in der Hand, ist es wahrscheinlich für den Benutzer doch einfacher, die RRD-Files direkt aus dem Import erstellen zu lassen, bzw. irgendwie das addstat mit Parametern zu triggern.Einen Kommentar schreiben:
-
Prof.Mobilux
Es gibt irgendwo einen Bug, der die databases.dat truncated (0 Byte). Das ist bei mir jetzt den zweiten Tag hintereinander passiert.
Mein Änderungsdatum des Files ist heute 18:55 - du der Zeit war ich nicht aktiv am System, aber eventuell noch ein Browserfenster offen mit einem Graphen und/oder der Übersicht.
Ich glaube, dass es ein Problem mit Collisions der Cron-Jobs ist - da du im Cron-Job die databases.dat mit dem Status aktualisierst, und zwei Cronjobs treffen zusammen, könnte es sein, dass es durch Locking zu diesem bösen Schreiben kommt.
Ich würde generell das Schreiben in die databases.dat und andere Dateien (Poller-Logs) beim Pollen entfernen (Schreibzugriffe reduzieren). Logfiles eventuell nur in /run/shm schreiben.
lg, Christian
Einen Kommentar schreiben:
-
Ein Gast antworteteNur so eine Idee: Wäre eventuell die Syslog Funktionalität seitens Miniserver nicht auch eine Möglichkeit, die Messwerte (vermutlich recht ressourcenschonend) vom Miniserver aktiv auf den Raspi zu bringen? Dort würde ein entsprechendes Script (im syslog) laufen, welches die erhaltenen Daten in ein Spool-Verzeichnis spielt, wo sie dann von einem weiteren Prozess eingelesen und weiterverarbeitet (z.B. rrd update) werden.
Das Script für den Syslog-ng könnte ich zur Verfügung stellen.
Einen Kommentar schreiben:
-
An alle die Testen wollen:
Es gibt jetzt viele Änderungen von mir und (hoffentlich :-)) auch von Christian, die ich nicht alle ankündigen möchte. Daher bitte nicht den obigen geposteten Link verwenden sondern am Besten das GIT-Archiv direkt auf den RaspBerry laden (git clone...) und aktuell halten (git pull...) und mit ~/sbin/plugininstall.pl direkt installieren.Einen Kommentar schreiben:
-
Christian Fenzl: Du warst ja im GIT schon fleissig :-) Die Requests habe ich gerade eben alle gemerged - musst Du jetzt noch pullen (was für ein Deutsch.... ;-))
Mir ist das auch zu kompliziert. Aber ich habe lange überlegt ob ich noch etwas weglasse und mich dann dagegen entschieden. Da kommt mit Sicherheit dann irgendein RRDTool Guru und meckert, dass er dieses oder jenes nicht einstellen und feintunen kann. Wie ich gelernt habe gibt es ja auch Leute, die 20 Jahre alte Statistiken alle einzeln editieren wollen :-)Ich würde die Intervalleinstellung (1, 3, 5 usw.) noch nach oben vor die Experteneinstellungen holen (ich weiß, dafür braucht es dann pro Pollerintervall ein Standardsetting) und umbenennen in "Abfrageintervall".
Die Experteneinstellungen finde ich ehrlich gesagt zu kompliziert (sogar mir). Für meinen Teil würde ich die Auswahl MIN/MAX/AVG/LAST weglassen und MIN/MAX/AVG immer implizit anlegen.
Du erlaubst außerdem die "human-readable" Eingabe nicht (step: 10m, rows: 90d), und dann wird es wirklich kompliziert, wenn man selbst zum Rechnen anfangen muss.
Vielleicht macht man noch später noch eine Zwischenebene: Standardeinstellungen, Fortgeschrittene (mit den wichtigsten Einstellungen) und Experte (it allen Einstellungen).
Ich würde es jetzt erst einmal so lassen - das können wir immer noch feintunen wenn das Plugin mal grundlegend fertig ist. Habe gestern mal angefangen mit HighCharts zu spielen und das wird auch noch kompliziert genug (=viel Arbeit)...
Die "Human readable"-Dinge gebe ich frei - da war ich zu streng beim filtern :-)
Ja, da möchte ich noch ein Session-Management drübersetzen (analog dem im Setup-Assistenten), damit das nicht passiert. Ist aber noch auf der Todo.Wenn ich im Expertenmodus einen Fehler gemacht habe ("Du musst einen Start angeben") und ich gehe mit "Zurück" zurück, dann sind - bis auf die erste - meine RRA-Definitionen weg
Da war gestern noch ein Fehler, so dass Ampeln nie wieder auf Grün gegangen sind und zudem war da dieser Darstellungsfehler noch drin wie Du ihn auf dem Screenshot zeigst. Das hatte ich gestern morgen noch behoben. War Deine Version eventuell älter? Die Ampel wird nur auf Rot gesetzt, wenn der Status Code des HTTP-Aufrufs ungleich 200 ist (Miniserver nicht erreichbar) oder wenn der Miniserver in der XML-Antwort etwas anderes als Code=200 sendet (Wert exisitiert nicht).Beim Starten sind alle Ampeln auf Grün gegangen, und unter Info sehe ich auch realistische Werte, es gingen dann aber hintereinander alle Ampeln auf Rot (Fehler).
Am Besten bitte nochmal neu "pullen" und dann neu installieren - dann müsste das Problem behoben sein.
Das ist seltsam - da muss noch ein Fehler drin sein. Bei mir geht es als User "loxberry" einwandfrei auch manuell.Ich hab dann fetch.pl so wie im cron manuell aufgerufen, und bekomme
Can't call method "param" on an undefined value at fetch.pl line 50.
Das ist die Sprache - ich glaub (weiß nicht), dass er das $home nicht bekommt - zumindest nicht wenn ich's manuell aufrufe.
Alte Schule :-)Und *pfui* /etc/init.d/rrdcached restart
Heute machma doch alle service rrdcached restartEinen Kommentar schreiben:
-
addstat.cgi, Zeile 519 [ff] (Standardwerte der RRAs)
Den xff-Parameter übergibst du dort mit Komma statt Punkt, deswegen ist das im RRD dann als 0 definiert.Einen Kommentar schreiben:
-
Ok, genau anders rum - der Socket im quickchart passt, aber die Routine mit dem mv und dem Linken in der daemon in /etc/default funktioniert nicht.
Bei mir gibt es nur die Original-rrdcached mit den Originalsettings, kein old und auch keinen Link.
daemon-Script:
./stats4lox: Zeile 15: [: !-L: Einstelliger (unärer) Operator erwartet.
Zwischen ! und -L gehört ein Leerzeichen (öde Bash :-)
Und *pfui* /etc/init.d/rrdcached restart
Heute machma doch alle service rrdcached restart
PS: ich hoffe, es stört dich nicht, dass ich hier wild herein-analysiere ;-)Zuletzt geändert von Christian Fenzl; 07.11.2016, 22:24.Einen Kommentar schreiben:
Einen Kommentar schreiben: