Schlagwörter: ,

Ansicht von 2 Antwort-Themen
  • Autor
    Beiträge
    • #10972
      Michael R
      Teilnehmer

        Moin.

        Da ich es nicht schön fand, die Container nach den Json-Logs zu durchstöbern und weil ich die Logs per logrotate archivieren möchte, habe ich eine Lösung entwickelt, welche die Logs aus den Containern per rsyslog an meinen Host schickt.

        Diese Anleitung erhebt keinen Anspruch auf Vollständigkeit, aber vielleicht will der ein oder andere es nachvollziehen und vielleicht geht einiges davon – konfigurierbar – in die offizielle Version/Doku ein. Es könnte bessere Lösungen geben, aber mit meinem kleinen Know How hat es geklappt. Beispiel mit meiner lokalen IP 192.168.10.1

        1. Aktivieren des Empfangs von Syslogs auf dem lokalen Host in der Datei /etc/rsyslog.conf (Einträge aktivieren bzw. ändern).
          module(load="imudp") # needs to be done just once
          input(type="imudp" port="514" address="192.168.10.1")
        2. Umstellen Docker auf den log-Driver syslog, statt json in der Datei /etc/docker/daemon.json:
          {
          “log-driver”: “syslog”,
          “log-opts”: {
          “syslog-address”: “udp://192.168.10.1:514”
          }
          }
        3. Restart rsyslog.service, docker und Neustart von OTOBO per compser.
          BINGO. Die Datei /var/log/messages ist nun voll von den Logs aus den Containern.
        4. Ich will weitergehen, und hier kommt nun der OTOBO-spezifische Teil. Ich wollte für jeden OTOBO-Container eine eigene Log-Datei. Erweiterungen der Dateien /opt/otobo-docker/docker-compose/otobo-base.yml und /opt/otobo-docker/docker-compose/otobo-nginx-custom-config.yml. Hier habe ich bei jedem Service einen Logging-Tag eingefügt.

          Zwei Beispiele:
          Unter dem Service db den Eintrag
              logging:
                options:
                  tag: "otobo_db_1"
          und unter dem Servie web den Eintrag
              logging:
                options:
                  tag: "otobo_web_1"
          Neustart von OTOBO:
          BINGO. In /var/log/messages kommen nun die Tags an.

        5. Diese Tags leiten wir nun um, damit für jeden Container ein eigenes Logfile in /var/log/otobo erzeugt wird.
          Datei /etc/rsyslog.conf:
          :syslogtag, startswith, "otobo_db_1" /var/log/otobo/otobo_db_1
          :syslogtag, startswith, "otobo_web_1" /var/log/otobo/otobo_web_1
          :syslogtag, startswith, "otobo_daemon_1" /var/log/otobo/otobo_daemon_1
          :syslogtag, startswith, "otobo_elastic_1" /var/log/otobo/otobo_elastic_1
          :syslogtag, startswith, "otobo_redis_1" /var/log/otobo/otobo_redis_1
          :syslogtag, startswith, "otobo_nginx_1" /var/log/otobo/otobo_nginx_1
          Restart von rsyslog.service und siehe da:
          ls -alt /var/log/otobo
          -rw-------. 1 root root 14809 Feb 28 01:38 otobo_daemon_1
          -rw-------. 1 root root 3976 Feb 28 01:36 otobo_redis_1

        Viele Grüsse,
        Michael

      • #10984
        bes
        Teilnehmer

          Hallo Michael,

          sehr schön. Ich denke die Logging-Tags können gleich in OTOBO 10.0.10. Ich habe dafür das Issue https://github.com/RotherOSS/otobo-docker/issues/48 erstellt.

          Die Anleitung wie man die Docker Logs nach rsyslog umleitet sollte irgendwo als Howto in das Installations-Handbuch. Ich vermute aber, dass das ein bisschen dauern wird.

          Auf Seiten von OTOBO gibt es auch noch ein paar Hausaufgaben. Aktuell landet das reguläre OTOBO Log in der Datei /opt/otobo/var/log/otobo.log.  Sinnvoller fände ich die Ausgabe aus STDOUT so dass das reguläre Docker-Logging greifen kann. Was da das Beste Vorgehen ist kann ich aber nicht beurteilen. Meine Docker-Kenntnisse sind alle erst kürzlich angelesen.

          Jedenfalls geht es Schritt für Schritt voran.

           

          Viele Grüße,

          Bernhard

           

        • #11265
          bes
          Teilnehmer

            Hallo Michael,

            ich habe mir die Doku zum syslog Logging Driver angesehen. Wenn ich https://docs.docker.com/config/containers/logging/syslog/ und https://docs.docker.com/config/containers/logging/log_tags/ richtig verstehe, dann kann man den Tag anhand von Platzhaltern in _/etc/docker/daemon.json_ konfigurieren. Um die Verwirrung klein zu halten, würde ich also Tags in der docker-compose Config nicht standardmäßig setzen.

            Bzgl. Logging unter Docker gibt es aber auch so noch einige TODOs.

            • Der Webserver schreibt keine Access-Logs, https://github.com/RotherOSS/otobo/issues/886
            • Webserver schreibt Logs nach _/opt/otobo/var/log/otobo.log_, was nicht der Docker-Leitlinie entspricht
            • Der Daemon schreibt Logdateien nach _/opt/otobo/var/log/Daemon,  was nicht der Docker-Leitlinie entspricht

            In der Gesamtsicht ist es dann vielleicht doch sinnvoll einen Logging-Service bereitzustellen

             

        Ansicht von 2 Antwort-Themen
        • Du musst angemeldet sein, um auf dieses Thema antworten zu können.