Steuern Sie die Diagnoseprotokolle auf Orchestrierungsebene für alloydbctl und Ansible, um die Ausführlichkeit für die Fehlerbehebung anzupassen oder die Ausgabe für automatisierte Skripts zu unterdrücken. Diese Logs sind für die Diagnose von Problemen während des Cluster-Bootstraps, der Verwaltung oder des allgemeinen Betriebs unerlässlich.
Debugging-Informationen erfassen und ausgeben
Sie können Debugging-Informationen entweder mit einer Ansible-Rolle oder dem Debugging-Dump-Tool erfassen und ausgeben.
Debugging-Informationen mit Ansible erfassen
Die Ansible-Rolle google.alloydbomni_orchestrator.dump_debug automatisiert den Erfassungsprozess für alle AlloyDB Omni-Knoten, die in Ihrer Bereitstellungsspezifikation definiert sind. Die folgenden Informationen werden erfasst und konsolidiert:
- Systemd-Status: aktueller Status aller AlloyDB Omni-Dienste.
- Journalprotokolle: Systemprotokolle, die zeitbasiertes Filtern ermöglichen.
Dump von Debug-Informationen generieren
Erstellen Sie ein Ansible-Playbook (z. B.
dump_debug.yml) auf Ihrem Steuerungsknoten. Fügen Sie dem Playbook Folgendes hinzu:- name: Collect AlloyDB Omni Debug Dump hosts: all become: true gather_facts: true vars: ansible_user: ANSIBLE_USER ansible_ssh_private_key_file: PATH_TO_PRIVATE_SSH_KEY # Optional: Customize dump behavior dump_debug_binary_path: "BINARY_PATH" dump_debug_collection_type: "COLLECTION_TYPE" dump_debug_local_dest: ""ANSIBLE_DESTINATION"" dump_debug_tag: ""TAG_NAME"" dump_debug_journal_spec: "JOURNAL_SPEC" roles: - role: google.alloydbomni_orchestrator.dump_debugErsetzen Sie Folgendes:
ANSIBLE_USER: Der Nutzer, als der sich Ansible anmeldet.PATH_TO_PRIVATE_SSH_KEY: Der Pfad zur privaten SSH-Schlüsseldatei.BINARY_PATH: Optional. Pfad zu Binärdateien auf Remote-Knoten. Die Standardeinstellung ist/usr/local/bin.COLLECTION_TYPE: Optional. Der Sammlungstyp (status,logs,configoderall). Standardmäßigall.ANSIBLE_DESTINATION: Optional. Ziel auf dem Ansible-Steuerungsknoten. Die Standardeinstellung ist/tmp/debug_dump.TAG_NAME: Optional. Benutzerdefinierte Kennung. Suffixe (z. B._1) werden hinzugefügt, wenn das Tag vorhanden ist. Die Standardeinstellung ist der Systemzeitstempel.JOURNAL_SPEC: Optional. Unterstütztjournalctl-Flags (z. B."--since '1 hour ago'"). Die Standardeinstellung ist-n 1000.
Führen Sie das Playbook mit dem Befehl
ansible-playbookaus und geben Sie Ihredeployment_spec.yamlals Inventar an.# standard execution ansible-playbook dump_debug.yml -i PATH_TO_DEPLOYMENT_SPECAlternativ können Sie das Playbook mit einem benutzerdefinierten Tag und einer Journal-Spezifikation Ihrer Wahl ausführen.
ansible-playbook dump_debug.yml -i PATH_TO_DEPLOYMENT_SPEC \ -e 'dump_debug_tag=TAG_NAME' \ -e 'dump_debug_journal_spec: "JOURNAL_SPEC"'Ersetzen Sie Folgendes:
PATH_TO_DEPLOYMENT_SPEC: Der Pfad zur YAML-Datei mit der Bereitstellungsspezifikation.TAG_NAME: Optional. Benutzerdefinierte Kennung. Suffixe (z. B._1) werden hinzugefügt, wenn das Tag vorhanden ist. Die Standardeinstellung ist der Systemzeitstempel.JOURNAL_SPEC: Optional. Unterstütztjournalctl-Flags (z. B."--since '1 hour ago'"). Standardmäßig auf-n 1000festgelegt.
Debugging-Informationen mit dem Debug-Dump-Tool erfassen
Mit dem Tool alloydbomni_dump können Sie eine Dump-Datei generieren. Dieses Tool ist im AlloyDB Omni-Orchestrator-Paket enthalten.
Dumpdatei generieren
Führen Sie das folgende Skript auf den AlloyDB Omni-Clusterknoten aus, die Sie debuggen möchten.
sudo /usr/local/bin/alloydbomni_dump \
-k SSH_KEY \
-u USER \
-d PATH_TO_DEPLOYMENT_SPEC \
-o OUTPUT_DIRECTORY \
[options]Ersetzen Sie Folgendes:
SSH_KEY: Der Pfad zum privaten SSH-Schlüssel des Nutzers.USER: Der Nutzername für den SSH-Zugriff auf die Clusterknoten.PATH_TO_DEPLOYMENT_SPEC: Der Pfad zur YAML-Datei mit der Bereitstellungsspezifikation.OUTPUT_DIRECTORY: Das lokale Verzeichnis, in dem die generierte Dumpdatei gespeichert werden soll.
Unterstützte Befehle
-k: Erforderlicher Pfad zum privaten SSH-Schlüssel.-u: Erforderlicher Nutzername des Dienstkontos.-d: Erforderlicher Pfad zur YAML-Datei mit der Bereitstellungsspezifikation.-o: Erforderliches Ausgabeverzeichnis für die endgültige TAR-Datei.-t: Optionale benutzerdefinierte Tag-ID.-c: Optionaler Sammlungstyp (status,logs,config,all).-s: Optionale Angabe der Journalgröße und -zeit (z. B.-s "--since \"30 minutes ago\"").
Beispiel für die Ausführung
alloydbomni_dump -k /home/user/ssh-key \
-u sa_12345 -d /tmp/deployment_spec.yaml \
-o /tmp/debug_dump -s "--since \"2 hours ago\""Diagnoseprotokolle des Orchestrators abrufen
Sie können die Diagnoseprotokolle abrufen, die sowohl von alloydbctl- als auch von Ansible-Orchestratoren generiert werden. So können Sie die Ausführlichkeit für die Fehlerbehebung erhöhen oder die Ausgabe für automatisierte Skripts deaktivieren. Logging ist für die Diagnose von Problemen während des Bootstrappings, der Verwaltung oder des allgemeinen Betriebs Ihrer Cluster unerlässlich.
alloydbctl-Debugging-Logs abrufen
Das alloydbctl-Tool unterstützt Befehlszeilenargumente, um die Logebene und das Ausgabeziel zu steuern. Die Logebene bestimmt den Schweregrad der zu protokollierenden Nachrichten, während das Logziel angibt, wohin diese Logs geschrieben werden.
alloydbctl [command] ... [{-l|--log_level} <LEVEL>] [{-f|--log_file} <FILE>]Protokollebenen (-l / --log_level)
Sie können die folgenden Logebenen verwenden. Bei Logebenen wird die Groß-/Kleinschreibung nicht berücksichtigt. DEBUG und debug beispielsweise werden also gleich behandelt.
- NOTSET (Standard): Kein Logging.
- DEBUG: Protokolliert detaillierte Informationen, die in der Regel nur bei der Diagnose von Problemen von Interesse sind. Protokolliert RPC-Anfragen und -Antworten.
- INFO: bestätigt, dass alles wie erwartet funktioniert.
- WARNUNG: Ein Hinweis darauf, dass etwas Unerwartetes passiert ist (z. B. „Speicherplatz niedrig“), die Software aber weiterhin funktioniert.
- FEHLER: Aufgrund eines schwerwiegenderen Problems kann die Software eine bestimmte Funktion nicht ausführen.
- KRITISCH: Ein schwerwiegender Fehler, der darauf hinweist, dass das Programm möglicherweise nicht weiter ausgeführt werden kann.
Logziel (-f / --log_file)
Sie können die folgenden Logziele auswählen:
- Dateipfad: Wenn angegeben (z. B.
-f /tmp/alloydbctl.log), werden Logs in die angegebene Datei geschrieben. - Standardausgabe: Wenn nicht angegeben, werden Logs in der Console (stdout) ausgegeben.
Beispiel
Im folgenden Beispiel wird alloydbctl verwendet, um Bereitstellungs- und Ressourcenspezifikationen anzuwenden und gleichzeitig das Logging auf DEBUG-Ebene zu aktivieren. Die Logs, einschließlich detaillierter Informationen und RPC-Anfragen/-Antworten, werden in die Datei /tmp/alloydbctl_debug.log anstelle der Standardausgabe geschrieben.
alloydbctl apply -d deployment_spec.yaml -r resource_spec.yaml -l DEBUG -f /tmp/alloydbctl_debug.logAnsible-Debugging-Logs abrufen
Der Ansible Orchestrator generiert Logs aus Ansible-Aufgaben und Ansible-Modulen.
Sie können standardmäßige Ansible-Befehlszeilenargumente übergeben, um das Logging-Verhalten für Aufgaben und Module zu ändern. Weitere Informationen finden Sie in der Dokumentation zu ansible-playbook.
Logebene für Ansible-Module
Standardmäßig werden Logs an die Console gesendet, in der das Playbook ausgeführt wird.
Führen Sie den folgenden Befehl aus, um die Konfigurationseinstellung log_level festzulegen:
ansible-playbook -i inventory.yaml bootstrap.yaml \
-e resource_spec=resource_spec.yaml \
-e log_level=DEBUG
Sie können auch die folgenden standardmäßigen Ansible-Ausführlichkeits-Flags verwenden, um die Ausführlichkeit der Ausgabe zu steuern:
-v: Grundlegende Ausführlichkeit (Logs auf INFO-Ebene).-vvoder höher: Erhöhte Ausführlichkeit (Logs auf DEBUG-Ebene).
Beispiel:
ansible-playbook -i inventory.yaml bootstrap.yaml \
-e resource_spec=resource_spec.yaml \
-vv
Logpfad für Ansible-Module
Standardmäßig werden keine Logs erfasst. Die Logebene muss konfiguriert werden, damit Logs in der Logdatei erfasst werden.
Führen Sie den folgenden Befehl aus, um die Ansible-Ausgabe in einer Logdatei zu speichern und die Konfiguration log_path festzulegen:
ansible-playbook -i inventory.yaml bootstrap.yaml \
-e resource_spec=resource_spec.yaml \
-e log_file=/tmp/ansible-module.log
Fehlgeschlagene systemd-Instanzen zurücksetzen
Wenn der Debug-Dump veraltete, fehlgeschlagene Dienstinstanzen enthält, löschen Sie sie, indem Sie den folgenden Befehl auf dem betroffenen Clusterknoten ausführen:
sudo systemctl reset-failedWenn Sie einen bestimmten systemd-Dienst zurücksetzen möchten, geben Sie den Namen der Dienstinstanz an:
sudo systemctl reset-failed INSTANCE_NAMEErsetzen Sie INSTANCE_NAME durch den Namen der systemd-Dienstinstanz, z. B. alloydbomni18@abc.service.