Protokolle
Protokolldateien, Syslog, der Audit-Verlauf und wie lange Jobs und Audit-Einträge aufbewahrt werden
Protokolldateien
AnsibleForms schreibt zwei täglich rotierte Protokolle nach LOG_PATH (%PERSISTENT_FOLDER%/logs), komprimiert ältere Tage und bewahrt sie LOG_RETENTION_DAYS lang auf (standardmäßig 30, 0 behält jede Datei; eine Änderung auf der Einstellungsseite gilt sofort):
ansibleforms.<date>.log: alles abLOG_LEVELaufwärtsansibleforms.errors.<date>.log: nur Fehler
Die Konsole, gelesen mit docker logs oder kubectl logs, hat eine eigene Stufe, LOG_CONSOLE_LEVEL. Beide sind standardmäßig notice, was für die Produktion richtig ist; verwenden Sie info oder debug nur bei der Fehlersuche, und lassen Sie ENABLE_DB_QUERY_LOGGING ausgeschaltet. Die Stufen lassen sich auf den Einstellungsseiten ohne Neustart ändern, und die Seite Serverprotokoll zeigt das Protokoll Benutzern mit der Option showLogs.
JSON-Zeilen
Für einen Log-Collector wie Loki, ELK oder Splunk setzen Sie LOG_FORMAT auf json. Jede Zeile, auf der Konsole und in den Dateien, ist dann ein JSON-Objekt statt <time> <level>: <message>:
{"time":"2026-10-12T08:15:02.113Z","level":"notice","message":"App running on port 8000!","role":"all","host":"forms01"}
| Feld | Inhalt |
|---|---|
time | Die Uhrzeit, in ISO 8601 UTC |
level | Die Protokollstufe |
message | Die Meldung |
requestId | Die Anfrage, zu der die Zeile gehört, wenn sie während deren Bearbeitung geschrieben wurde |
role | Die Rolle des Prozesses, AF_ROLE, oder all, wenn sie nicht gesetzt ist |
host | Der Hostname der Maschine oder des Containers, in dem der Prozess läuft |
Jede Anfrage erhält eine ID: den Header X-Request-Id, den ein Reverse Proxy gesendet hat, oder eine neue. Sie wird im Header X-Request-Id der Antwort zurückgegeben und von jeder Zeile getragen, die während der Bearbeitung der Anfrage geschrieben wird (als [req <id>] in Textzeilen), sodass sich eine Anfrage durch das Protokoll verfolgen und mit der des Proxys abgleichen lässt. Eine Änderung auf der Einstellungsseite gilt sofort.
Syslog
Syslog-Server werden unter Einstellungen > Verbindungen > Syslog verwaltet, sodass ein Syslog-Server oder SIEM das Protokoll erhält, während es geschrieben wird. Sie können mehrere Server hinzufügen, und jeder hat eigene Einstellungen:
| Einstellung | Was sie tut |
|---|---|
| Aktiviert | Nur aktivierte Server erhalten etwas, sodass sich ein Server pausieren lässt, ohne ihn zu löschen; Aktivieren und Deaktivieren im Menü seiner Zeile schalten ihn ebenfalls um |
| Protokoll | udp4 (Standard), udp6, tcp4, tcp6, tls4, tls6, unix oder unix-connect |
| Host und Port | Der Zielserver, standardmäßig Port 514; ein unix-Protokoll nimmt stattdessen einen Socket-Pfad |
| Empfängt | Das Serverprotokoll, die Audit-Einträge oder beides (der Standard für einen neuen Server) |
| Stufe | Die niedrigste Stufe des Serverprotokolls, die er erhält, standardmäßig info; Audit-Einträge werden immer gesendet |
| Format | BSD (RFC 3164, der Standard) oder RFC 5424 |
Eine Änderung gilt auf jedem Knoten ohne Neustart, und die Seite des Servers hat eine Schaltfläche, die ihm eine Testmeldung sendet. Ein nicht erreichbarer Server hält die Anwendung nie an: Der Fehler wird auf die Konsole geschrieben.
Ab 7.3.0 brauchen die Syslog-Server die vollen Einstellungsrechte, die Rollenoption showSettings: Der Zugriff auf die Verbindungs-Einstellungen allein genügt nicht, da ein Syslog-Server das Serverprotokoll und die Audit-Einträge erhält.
Die Variablen LOG_SYSLOG_* früherer Versionen sind seit 7 veraltet. Der erste Start, der LOG_SYSLOG_HOST gesetzt vorfindet, importiert sie einmal als Server syslog, der wie bisher das Serverprotokoll empfängt, und ignoriert sie danach. Entfernen Sie sie nach diesem ersten Start aus der Umgebung und verwalten Sie den Server auf der Einstellungsseite.
Audit-Verlauf
Die Seite Audit-Protokoll (unter Einstellungen > Protokolle) hält fest, wer was geändert hat, was die Protokolldateien nicht gut beantworten. Sie erfasst:
- jede über die API vorgenommene Änderung (
POST,PUT,PATCH,DELETE), einschließlich mit 401 oder 403 abgewiesener Versuche - Anmeldungen, mit dem versuchten Benutzernamen
- Ereignisse der Anwendung selbst, etwa nächtliche Backups, entfernte Backups, bereinigte Jobs und Anwendungen des Config-Seeds
Jeder Eintrag hat seine Uhrzeit, den Akteur (ein Benutzer oder die Anwendung selbst für ihre eigenen Aufgaben), die Client-IP-Adresse, die Aktion, ihr Ziel und ihr Ergebnis: success, failure oder denied. Die Seite filtert nach Akteur, Aktion und Ergebnis, und Benutzer mit der Rollenoption showSettings können sie öffnen.
Die IP-Adresse ist die, die AnsibleForms sieht, also die des Proxys, wenn es hinter einem läuft. Setzen Sie TRUST_PROXY auf die Anzahl oder die Adressen Ihrer Proxys, dann erfasst AnsibleForms stattdessen die Client-Adresse, die der Proxy in X-Forwarded-For meldet; siehe Reverse Proxy.
Um den Audit-Verlauf außerhalb der Instanz aufzubewahren, für ein SIEM, fügen Sie einen Syslog-Server hinzu, der die Audit-Einträge empfängt (siehe Syslog). Jeder Eintrag wird sofort gesendet, als eine Zeile audit {...} mit dem Eintrag als JSON, unabhängig von der Stufe des Servers. Die Syslog-Kopie wird weder von der Aufbewahrung unten entfernt noch durch eine Wiederherstellung der Datenbank ersetzt.
Aufbewahrung
Zwei tägliche Aufgaben mit einer Einstellung verhindern, dass die Datenbank unbegrenzt wächst:
| Variable | Standard | Läuft um | Entfernt |
|---|---|---|---|
AUDIT_RETENTION_DAYS | 365 | 3:30 | Audit-Einträge, die älter sind |
JOB_RETENTION_DAYS | 0 (alle behalten) | 2:30 | Abgeschlossene Jobs, die älter sind, samt ihrer Ausgabe |
0 behält bei beiden alles. Zwei weitere tägliche Aufgaben haben keine Einstellung: Um 3:00 werden die gespeicherten Refresh-Token, die älter als 30 Tage sind, und die abgelaufenen Token-Sperren entfernt, und um 4:00 die gespeicherten Jobs, deren Ablauf verstrichen ist. Die Zeiten gelten in der Zeitzone von LOG_TZ, und der Worker führt sie aus.
Die Jobausgabe ist meist die am schnellsten wachsende Tabelle: Die Seite Status meldet ihre Größe und warnt, wenn sie 1 GB überschreitet, ohne dass eine Aufbewahrung gesetzt ist. Laufende Jobs und Jobs, die auf Genehmigung warten, werden nie entfernt. Legen Sie eine Job-Aufbewahrung fest, die Ihren Audit-Anforderungen entspricht, und bewahren Sie den Audit-Verlauf mindestens ebenso lange auf.