Der EcoSystem Debug-Modus
Der Debug-Modus bringt das System in einen Zustand, in dem die maximale Ausprägung an Logs produziert wird. Dadurch können im System auftretende Fehler bestmöglich nachvollzogen werden.
Aktivierung
Die Aktivierung des Debug-Modus erfolgt über den Befehl cesapp debug-mode enable
.
Nach der Ausführung muss die Aktivierung durch die Eingabe von y
bestätigt werden.
Nach der Aktivierung des Debug-Modus werden sämtliche Log-Dateien rotiert. Das bedeutet, deren Inhalt als Archiv-Dateien neben den eigentlichen Log-Dateien abgelegt werden. Die Log-Dateien werden anschließend geleert.
Anschließend werden die Log-Level aller Dogus auf die höchste Stufe (DEBUG) gesetzt. Vorher gegebenenfalls konfigurierte Log-Level werden im etcd gesichert, um später wiederhergestellt werden zu können.
Damit die Konfiguration Anwendung findet, werden dann alle Dogus neu gestartet.
Wenn der Debug-Modus aktiviert ist, können Sie einen aufgetretenen Fehler reproduzieren. Alle für das Verständnis des Problems relevanten Informationen sollten dann in den Log-Dateien zu finden sein.
Solange der Debug-Modus aktiviert ist, wird bei jedem Cesapp-Befehl eine Warnung ausgegeben, die daran erinnert, dass der Debug-Modus aktiviert ist. Diese soll nur dazu dienen, dass man sich bei jeder Benutzung eines Cesapp-Befehls im Klaren sein soll, dass der Debug-Modus noch aktiv ist und kann ansonsten ignoriert werden.
Warnung: Das System sollte während der Aktivierung nach Möglichkeit nicht produktiv genutzt werden, da ansonsten die Log-Dateien ungewöhnlich groß werden und außerdem dadurch die Nachvollziehbarkeit von Fehlern verschlechtert wird.
Deaktivierung
Die Deaktivierung des Debug-Modus erfolgt über den Befehl cesapp debug-mode disable
.
Nach der Ausführung muss die Deaktivierung durch die Eingabe von y
bestätigt werden.
Nach der Deaktivierung des Debug-Modus werden die Log-Level auf den Wert zurückgesetzt, den sie vor der Aktivierung hatten. Die Logs werden erneut rotiert und alle Dogus ein weiteres Mal neu gestartet. Das System kann nun wieder normal genutzt werden.
Statusabfrage
Die Statusabfrage des Debug-Modus erfolgt über den Befehl cesapp debug-mode status
.
Dabei bekommt man entweder die Ausgabe enabled
oder disabled
, je nachdem, ob der Debug-Modus aktiviert oder deaktiviert ist.
Falls der Debug-Modus aktiviert ist, wird zusätzlich noch eine Warnung darüber ausgegeben.
Sollte der Status-Befehl zum Beispiel in einem Script ausgeführt werden und die Warnung darf
nicht auftauchen, kann der Befehl mit cesapp --log-level error debug-mode status
ausgeführt
werden.
Support-Archiv
Das Support-Archiv kann nur erstellt werden, wenn der Debug-Modus aktiviert ist.
Dies erfolgt über den Befehl cesapp debug-mode archive create
. So wird das
Archiv zusammengestellt und als /var/log/docker/debug-archive.zip
abgelegt.
Das Support-Archiv enthält alle Dateien, die für Supportfälle relevant sind.
Die folgenden Dinge sind enthalten:
- Installierte Dogus, Container Status und größe der Volumes
- Alle Umgebungsvariablen
-
Status von wichtigen Prozessen
- Backup-Watcher
- ETCD
- Cesappd
- Alle laufenden Prozesse
- Status der Firewall
-
Informationen über das System
- Betriebssystem & Version
- Kernel
- CPU
- Partitionen & Auslastung
- RAM
- SWAP
- Installierte Apt-Pakete
- Eine Liste aller enthaltenen Dateien in allen Volumes der Dogus
- Implementierung ausstehend: Logs aller dogus und aller wichtigen Systemprogramme
-
Implementierung ausstehend: Kopie des ETCD
- Als Baumstruktur: Nur mit Keys
- Als .json-Objekt: Keys und Values
- Verschlüsselte Keys sind verschlüsselt im Archiv enthalten und damit für niemanden rekonstruierbar
- Einzelne Keys oder Ordner sind durch eine etcd-Konfiguration oder einen command-flag automatisch ausblendbar
Konfiguration der etcd-keys
Um Standardwerte zu definieren, welche Registry-Keys im Archiv zensiert werden sollen.
Dafür müssen registry-keys wie folgt angelegt werden:
Ein key im Format config/_global/debug/excluded_etcd_keys/<frei-waehlbarer-name>/<key-oder-dir-zum-Zensieren>
Beispiel: etcdctl set config/_global/debug/excluded_etcd_keys/globale_konfiguration config/_global
Die globale Konfiguration wird dann in der Json-Datei im Archiv so angezeigt:
{
"config" : {
"_global": "***"
}
}
Die zusätzlich im Archiv abgelegte Baumstruktur der Registry bleibt dabei unberührt und zeigt alle vorhandenen keys und values an.
Wird dem Befehl der Flag --exclude-etcd-keys
mitgegeben, wird die Konfiguration im etcd ignoriert.
Flags
Der Befehl zum Erstellen des Archivs kann über einige Flags konfiguriert werden.
--fail-fast
Normalerweise bricht die Erstellung eines Archivs nicht ab, wenn ein Fehler auftritt.
Das sorgt dafür, dass im Fehlerfall zumindest ein Teil des Archivs erstellt wird.
Sollte aber gewünscht sein, dass der Befehl in diesem Fall mit einer Fehlermeldung
abgebrochen wird, kann der Flag --fail-fast
mitgegeben werden.
--path
Hier kann ein alternativer Pfad für das Archiv angegeben werden. Es sollte immer ein
vollständiger Pfad inklusive Dateiname und Dateiendung sein.
Sollte ein unvollständiger Pfad angegeben werden (z.B. /path/to/myfile
) wird dieser
wie folgt vervollständigt: /path/to/myfile/debug-archive.zip
.
Beispiel für eine korrekte Verwendung des Flags:
cesapp debug-mode archive --path /path/to/archive.zip create
.
--exclude-etcd-keys
Über diesen Flag kann eine Liste aus Registry-Keys (sowohl einzelne Keys als auch ganze Ordner) definiert werden,
deren Werte in dem Support-Archiv zensiert werden sollen. Die Keys sind weiterhin sichtbar, deren Werte
werden aber mit ***
angegeben.
Diesem Flag wird eine Liste aus Kommaseparierten Werten übergeben, z.B. --exclude-etcd-keys dogu,config/_global
.
--exclude und --only
Diese Flags dienen dazu, zu filtern, welche Inhalte in das Support-Archiv sollen.
Es kann bei einem Befehl entweder --exclude
oder --only
verwendet werden, niemals beide.
Der Wert des Flags wird als kommaseparierte Liste angegeben.
Mit --exclude
können bestimmte Teile aus dem Archiv ausgeschlossen werden.
Mit --only
werden alle Teile aus dem Archiv ausgeschlossen, die nicht aufgezählt wurden.
Beispiele:
cesapp debug-mode archive --exclude=log,etcd create
cesapp debug-mode archive --only=system,env create
Folgende Werte sind für --exclude
und --only
gültig:
system
Dieses Paket enthält Informationen über das Betriebssystem und dessen Version, verwendete Hardware, Partitionen und installierte Apt-Pakete.
env
Dieses Paket enthält alle Umgebungsvariablen.
dogu
Enthält eine Liste mit allen installierten Dogus und deren Status.
process
Enthält Informationen über alle laufenden Services und Prozesse.
volume
Enthält eine Liste mit allen Dateien aller Volumes aller Dogus.
log
Enthält alle wichtigen Log-Dateien.
etcd
Enthält den gesamten Inhalt des etcd (verschlüsselte Keys sind nicht sichtbar).
Manpage
NAME:
cesapp debug-mode - cesapp debug-mode <enable | disable | status | archive>
USAGE:
cesapp debug-mode command [command options] [arguments...]
COMMANDS:
archive cesapp debug-mode archive <flags> create
help, h Shows a list of commands or help for one command
OPTIONS:
--help, -h show help (default: false)
--version, -v print the version (default: false)