Command line reports - leer

  • Hallo,


    habe nach einem Weg gesucht die Reports, die wir im Thruk GUI erstellt haben, per Command Line auszuführen und im System abzulegen.
    Dabei bin ich über ein älteren Thread gestoßen, der das Thema beschreibt.


    Nun habe ich auf der Command Line den folgende Befehl zum testen abgesetzt.
    thruk -A thrukadmin -a 'report=4' > /tmp/report.pdf


    Der Report wird auch artig erzeugt, nur leider ist die Ausgabe leer. Ich sehe das der Report 25 Seiten enthält, welche aber leider komplett leer sind.
    Schaue ich in der GUI den Report an, sind die Seiten mit Inhalt gefüllt. :huh:


    Dort sehe ich übrigens auch dass der Report zum Zeitpunkt des Command Line Befehls neu generiert worden ist.


    Hat jemand eine Idee, woran das liegen könnte?


    Danke.


    EDIT:
    Habe gerade mal versucht einen anderen Report zu erzeugen.


    Dabei habe ich folgenden Befehl auf der Command Line abgesetzt:



    thruk -A thrukadmin -a 'url=avail.cgi?host=all&timeperiod=last7days&csvoutput=1' > all_host_availability.csv


    Öffne ich die Datei, sehe ich das dort lediglich "request failed: -" enthalten ist.
    Somit vermute ich nun sehr start, dass es sich um ein Berechtigungsthema handelt.


    Was ich vorhin vergessen habe zu posten:
    Betreibe Thruk auf folgendem System
    OS: Ubuntu 14.04
    Nagios 3.5.1
    Thruk 2.08
    Benutze Cookie Authentifizierung


    Hab ich was vergessen zu erwähnen?

  • Hallo,


    leider bringt das nichts.
    Habe schon mit anderen Usern probiert. :(


    Gibt es eine Möglichkeit ein erweitertes Debugging zu aktivieren?


    EDIT:


    So gerade nochmal mit einem anderen User einen Report erstellt.
    Diesen dann in der GUI gestartet und mit internen Viewer angezeigt.
    Inhalt wird wie erwartet angezeigt.


    Report dann mit
    thruk -A <TESTUSER> -a 'report=8' > /tmp/NagiosTest.pdf


    ausgeführt und gespeichert.
    Die Datei auf meinen Windows Client übertragen und dann im PDF Reader (Adobe) geöffnet.
    Alle Seiten sind auch hier leer. X(

  • Sehr gut!


    Das Problem liegt wohl daran:
    [14:21:23,298][ERROR][Thruk] Can't locate Thruk/Utils/Reports/CustomRender.pm: Permission denied at /etc/thruk/plugins//plugins-enabled/reports2/lib/Thruk/Utils/Reports.pm line 1335.

  • Genau dem User habe ich jetzt die Berechtigungen gegeben.
    Dummerweise ist die Fehlermeldung nun weg, aber das PDF ist noch immer ohne Inhalt. *grml*

    The post was edited 3 times, last by hurr1c4n ().

  • Okay, habe lediglich die Dateien unter /etc/thruk/plugins/plugins-enabled/reports2/ dem User www-data zugewiesen.


    Im Web funktioniert noch immer alles wie es soll, nur leider immer noch nicht auf der command line. *grml*


    Habe gerade bei mir zu Hause auch mal in meiner Testumgebung geschaut ob es dort klappt. Da bin ich ebenfalls mit Ubuntu 14.04 unterwegs. Allerdings ist hier schon Thruk in der Version 2.09 installiert.
    Leider ist aber auch in dieser Testumgebung der Report den ich über die Command Line erstellt habe, leer.


    Anbei mal die komplette Ausgabe von dem CMD Befehl inkl. Debugging. Vlt. kannst du etwas erkennen was nicht richtig ist.


    EDIT:


    So nun habe ich noch nen neuen Testserver erstellt.
    Mal wieder ein Ubuntu 14.04


    Anschließend das Repository von ConSol Labs hinzugefügt und dann OMD, Naemon, Thruk installiert.


    In der GUI angemeldet und für den localhost einen Report mit dem User thrukadmin erzeugt.
    In der GUI funktioniert dieser wie erwartet ohne Probleme.


    Führe ich nun aber den Command Line Befehl aus, erhalte ich keine Fehlermeldung und das PDF wird erzeugt.
    Nur leider auch hier ohne Inhalt.
    Ich hätte ja erwartet, dass bei meinen anderen Testinstallationen ggf. mit Berechtigung oder Abhängigkeiten etwas schief gelaufen ist, aber das auch in der OMD Variante das Ergebnis nicht anders ist, hätte ich nicht gedacht. 8o 
    Wenn dir noch etwas einfällt, wonach ich schauen könnte... ich bin für jeden Hinweis dankbar.
    Für die Arbeit wäre es nämlich echt nice das PDF lokal speichern zu können. Wenn das nämlich nicht funktioniert, werde ich wohl etwas mit Postfix und Mailattachments speichern bauen müssen. Das will ich aber ehrlich gesagt nicht, weil die Thruk Funktion wesentlich eleganter ist. :thumbup:

  • Also der Crontab des Users www-data sieht aktuell so aus.







    Rufe ich nun das Commando manuell aus
    cd /usr/share/thruk && /bin/bash -l -c '/usr/bin/nice -n 5 /usr/bin/thruk --local -a report=2 ' >/tmp/test.pdf 2>/var/lib/thruk/reports/2.logwird das PDF erzeugt aber auch hier wieder ohne Inhalt.


    Der einzige Unterschied der mir jetzt noch auffällt ist der User, mit dem das Commando abgesetzt worden ist.


    Der Cronjob wird durch den www-data User aufgerufen. Mein test wurde (bitte nicht hauen) mit root ausgeführt.


    EDIT:
    Habe nun auch den Aufruf mit dem www-data User getestet.
    su - www-data -s /bin/bash -c "cd /usr/share/thruk/ && /bin/bash -l -c '/usr/bin/thruk --local -a report=2' > /tmp/report5.pdf"
    Ergebnis ist leider auch hier das gleiche. Das PDF ist nach wie vor leer.


    Hast du noch eine andere Idee woran es liegen könnte?


    Was mir aufgefallen ist, ich pipe den Output des Befehls nach /tmp/report5.pdf in diesem Beispiel. In dem Verzeichnis /tmp/ werden dabei jede Menge Dateien erstellt.
    Haben die damit ggf. etwas zu tun?

    Shell-Script
    1. -rw------- 1 www-data www-data 0 Jul 26 22:04 brUV51tj11
    2. -rw------- 1 www-data www-data 0 Jul 26 22:04 elFjw8YvF6
    3. -rw------- 1 www-data www-data 0 Jul 26 22:04 aMUfraLXg5
    4. -rw------- 1 www-data www-data 0 Jul 26 22:04 oWRRg2V9vO
    5. -rw------- 1 www-data www-data 0 Jul 26 22:04 fb2SbH4dGn
    6. -rw------- 1 www-data www-data 0 Jul 26 22:04 oqXIQPQUmL
    7. -rw------- 1 www-data www-data 0 Jul 26 22:04 Jvik3P209K
    8. -rw------- 1 www-data www-data 0 Jul 26 22:04 brNjvmhYwk
    9. -rw-rw-r-- 1 www-data www-data 455281 Jul 26 22:04 report5.pdf

    The post was edited 2 times, last by hurr1c4n ().

  • Noch ein paar kleine Infos.


    Hab gerade folgendes gemacht.
    In der Crondatei habe ich mir einen Eintrag herausgesucht und diesen auf der CMD abgesetzt. Anbei der Befehl.
    su - www-data -s /bin/bash -c "cd /usr/share/thruk && /bin/bash -l -c '/usr/bin/nice -n 5 /usr/bin/thruk --local -a reportmail=4 ' >/dev/null 2>/var/lib/thruk/reports/4.log"
    Die eMail wird wie erwartet versendet und der Inhalt samt PDF ist okay und leserlich.


    Anschließend habe ich den Befehl dahingehend modifiziert, dass statt reportmail nur report verwendet wird. Außerdem habe ich den Ausgabepfad von /dev/null auf /tmp/reportxxx.pdf umgeändert.
    su - www-data -s /bin/bash -c "cd /usr/share/thruk && /bin/bash -l -c '/usr/bin/nice -n 5 /usr/bin/thruk --local -a report=4 ' >/tmp/reportxxx.pdf 2>/var/lib/thruk/reports/4.log"


    Soweit so schlecht. Das Ergebnis ist leider noch immer das gleiche, das PDF ist nicht lesbar bzw. einfach nur leer.


    Im Adobe Reader habe ich mir dann mal die Eigenschaften der beiden PDF Dateien angeschaut. Dabei fällt auf das diese bei dem PDF, welches nur mit dem Parameter "Report" erzeugt wurde, irgendwelche Hieroglyphen enthält. Siehe Anhang. Das PDF welches per Mail gesendet worden ist, sieht dahingegen sauber aus.


    Ich vermute mittlerweile, dass es an der Routing in Thruk liegen könnte. Wüsste allerdings nicht wie ich das weiter eingrenzen könnte. *grübel*


    Witzigerweise haben die beiden 4.html Dateien den gleichen Inhalt. Also wenn ich mir die Dateien auf meinen Client kopiere sehe ich bei beiden den Report. Nur leider im HTML Format und nicht im PDF. *grml*
    Das angegebene Log, bringt leider auch kein Licht ins Dunkel. Dieses ist bei beiden Aufrufen leer.

  • Hi Sven,


    will dich wegen des Thema's nicht nerven, aber hättest du noch eine Idee was ich machen könnte?

  • Könnte bitte ein anderer Thruk User kurz berichten ob die Reports bei ihr/ihm funktionieren, wenn man diese über die command line aufruft?
    Bin leider etwas an den Thema aufgehangen.

  • Hat denn sonst keiner das Problem mit den Reports?
    Würde mich über ein kurzes Feedback freuen.


    Danke.

  • Gehe ich recht in der Annahme, dass du das Script html2pdf.sh nutzt um mittels phantomjs und dem dazugehörigen Skript html2pdf.js das erzeugte html file in ein pdf zu wandeln?


    Habe heute morgen nochmal nen bissel rumexperimentiert und versucht die einzelnen Steps nachzuvollziehen. Kannst du mir ggf. nen Hinweis geben, wie oder wo ich sehen kann wie das phantomjs aufgerufen wird?


    Hatte zunächst vermutet das ggf. noch Module in meiner Umgebung fehlen, aber ein aufruf des Scripts mit folgenden Parametern hat erstaunlicherweise funktioniert.


    /usr/share/thruk/script/html2pdf.sh /tmp/1.html /tmp/Localhost15.pdf /tmp/html2pdf.log /usr/lib/x86_64-linux-gnu/thruk/phantomjs


    Sprich das PDF wird inkl. Inhalt und Grafiken erstellt.


    Um dem Problem weiter auf die Spur zu kommen, brauche ich aber deine Hilfe. In die Binaries von /usr/bin/thruk kann ich leider nicht reinschauen. Wüsste auch nicht wie ich es sonst noch debuggen könnte.

  • Habe die Änderung an der Datei vorgenommen.
    In der GUI sehe ich nun folgende Ausgabe:



    Ich habe festgestellt, dass die Datei /var/lib/thruk/reports/1.dat.pdf anscheinend nicht erstellt wird. Bzw. durch irgendeinen anderen Prozess anscheinend direkt nach Erstellung weiterverarbeitet und anschließend entfernt wird. Vermutlich ist es der Prozess der die Datei an den definierten Ausgabeort verschiebt und umbenennt.
    Hier stellt sich für mich dann wieder die Frage. Was oder wer verarbeitet die Datei nach dem html2pdf.sh Script?


    Was ebenfalls interessant ist. Rufe ich die Erstellung des Reports auf der Konsole mit

    Code
    1. thruk -A <USER> -c <PASSWORD> -a 'report=1' --local > /tmp/Localhost1.pdf


    auf, dann werden in dem Verzeichnis /var/lib/thruk/reports vier Dateien erzeugt.
    1.dat > Mit der Endung nicht lesbar aber wenn man daraus 1.dat.pdf macht mittels mv dann erhält man ein lesbares PDF inkl. Inhalt
    1.html > Report in HTML Form. Lesbar und mit Inhalt
    1.log > gleiche Ausgabe wie in der GUI, mit Ausnahme das der Besitzer/Gruppe der Datei von root auf www-data geändert wird.
    1.rpt > Report Datei


    Der Prozess zur Erstellung des PDF scheint schon zu funktionieren, siehe 1.dat mit geändertem Suffix, jedoch scheint ein Prozess nach dem html2pdf.sh das Problem zu verursachen das die Datei nicht lesbar wird. Allerdings bin ich hier nochmals auf deine Hilfe angewiesen.


    Gruß
    Tom


    UPDATE:


    Füge ich dem Script html2pdf.sh hinter der Zeile 32 folgenden Befehl ein "cp $OUTPUT /tmp/test.pdf", dann wird beim Aufruf auf der Kommandozeile das PDF unter /tmp/test.pdf erzeugt. Dieses ist lesbar und hat Inhalt.
    Das eigentliche Dokument, was dem Befehl mitgegeben worden ist, ist jedoch nach wie vor leer.
    Wie gesagt, es scheint an dem weiteren Verarbeitungsprozess der Datei ein Problem zu geben.



    2nd UPDATE:


    Gerade eben habe ich mir mal die Reports.pm Datei etwas näher angeschaut und festgestellt, dass hier die erzeugte PDF Datei (1.dat.pdf) in 1.dat verschoben/umbenannt wird. (Zeile 1309)
    Wahrscheinlich werde ich mir nun ein Script schreiben, welches den Output des Befehls "thruk -A <USER> -c <PASSWORD> -a 'report=1' --local" nicht in eine Datei umleitet sonder einfach nach /dev/null. Das PDF bzw. die *.dat Datei wird ja in dem Verzeichnis /var/lib/thruk/reports erzeugt und liegt dann dort, bis der Report erneut erzeugt wird.
    Mit der Datei kann ich dann aber weiterarbeiten.


    Vlt. findest du ja bei Gelegenheit den Fehler, für mich ist es halt nicht so einfach hier durch zu schauen.

    The post was edited 4 times, last by hurr1c4n ().