-
AutorBeiträge
-
-
28. Februar 2021 um 1:41 Uhr - Views: 809 #10972
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
- 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")
- 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“
}
} - 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. - 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. - 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 - Aktivieren des Empfangs von Syslogs auf dem lokalen Host in der Datei /etc/rsyslog.conf (Einträge aktivieren bzw. ändern).
-
1. März 2021 um 18:22 Uhr #10984
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
-
27. März 2021 um 12:04 Uhr #11265
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
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.