mailcow-dockerized-docs/docs/post_installation/firststeps-logging.de.md

176 Zeilen
4,6 KiB
Markdown

Das Logging in mailcow: dockerized besteht aus mehreren Stufen, ist aber immerhin wesentlich flexibler und einfacher in einen Logging-Daemon zu integrieren als bisher.
In Docker schreibt die containerisierte Anwendung (PID 1) ihre Ausgabe auf stdout. Für echte Ein-Anwendungs-Container funktioniert das sehr gut.
2023-01-09 15:44:30 +01:00
Führen Sie folgenden Befehl aus, um mehr zu erfahren:
=== "docker compose (Plugin)"
``` bash
docker compose logs --help
```
=== "docker-compose (Standalone)"
``` bash
docker-compose logs --help
```
Einige Container protokollieren oder streamen an mehrere Ziele.
Kein Container wird persistente Logs in sich behalten. Container sind flüchtige Objekte!
Am Ende wird jede Zeile der Logs den Docker-Daemon erreichen - ungefiltert.
Der **Standard-Logging-Treiber ist "json "**.
### Gefilterte Logs
Einige Logs werden gefiltert und in Redis-Schlüssel geschrieben, aber auch in einen Redis-Kanal gestreamt.
Der Redis-Kanal wird verwendet, um Protokolle mit fehlgeschlagenen Authentifizierungsversuchen zu streamen, die von netfilter-mailcow gelesen werden.
Die Redis-Schlüssel sind persistent und halten 10000 Zeilen von Logs für die Web-UI.
Dieser Mechanismus macht es möglich, jeden beliebigen Docker-Logging-Treiber zu verwenden, ohne die
ohne die Fähigkeit zu verlieren, Logs von der UI zu lesen oder verdächtige Clients mit netfilter-mailcow zu sperren.
Redis-Schlüssel enthalten nur Logs von Anwendungen und filtern Systemmeldungen heraus (man denke an Cron etc.).
### Logging-Treiber
2022-09-01 09:33:47 +02:00
#### Über docker-compose.override.yml
Hier ist die gute Nachricht: Da Docker einige großartige Logging-Treiber hat, können Sie mailcow: dockerized mit Leichtigkeit in Ihre bestehende Logging-Umgebung integrieren.
2022-09-01 09:33:47 +02:00
Erstellen Sie eine `docker-compose.override.yml` und fügen Sie zum Beispiel diesen Block hinzu, um das "gelf" Logging-Plugin für `postfix-mailcow` zu verwenden:
```
version: '2.1'
services:
postfix-mailcow: # oder ein anderer
logging:
driver: "gelf"
options:
gelf-address: "udp://graylog:12201"
```
Ein weiteres Beispiel für **Syslog**:
```
version: '2.1'
services:
postfix-mailcow: # oder ein anderer
logging:
driver: "syslog"
options:
syslog-address: "udp://127.0.0.1:514"
syslog-facility: "local3"
dovecot-mailcow: # oder ein anderer
logging:
driver: "syslog"
options:
syslog-address: "udp://127.0.0.1:514"
syslog-facility: "local3"
rspamd-mailcow: # oder ein anderer
logging:
driver: "syslog"
options:
syslog-address: "udp://127.0.0.1:514"
syslog-facility: "local3"
```
##### Nur für rsyslog:
Stellen Sie sicher, dass folgende Zeilen in `/etc/rsyslog.conf` nicht auskommentiert sind:
```
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
```
Um Eingänge von `local3` in `/var/log/mailcow.log` zu leiten und danach die Verarbeitung zu stoppen,
erstellen Sie die Datei `/etc/rsyslog.d/docker.conf`:
```
local3.* /var/log/mailcow.log
& stop
```
Starten Sie rsyslog danach neu.
#### Über daemon.json (global)
Wenn Sie den Logging-Treiber **global** ändern wollen, editieren Sie die Konfigurationsdatei des Docker-Daemons `/etc/docker/daemon.json` und starten Sie den Docker-Dienst neu:
```
{
2023-01-09 15:44:30 +01:00
[...]
"log-driver": "gelf",
"log-opts": {
"gelf-address": "udp://graylog:12201"
}
2023-01-09 15:44:30 +01:00
[...]
}
```
Für Syslog:
```
{
2023-01-09 15:44:30 +01:00
[...]
"log-driver": "syslog",
"log-opts": {
"syslog-address": "udp://1.2.3.4:514"
}
2023-01-09 15:44:30 +01:00
[...]
}
```
2023-01-09 15:44:30 +01:00
Starten Sie den Docker-Daemon neu und führen Sie die folgenden Befehle aus, um die Container mit dem neuen Protokollierungstreiber neu zu erstellen:
=== "docker compose (Plugin)"
``` bash
docker compose down
docker compose up -d
```
=== "docker-compose (Standalone)"
``` bash
docker-compose down
docker-compose up -d
```
### Log rotation
Da diese Logs sehr groß werden können, ist es eine gute Idee logrotate zu nutzen, um Logs nach einer gewissen Zeit zu
komprimieren und zu löschen.
Erstellen Sie die Datei `/etc/logrotate.d/mailcow` mit folgendem Inhalt:
```
/var/log/mailcow.log {
rotate 7
daily
compress
delaycompress
missingok
notifempty
create 660 root root
}
```
Mit dieser Konfiguration wird logrotate täglich ausgeführt und es werden maximal 7 Archive gespeichert.
Um die Logdatei wöchentlich oder monatlich zu rotieren, muss `daily` durch `weekly` oder respektive `monthly` ersetzt werden.
Um mehr Archive zu speichern, muss die Nummer hinter `rotate` angepasst werden.
Danach kann logrotate neu gestartet werden.