check_sql nutzen, um Oracle zu überwachen

This forum was archived to /woltlab and is now in read-only mode.
  • Hallo zusammen,


    Ich bin mir nicht ganz sicher, ob ich hier richtig bin. Falls nicht, dann bitte Link zum richtigen Forum posten und ich werde mich dort nochmal melden ;-)


    Ich habe über das WATO einen Active Check (Check SQL Database) eingerichtet, um auf unsere Oracle Datenbank zuzugreifen. Bis jetzt war das Ganze ziemlich kompliziert, aber ich habe alles nach der Anleitung hier einrichten können. In der Bash konnte ich durch sqlplus bereits eine Abfrage auf dem Server absetzen, daher denke ich, dass die Installation der meisten Dinge bereits funktioniert hat.


    Nun erhalte ich aber die folgende Fehlermeldung (siehe auch Bild im Anhang):
    UNKNOWN - Error while connecting to database: libclntsh.so.12.1: cannot open shared object file: No such file or directory


    Wenn ich die Fehlermeldung selbst google, dann spuckt Google meist aus, dass der Fehler ist, dass $LD_LIBRARY_PATH nicht korrekt ist. Dies habe ich aber bereits X-Mal geprüft und neu eingetippt. Und da die Abfrage in der Bash funktioniert liegt der Fehler vermutlich nicht hier (denke ich zumindest)...


    Hat jemand von euch eine Idee, wo das Problem sein könnte?


    PS: Ich habe noch gelesen, dass die Environment-Variabeln auch mit dem Apache exportiert werden können. Muss ich eventuell das noch machen? Was ist dabei wichtig zu wissen?

  • Vielen Dank für den Hinweis.


    Kannst du mir vielleicht sagen, wie ich rausfinde, unter welchem User der Core läuft? Ich habe das System nicht selbst eingerichtet.
    Ich habe aber einen User gefunden, von dem ich vermute, dass es dieser sein sollte. Er hat tatsächlich die Variable $LD_LIBRARY_PATH in seinem .profile überschrieben, anstatt es zu erweitern. Ich habe die Anpassung gemacht und die Abfrage funktioniert dort über die Bash. Im WebGUI ist immer noch derselbe Fehler zu sehen...

  • Super, danke!
    In dem Fall habe ich den richtigen User bearbeitet. Die Abfrage über die Bash mit diesem funktioniert einwandfrei.


    Der Fehler im WebGUI bleibt bestehen.

  • Versuche eine Reinventory (-II) auf dem Host und mache einen Recompile (-C). Dann sollte es sich erledigt haben.

  • Bitte mal den kompletten Output auf der Bash posten.
    Das ganze hat nix mit einem neu Inventarisieren zu tun, das ist wirklich ein Problem mit dem User.
    Ich denke mal der User bekommt nicht LD_LIBRARY_PATH komplett übergeben wenn er das Plugin ausführt.

  • Naja, wenn nach der Bearbeitung des Users es in Bash funktioniert, dann ist der vorkompilierte Check, aber immernoch mit den alten Werten gefüllt. Oder verstehe ich da was falsch?

  • Ja - am Check ändert sich ja nix auch wenn er neu zusammengestellt wird.
    Als zweites ist noch anzumerken das WATO selber nie die kompilierten Checks ausführt bei einer Inventur sondern immer die Quelltextfiles.


    Es geht hier um ein Problem mit Systemvariablen für diesen User (LD_LIBRARY_PATH).
    Da fällt mir gerade ein das die Automation Funktion im WATO welche die Inventur durchführt ja nicht mit dem Monitoring User läuft sondern als Root ausgeführt wird.
    Das würde bedeuten das auch bei Root der LD_LIBRARY_PATH passen muss damit WATO den Check richtig ausführen kann.

  • Die Abfrage mit dem root-User in der Bash funktioniert.


    An dieser Stelle noch eine kurze Rückfrage:
    Aktuell mache ich den Test für die SQL-Abfrage mit sqlplus (welches ich mit dem Oracle-Client installiert habe). Kann ich auf irgendeine Weise das check_sql von check_mk auch aus der Bash aufrufen?
    Yogibär : Du möchtest vermutlich den Output aus der Bash von check_sql haben..?

  • Genau :)
    check_sql liegt innerhalb von OMD im Verzeichnis "/omd/sites/*sitename*/lib/nagios/plugins/"
    Mittels "check_sql --help" bekommst alle Optionen und kannst das Ganze auch mal manuell in der Shell testen.
    Dran denken immer am besten als Site User :)

  • So! Sein Freund von mir konnte mir helfen.


    Das Problem ist, dass ich die Env-Variable zu der lib zwar richtig exportiert hatte, musste sie aber unter /etc/ld.so.conf.d noch eintragen. Dies hatte ich zwar auch schon gemacht, jedoch habe ich anstelle des vollen Pfades eine Env-Variable benutzt (was offensichtlich hier nicht funktioniert).


    Also nochmals die Lösung:
    1. In "/etc/ld.so.conf.d" die Datei oracle.conf erstellen
    2. Die Zeile "/usr/lib/oracle/12.1/client64" dort einfügen (ohne Variabeln zu benutzen)
    3. ldconfig ausführen
    4. Fertig.



    Trotzdem vielen Dank für eure Hilfe, ich weiss euren Einsatz sehr zu schätzen!

  • Hallo zusammen,


    wir schauen uns aktuell Check_MK an um dies ggf. als Ersatz für unser bisheriges Monitoring System zu nutzen. Ich scheitere aktuell an der gleichen Sache wie der Thread Ersteller - allerdings habe ich die besagte datei schon mit dem entsprechenden Eintrag vesehen.


    In Check_MK kommt weiterhin folgende Meldung:



    Ein 'Check_SQL' an der command line (sowohl als root als auch als Site User) funktioniert ohne probleme und liefert ein Ergebnis zurück.


    Kann mir jemand einen Tip geben, woran das noch liegen kann?


    mfG


    Axel

  • Das cx_Oracle Modul für Python ist nicht installiert. Einfach als monitoring User "pip install cx_Oracle" installieren und es sollte laufen.

  • Ich hatte das cx_oracle als root installiert - ist das dann evtl. das Problem ?



    Wenn ich es mit uninstall wieder entferne und unter dem Site user versuche zu installieren erhalte ich.