9. Logging#
Nubus-Komponenten erstellen Logging-Meldungen, die Betreibern helfen, das Systemverhalten zu überwachen und Probleme zu beheben. Dieser Abschnitt beschreibt die Logging-Funktionen von Nubus, einschließlich strukturiertem Logging und der Konfiguration von Logging-Level.
9.1. Strukturiertes Logging#
Strukturiertes Logging gibt Logging-Meldungen in einem standardisierten Format mit konsistenten Feldern aus. Dieses Format unterstützt die Integration mit Logging-Verwaltungssystemen wie Elasticsearch oder ähnlichen Tools. Strukturiertes Logging ist für die folgenden Bereitstellungen verfügbar:
- Nubus für UCS:
Seit 5.2-4. Standardmäßig aktiviert.
- Nubus für Kubernetes:
Seit 1.17.0. Standardmäßig deaktiviert.
9.1.1. Betroffene Komponenten#
Die folgenden Komponenten unterstützen strukturiertes Logging:
UMC Server
UDM HTTP REST API
UDM CLI
AD Connector
S4 Connector
Directory Notifier
Directory Listener
UDM HTTP REST API
UMC Server
Directory Notifier
Directory Listener
AD Connector
9.1.2. Protokollformat#
Strukturiertes Logging verwendet für eine Zeile das Format in Quellcode 9.1. Ein Beispiel finden Sie in Quellcode 9.2.
<timestamp> <severity:8> [<request ID>] <message>\t| <app data> <source code reference> [PID] [log facility] [traceback]
Die Felder haben folgende Bedeutung:
timestampISO 8601 formatierter Zeitstempel mit Sekundenbruchteilen und Zeitzone, beispielsweise
2023-10-27T08:22:57.275138+00:00.severityLogging-Level immer auf 8 Zeichen aufgefüllt. Für die verfügbaren Level siehe Logging-Level.
request IDID zum Verfolgen von Anfragen über Services hinweg. Ein Bindestrich (
-) zeigt an, dass keine Request-ID vorhanden ist.messageDie Nachricht aus der Logging-Meldung.
app dataSchlüssel-Wert-Paare mit anwendungsspezifischen Daten im Format
logfmt.source code referencePython-Modul und Zeilennummer, die den Logging-Eintrag erzeugt haben.
PIDProzess-ID, optional.
log facilityLog-Facility, optional.
tracebackException Traceback, optional.
2023-10-27T08:22:57.275138+00:00 INFO [31f863092a] modified group | dn="..." module=app.main pid=13825
2023-10-27T08:22:58.123454+00:00 DEBUG [ -] received request | method="POST" module=app.net pid=13825
9.1.3. Logging-Zeilen analysieren#
Zum Analysieren strukturierter Logging-Zeilen verwenden Sie in Python den regulären Ausdruck in Quellcode 9.3. Zeilen, die diesem Muster nicht entsprechen, sind Tracebacks oder ältere univention.debug Aufrufe. Sie können diese bei der Analyse ignorieren.
REGEX = (
r"^(?P<date>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3,6}\+\d{2}:?\d{2}) +"
r"(?P<level>\w+?) +\[(?P<request_id>.*?)\] (?P<message>.+?)\t\| (?P<data>.*?)$"
)
9.1.4. Strukturiertes Logging konfigurieren#
Zum Ändern der Einstellung für strukturiertes Logging verwenden Sie die folgende Konfiguration für Ihre Bereitstellung.
Nubus für UCS aktiviert strukturiertes Logging standardmäßig. Zum Deaktivieren des strukturierten Loggings führen Sie die folgenden Schritte aus.
Setzen Sie die entsprechenden UCR-Variablen auf
false, wie in Quellcode 9.4 gezeigt. Eine vollständige Liste der UCR-Variablen finden Sie unter UCR-Variablen für strukturiertes Logging.$ ucr set \ umc/server/debug/structured-logging=false \ directory/manager/rest/debug/structured-logging=false
Starten Sie die betroffenen Services neu, um die Änderungen anzuwenden, wie in Quellcode 9.5 gezeigt.
$ systemctl restart univention-management-console-server $ systemctl restart univention-directory-manager-rest
Zum erneuten Aktivieren des strukturierten Loggings wiederholen Sie die Schritte, setzen Sie die gleichen Variablen auf true und starten Sie die Services neu.
Nubus für Kubernetes deaktiviert strukturiertes Logging standardmäßig. Zum Aktivieren des strukturierten Loggings führen Sie die folgenden Schritte aus.
Fügen Sie die Konfiguration in Quellcode 9.6 zu Ihrer
custom_values.yamlDatei hinzu.Die Konfigurationswerte entsprechen dem Muster der UCR-Variablen. Eine vollständige Liste der UCR-Variablen finden Sie unter UCR-Variablen für strukturiertes Logging.
global: configUcr: umc: server: debug: structured-logging: "true" module: debug: structured-logging: "true" directory: manager: rest: debug: structured-logging: "true" listener: debug: structured-logging: "true" notifier: debug: structured-logging: "true" connector: ad: debug: structured-logging: "true"
Nachdem Sie Ihre Konfiguration aktualisiert haben, wenden Sie die Änderungen wie in Apply configuration in Univention Nubus for Kubernetes - Operation Manual [1] beschrieben an.
Zum Deaktivieren des strukturierten Loggings wiederholen Sie die Schritte, setzen Sie die Werte auf "false" und wenden Sie die Änderungen an.
9.2. Logging-Level#
Strukturiertes Logging in Nubus bietet die Logging-Level, wie in Tab. 9.1 beschrieben.
Stufe |
Name |
Beschreibung |
|---|---|---|
0 |
ERROR |
Nur Fehlermeldungen. |
1 |
WARNING |
Warnungen und Fehler. |
2 |
PROCESS |
Ereignisse aus dem Prozesslebenszyklus, wie Zustandsübergänge. |
3 |
INFO |
Informationsmeldungen über normale Vorgänge. Dies ist die Standardeinstellung. |
4 |
DEBUG |
Debug Meldungen. |
5 |
TRACE |
Logging auf Trace-Ebene für detailliertes Debugging. |
9.2.1. Logging-Level konfigurieren#
Zum Ändern der Logging-Level für bestimmte Komponenten verwenden Sie die folgende Konfiguration für Ihre Installation.
Zum Ändern der Logging-Level führen Sie die folgenden Schritte aus:
Setzen Sie die entsprechenden UCR-Variablen, wie in Quellcode 9.7 gezeigt. Eine vollständige Liste der UCR-Variablen finden Sie unter UCR-Variablen für strukturiertes Logging.
$ ucr set \ umc/server/debug/level=3 \ directory/manager/rest/debug_level=3
Starten Sie die betroffenen Services neu, um die Änderungen anzuwenden, wie in Quellcode 9.8 gezeigt.
$ systemctl restart univention-management-console-server $ systemctl restart univention-directory-manager-rest
Zum Ändern der Logging-Level für bestimmte Komponenten führen Sie die folgenden Schritte aus:
Fügen Sie die Konfiguration in Quellcode 9.9 zu Ihrer
custom_values.yamlDatei hinzu.Die Konfigurationswerte entsprechen dem Muster der UCR-Variablen. Eine vollständige Liste der UCR-Variablen finden Sie unter UCR-Variablen für strukturiertes Logging.
global: configUcr: umc: server: debug: level: 3 module: debug: level: 3 directory: manager: rest: debug_level: 3 listener: debug: level: 3 notifier: debug: level: 3 connector: ad: debug: level: 3
Nachdem Sie Ihre Konfiguration aktualisiert haben, wenden Sie die Änderungen wie in Apply configuration in Univention Nubus for Kubernetes - Operation Manual [1] beschrieben an.
9.3. UCR-Variablen für strukturiertes Logging#
Tab. 9.2 listet alle UCR-Variablen für strukturiertes Logging auf Nubus für UCS auf. Der Standardwert ist true, was aktiviert bedeutet.
Komponente |
UCR-Variable |
|---|---|
UMC Server |
|
UMC Module |
|
UDM HTTP REST API |
|
UDM CLI |
|
AD Connector |
|
S4 Connector |
|
Directory Notifier |
|
Directory Listener |
|