Diagnose
Unser Ruby gem, Elixir package, Node.js package und Python package werden mit einem integrierten Diagnose-Kommandozeilen-Tool ausgeliefert, das Informationen über die Konfiguration der AppSignal-Bibliothek und der Umgebung ausgibt, in der sie ausgeführt wird. All diese Informationen können dabei helfen, eine mögliche Ursache eines Problems zu finden. Wenn Sie eine Support-Anfrage öffnen, werden wir Sie normalerweise bitten, dies zuerst auszuführen.Diagnose-Informationen
Der Diagnose-Befehl gibt die folgenden Daten aus.- Agent-Informationen
- Ruby gem / Elixir package / Node.js / Python package-Version
- Agent-Version
- Installationspfad des Ruby gem
- C-Extension / Nif geladen:
yes/no
- Host-Informationen
- Hardware-Architektur
- Betriebssystem
- Ruby / Elixir & OTP / Node.js / Python-Version
- Heroku-Erkennung – nur auf Heroku sichtbar
- Container-Erkennung
- Aktueller Benutzer ist
root-Benutzer:yes/no
- Agent-Diagnose
- Startet den Agent im Diagnosemodus
- Validierung der Agent-Konfiguration
- Initialisierung des Agent-Loggers
- Schreibrechte-Prüfung für den Pfad der Agent-Lock-Datei
- Konfiguration
- Umgebung
- Das Ruby gem gibt eine Warnung aus, wenn keine gefunden wird.
- Liste der Konfigurationsoptionen
- Siehe alle verfügbaren Konfigurationsoptionen:
- Umgebung
- Push API-Key-Validierung
- Testet, ob der verwendete Push API-Key bei AppSignal.com ein gültiger Schlüssel ist.
- Pfad-Informationen
- Testet alle erforderlichen Pfade darauf, ob sie beschreibbar sind. Gibt auch die Eigentumsrechte des aktuellen Benutzers aus.
current_path– Pfad, in dem der Diagnose-Befehl ausgeführt wird. Sollte ein Pfad für die Anwendung sein, die Sie debuggen möchten. Normalerweise derselbe wieroot_path. (nur Ruby)root_path– Anwendungspfad. AppSignal versucht, hier eineconfig/appsignal.rb/config/appsignal.yml-Datei zu finden. (nur Ruby)log_dir_path– Pfad, in dem die Log-Datei erstellt wird.log_file_path– Pfad, in dem die Log-Datei erstellt wird. Ist leer, wenn kein gangbarer Pfad gefunden werden konnte.
- Installationsinformationen (nur Ruby)
- Bei der Installation des AppSignal-Agents könnte etwas schief gelaufen sein.
Dieser Abschnitt gibt die Dateien
install.logundmkmf.log(Makefile-Log) aus.
- Bei der Installation des AppSignal-Agents könnte etwas schief gelaufen sein.
Dieser Abschnitt gibt die Dateien
- Konfiguration
Environment/envist gesetzt. - Konfiguration
nameist gesetzt. - Konfiguration
push_api_keyist gesetzt. - Konfiguration
activeist auftruegesetzt. - Der Push API-Key wird validiert. Dazu ist eine Internetverbindung erforderlich.
Konfiguration
Die Konfiguration ist entscheidend. Sie ist wichtig, weil der AppSignal-Agent ohne sie nicht weiß, welche Anwendung er instrumentiert und in welcher Umgebung. Mithilfe der Diagnose-Informationen prüfen wir, ob wir ein Problem mit der Konfiguration des Agents finden können. Die AppSignal-Agents haben mehrere Konfigurationsmethoden. Wir empfehlen Ihnen, das Konfigurationsthema zu lesen, um einzusteigen, insbesondere die minimal erforderliche Konfiguration, die Konfigurations-Ladereihenfolge und die Konfigurationsoptionen-Seiten, wenn Sie Probleme haben.- Konfigurationsübersicht: Ruby / Elixir / Node.js / Python
- Minimal erforderliche Konfiguration: Ruby / Elixir / Node.js / Python
- Konfigurations-Ladereihenfolge: Ruby / Elixir / Node.js / Python
- Konfigurationsoptionen: Ruby / Elixir / Node.js / Python
Keine Daten erscheinen
Es kann viele Gründe geben, warum eine Anwendung von AppSignal nicht erkannt wird. Erst wenn die AppSignal-Server anfangen, Daten von einer Anwendung zu empfangen, wird sie in der Benutzeroberfläche auf AppSignal.com erstellt; wenn keine Daten empfangen werden, wird auch keine Anwendung erstellt. Wenn eine Integration kaputt ist oder nicht korrekt eingerichtet wurde, kann es lange dauern, das Problem zu verfolgen. Um den AppSignal-Agent und seine Verarbeitung auszuschließen, können wir “Demo-Samples” senden.Logs
Wenn in den Diagnose-Informationen kein Problem gefunden wird, sind die Logs des Agents das nächste, was Sie sich ansehen können. Die AppSignal-Agents erstellen Log-Dateien, um nützliche Informationen und im Agent selbst aufgetretene Probleme auszugeben. Standardmäßig protokollieren die Agents “info”-Level-Logs und höher (warning & error). Um mehr für das Debugging relevante Daten zu protokollieren, setzen Sie die Optionlog_level (Ruby / Elixir / Python) / logLevel (Node.js) auf debug.
Inhalt der Logs
Die AppSignal-Log-Datei enthält Informationen von drei verschiedenen AppSignal-Komponenten. Jedem Log-Eintrag wird ein Zeitstempel, ein Komponentenname, eine Prozess-PID, ein Log-Level-Indikator und die Log-Nachricht selbst vorangestellt. Die verfügbaren Agent-Komponenten sind:processSprachspezifische Implementierung (Ruby / Elixir).extensionC-lang-Erweiterung zur Sprachimplementierung. Läuft im selben Prozess wieprocess.agentAppSignal Rust System-Agent. Ein separater Prozess.
Aufschlüsselung der Log-Nachricht
Aufschlüsselung der Datei-Logger-Log-Nachricht
Text
Aufschlüsselung der STDOUT-Log-Nachricht
Für STDOUT-Logger stellt das AppSignal Ruby gem der Nachricht ein erkennbares “appsignal”- Präfix voran, damit spezifische AppSignal-Nachrichten in der Log-Ausgabe des übergeordneten Prozesses gegreppt werden können.Text
Log-Speicherort
Es gibt zwei Methoden, um Logs aus der AppSignal-Bibliothek zu speichern. Indem die Logs in eine Log-Datei geschrieben werden und indem die Logs im STDOUT des Prozesses ausgegeben werden. Siehe dielog-Konfiguration für weitere Informationen.
Logs, die in eine Log-Datei geschrieben werden, werden nicht in die Log-Dateien Ihrer Anwendung geschrieben, sondern
haben ihre eigene appsignal.log-Datei. Abhängig von den Berechtigungen eines Hosts schreibt der
Agent die Logs an einen anderen Ort.
Das Ruby gem versucht zunächst, eine Log-Datei im Verzeichnis einer Anwendung zu erstellen.
Für Ruby-on-Rails-Anwendungen wird stattdessen eine Log-Datei im log/-
Verzeichnis erstellt. Wenn es keinen Erfolg beim Erstellen einer Log-Datei hat, fällt es auf
das /tmp-Verzeichnis des Systems zurück. Hier werden auch andere AppSignal-Agent-Dateien
gespeichert.
Das Elixir package schreibt die Log-Dateien in die Log-Datei /tmp/appsignal.log.
Wenn es komplett scheitert, einen beschreibbaren Ort zum Speichern seiner Logs zu finden, gibt es
sie im STDOUT des Prozesses der übergeordneten Anwendung aus. Dies kann auch mit
der :log-Option konfiguriert werden.
Der System-Agent kann derzeit nicht nach STDOUT loggen, daher loggt er immer in die
appsignal.log-Datei, auch wenn das Log auf STDOUT konfiguriert ist.
Um AppSignal mitteilen zu lassen, wohin es seine Logs schreibt, siehe die Ausgabe des
Diagnose-Befehls.
Log-Rotation
AppSignal führt keine Log-Rotation für seine Log-Dateien durch. Wir empfehlen die Konfiguration eines Systemtools wielogrotate, um Dateigröße und Aufbewahrung zu verwalten.
Standalone-Agent-Logs
Wenn Sie den AppSignal Standalone Agent verwenden, können Sie mit dem folgenden Befehl auf die Logs zugreifen:Bash
sudo kann in bestimmten Umgebungen wie Containern optional sein.)
Log-Dateien auf Heroku
Auf der Heroku-Hosting-Plattform protokolliert die Integrationsbibliothek automatisch nach STDOUT. Da der Agent nicht nach STDOUT loggen kann, schreibt er weiterhin in dieappsignal.log-Datei.
Auf Heroku ist es nicht möglich, die Inhalte der Log-Datei mit heroku run bash zu sehen und dann die Log-Datei zu lesen, aufgrund der Art und Weise, wie Heroku Dynos containerisiert sind.
Heroku bietet ein Add-on namens “Heroku Exec” an, um die Ausführung von Befehlen im selben Dyno-Container wie Ihre Anwendung zu ermöglichen. Mit diesem Add-on können wir die Log-Datei auf den Dynos Ihrer Anwendung lesen.
Läuft der Agent?
Wenn eine Anwendung mit AppSignal-Integration startet, bootet sie den AppSignal- System-Agent. Dieser Agent läuft als separater Prozess und kommuniziert mit der Anwendung. Nach der Verarbeitung von Instrumentierungsdaten ist es dieser Agent, der die Daten an die AppSignal-Server sendet, nicht der sprachspezifische Agent. Wenn der System-Agent nicht läuft, können keine Daten verarbeitet oder an AppSignal gesendet werden. Es ist wichtig zu wissen, ob der System-Agent läuft. Sie können ihn in der Prozessliste unter dem Namenappsignal-agent finden.
ps-Befehl auf der Kommandozeile auf Ihrem Host aus, um zu sehen, ob der Agent
läuft, während Ihre Anwendung mit AppSignal läuft.
Andere Fragen
Es können viele Faktoren eine Rolle spielen, wenn ein Problem auftritt. Dinge, die zu prüfen sind, wenn AppSignal nicht zu funktionieren scheint oder keine Logs verfügbar sind.- Seit wann tritt das Problem auf?
- Wurde der Agent aktualisiert?
- Wurden andere Bibliotheken aktualisiert?
- Was sagen die AppSignal-Agent-Logs mit der Option
log_levelaufdebuggesetzt? - Wird das Betriebssystem unterstützt?
- Wurde die “extension” korrekt installiert und geladen? Die Antworten sollten in der “diagnose”-Ausgabe zu finden sein.
- Läuft die Anwendung innerhalb eines containerisierten Systems?
- Sind die Server der Anwendung mit NTP synchronisiert, um Clock drift zu verhindern?
- Wird Ihr Problem in unserer Liste der bekannten Probleme erwähnt?