Diagnose
Onze Ruby gem, Elixir-pakket, Node.js-pakket en Python-pakket worden geleverd met een ingebouwd diagnose-commandoregelhulpprogramma dat informatie uitvoert over de configuratie van de AppSignal-bibliotheek en de omgeving waarin deze draait. Al deze informatie kan helpen bij het vinden van een mogelijke oorzaak van een probleem. Als u een ondersteuningsverzoek opent, vragen we u meestal om dit eerst uit te voeren.Diagnose-informatie
Het diagnose-commando voert de volgende gegevens uit.- Agent-informatie
- Ruby gem / Elixir-pakket / Node.js / Python-pakketversie
- Agent-versie
- Installatiepad van de Ruby gem
- C-extension / Nif geladen:
yes/no
- Host-informatie
- Hardware-architectuur
- Besturingssysteem
- Ruby / Elixir & OTP / Node.js / Python-versie
- Heroku-detectie - alleen zichtbaar op Heroku
- Containerdetectie
- Huidige gebruiker is
root-gebruiker:yes/no
- Agent-diagnostiek
- Start de agent in diagnose-modus
- Validatie van agentconfiguratie
- Initialisatie van agentlogger
- Controle of het pad van het agent-lockbestand beschrijfbaar is
- Configuratie
- Omgeving
- De Ruby gem geeft een waarschuwing als er geen wordt gevonden.
- Lijst met configuratieopties
- Zie alle beschikbare configuratieopties:
- Omgeving
- Validatie van Push API-sleutel
- Test of de gebruikte Push API-sleutel een geldige sleutel is bij AppSignal.com.
- Padinformatie
- Test of alle vereiste paden beschrijfbaar zijn. Geeft ook eigendom van de huidige gebruiker weer.
current_path- pad waarin het diagnose-commando wordt uitgevoerd. Moet een pad zijn voor de applicatie die u probeert te debuggen. Meestal hetzelfde alsroot_path. (Alleen Ruby)root_path- applicatiepad. AppSignal zal proberen hier eenconfig/appsignal.rb/config/appsignal.yml-bestand te vinden. (Alleen Ruby)log_dir_path- pad waarin het logbestand wordt aangemaakt.log_file_path- pad waar het logbestand wordt aangemaakt. Is leeg als er geen geschikt pad kon worden gevonden.
- Installatie-informatie (alleen Ruby)
- Er kan iets fout zijn gegaan tijdens de installatie van de AppSignal-
agent. Dit gedeelte geeft de bestanden
install.logenmkmf.log(Makefile-log) weer.
- Er kan iets fout zijn gegaan tijdens de installatie van de AppSignal-
agent. Dit gedeelte geeft de bestanden
- Configuratie
Environment/envis ingesteld. - Configuratie
nameis ingesteld. - Configuratie
push_api_keyis ingesteld. - Configuratie
activeis ingesteld optrue. - De Push API-sleutel valideert. Hiervoor is een internetverbinding nodig.
Configuratie
De configuratie is essentieel. Het is belangrijk, omdat zonder configuratie de AppSignal- agent niet weet welke applicatie hij instrumenteert en in welke omgeving. Met behulp van de diagnose-informatie kunnen we kijken of we een probleem met de configuratie van de agent kunnen vinden. De AppSignal-agents hebben meerdere methoden voor configuratie. We raden u aan het configuratieonderwerp door te lezen om te beginnen, specifiek de minimaal vereiste configuratie, de configuratie-laadvolgorde en de pagina’s met configuratieopties als u problemen ondervindt.- Configuratieoverzicht: Ruby / Elixir / Node.js / Python
- Minimaal vereiste configuratie: Ruby / Elixir / Node.js / Python
- Configuratie-laadvolgorde: Ruby / Elixir / Node.js / Python
- Configuratieopties: Ruby / Elixir / Node.js / Python
Er verschijnen geen gegevens
Er kunnen veel redenen zijn waarom een applicatie niet wordt gedetecteerd door AppSignal. Pas wanneer de AppSignal-servers gegevens van een applicatie beginnen te ontvangen, wordt deze aangemaakt in de UI op AppSignal.com; als er geen gegevens worden ontvangen, wordt er geen applicatie aangemaakt. Wanneer een integratie kapot is of niet correct is ingesteld, kan het lang duren om het probleem op te sporen. Om de AppSignal-agent en zijn verwerking uit te sluiten kunnen we “demo samples” verzenden.Logs
Als er geen probleem is gevonden in de diagnose-informatie, zijn de logs van de agent het volgende waar u naar kunt kijken. De AppSignal-agents maken logbestanden aan om nuttige informatie en problemen die in de agent zelf zijn aangetroffen weer te geven. Standaard loggen de agents logs op “info”-niveau en hoger (waarschuwing & fout). Om meer gegevens te loggen die relevant zijn voor debuggen, stelt u de optielog_level (Ruby / Elixir / Python) / logLevel (Node.js) in op debug.
Inhoud van logs
Het AppSignal-logbestand bevat informatie van drie verschillende AppSignal- componenten. Het zal elke logregel voorzien van een tijdstempel, componentnaam, proces-PID, log-niveau-indicator en de logregel zelf. De beschikbare agent-componenten zijn:processTaalspecifieke implementatie (Ruby / Elixir).extensionC-lang extension voor de taalimplementatie. Draait in hetzelfde proces alsprocess.agentAppSignal Rust-systeemagent. Een apart proces.
Uitsplitsing van logberichten
Uitsplitsing van logberichten van filelogger
Text
Uitsplitsing van STDOUT-logberichten
Voor STDOUT-loggers zet de AppSignal Ruby gem een herkenbare “appsignal”- prefix voor het bericht, zodat specifieke AppSignal-berichten gegrept kunnen worden in de loguitvoer van het bovenliggende proces.Text
Loglocatie
Er zijn twee methoden om logs van de AppSignal-bibliotheek op te slaan. Door de logs naar een logbestand te schrijven en door de logs af te drukken in de STDOUT van het proces. Zie delog-
configuratie
voor meer informatie.
Logs die naar een logbestand worden geschreven, worden niet naar de logbestanden van uw applicatie geschreven, maar
hebben hun eigen appsignal.log-bestand. Afhankelijk van de permissies van een host schrijft de
agent de logs naar een andere locatie.
De Ruby gem zal eerst proberen een logbestand aan te maken in de directory van een applicatie.
Voor Ruby on Rails-applicaties wordt in plaats daarvan een logbestand aangemaakt in de directory log/.
Als het niet lukt om een logbestand aan te maken, zal de gem terugvallen op
de /tmp-directory van het systeem. Dit is ook waar andere AppSignal-agentbestanden
worden opgeslagen.
Het Elixir-pakket schrijft de logbestanden naar het logbestand /tmp/appsignal.log.
Als het volledig niet lukt om een beschrijfbare locatie te vinden om zijn logs op te slaan, zal het
ze uitvoeren in de STDOUT van het bovenliggende applicatieproces. Dit kan ook
worden geconfigureerd met de optie :log.
De systeemagent kan momenteel niet naar STDOUT loggen, dus deze zal altijd loggen naar
het appsignal.log-bestand, zelfs wanneer log is geconfigureerd op STDOUT.
Om AppSignal u te laten vertellen waar het zijn logs naartoe schrijft, zie de uitvoer van
het diagnose-commando.
Logrotatie
AppSignal voert geen logrotatie uit voor zijn logbestanden. We raden aan een systeemtool zoalslogrotate te configureren om bestandsgrootte en bewaring te beheren.
Logs van standalone agent
Als u de AppSignal standalone agent gebruikt, kunt u de logs openen met het volgende commando:Bash
sudo is mogelijk optioneel in bepaalde omgevingen zoals containers.)
Logbestanden op Heroku
Op het Heroku-hostingplatform zal de integratiebibliotheek automatisch naar STDOUT loggen. Aangezien de agent niet naar STDOUT kan loggen, zal deze blijven schrijven naar hetappsignal.log-bestand.
Op Heroku is het niet mogelijk om de inhoud van het logbestand te zien met heroku run bash en vervolgens het logbestand te lezen, vanwege de manier waarop Heroku Dyno’s zijn gecontaineriseerd.
Heroku biedt een add-on genaamd “Heroku Exec” om het uitvoeren van commando’s in dezelfde dyno-container als uw applicatie mogelijk te maken. Met deze add-on kunnen we het logbestand op de dyno’s van uw applicatie lezen.
Draait de agent?
Wanneer een applicatie met AppSignal-integratie start, start deze de AppSignal- systeemagent op. Deze agent draait als een apart proces en communiceert met de applicatie. Na het verwerken van instrumentatiegegevens is het deze agent die de gegevens naar de AppSignal-servers verzendt, niet de taalspecifieke agent. Wanneer de systeemagent niet draait, kunnen er geen gegevens worden verwerkt of naar AppSignal worden verzonden. Het is belangrijk om te weten of de systeemagent draait. U vindt het in de proceslijst onder de naamappsignal-agent.
ps-commando uit op de commandoregel op uw host om te zien of de agent
draait terwijl uw applicatie met AppSignal draait.
Andere vragen
Er kunnen veel factoren een rol spelen wanneer zich een probleem voordoet. Zaken om te controleren wanneer AppSignal niet lijkt te werken of er geen logs beschikbaar zijn.- Sinds wanneer doet het probleem zich voor?
- Is de agent geüpdatet?
- Zijn andere bibliotheken geüpdatet?
- Wat zeggen de AppSignal-agentlogs met de optie
log_levelingesteld opdebug? - Is het besturingssysteem ondersteund?
- Heeft de “extension” zich correct geïnstalleerd en geladen? Antwoorden zouden in de “diagnose”-uitvoer moeten staan.
- Draait de applicatie binnen een gecontaineriseerd systeem?
- Worden de applicatieservers gesynchroniseerd met NTP om clock drift te voorkomen?
- Staat uw probleem in onze lijst van bekende problemen?