Python risoluzione dei problemi
È possibile seguire questi passaggi per individuare eventuali problemi che potrebbero verificarsi con il pacchetto Instana Python.
Installazione manuale dal repository GitHub
Invece di effettuare l'installazione dal repository " Python Package Index" ( PyPI ), è possibile installare il pacchetto " Instana " ( Python ) direttamente dal repository GitHub eseguendo il seguente comando:
pip install git+https://github.com/instana/python-sensor@v3.0.1
Componenti supportati
Prima di dedicare troppo tempo alla diagnosi di un problema, assicurati innanzitutto che il componente in questione sia supportato. Un elenco di tutti i componenti supportati è disponibile nella pagina "Componenti e versioni supportate" all'indirizzo Python.
Registrazione e variabili d'ambiente
Per impostazione predefinita, il pacchetto registra solo i messaggi che indicano se si sono verificati dei problemi. Se si desidera un output di registrazione più dettagliato, impostare la variabile di ambiente INSTANA_DEBUG . Abilita la registrazione a livello di debug nella gemma Instana.
È possibile gestire l'output di log anche in altri modi. Per ulteriori informazioni, consultare la configurazione di Python.
Problemi di monitoraggio
Con il sensore Python di Instana potresti riscontrare i seguenti problemi di monitoraggio:
Python sensore non installato
Tipo di problema di monitoraggio: python_sensor_not_installed
Il processo " Python " viene eseguito su una piattaforma che Instana non supporta per la strumentazione automatica, e per la strumentazione del processo non vengono utilizzati né il metodo "Activating Without Code Changes" né quello "Activating With Code Changes".
Possibile soluzione
Segui le istruzioni per l'installazione manuale per monitorare correttamente le tue applicazioni Python.
Aree problematiche generali
I seguenti problemi si verificano comunemente:
Python Il processo non viene visualizzato nella dashboard
Controlla i registri dell'Host Agent su Instana per verificare se sono presenti messaggi relativi al processo Python.
Molti processi Python vengono monitorati automaticamente da remoto. Nei casi in cui tale strumentazione non sia possibile, l'agente host potrebbe registrare un messaggio che segnala un problema.
Verifica che il tuo ambiente sia supportato e che tu stia utilizzando una versione supportata di Python
Prima di dedicare troppo tempo alla diagnosi di un problema, assicurati innanzitutto che il componente e l'ambiente in questione siano supportati. Un elenco di tutti i componenti supportati è disponibile alla pagina Python, nella sezione "Componenti e versioni supportati".
Convalida le fasi di installazione
Verifica se questa procedura è stata configurata tramite un webhook di AutoTrace o manualmente.
Se il processo è monitorato tramite un webhook di AutoTrace, assicurati che i prerequisiti siano soddisfatti e che il webhook funzioni correttamente.
Se manuale, verificare che le fasi di installazione manuale siano state seguite correttamente.
Verificare che il pacchetto Instana Python sia installato e disponibile per l'applicazione
Per verificarlo, cerca
instananel filerequirements.txtdell'applicazione Python.In alternativa, dall'ambiente applicativo Python è possibile eseguire il comando
pip list, che elenca tutti i pacchetti Python disponibili per l'applicazione Python. Verifica che il pacchetto Instana Python sia presente in quell'elenco.Assicurati che il pacchetto Instana sia aggiornato all'ultima versione.
L'ultima versione disponibile è reperibile su PyPI.
Nel
requirements.txt, è necessario verificare che accanto al nome sia indicata l'ultima versione del pacchetto Instana Python, ad esempioinstana==x.x.x.pip listemette anche i numeri di versione nell'elenco generato.Verificare che Instana sia presente nell'output del log dell'applicazione.
I log dell'applicazione o del container devono sempre contenere un messaggio di avvio simile a
Stan is on the scene. Starting Instana instrumentation version x.x.xSe questo messaggio non viene visualizzato, è probabile che il pacchetto non sia installato o che le istruzioni per l'installazione manuale non siano state seguite correttamente.
Attiva l'output di debug e ricontrolla i log dell'applicazione o del container.
Imposta la variabile di ambiente
INSTANA_DEBUG=trueper il processo Python e riconvalida i log dell'applicazione o del contenitore (come #6).Presta particolare attenzione per verificare se sono presenti messaggi di errore relativi a Instana.
Prova ad avviare l'applicazione Python in modalità dettagliata da una console
Un esempio di come avviare il sistema dipende in gran parte dall'applicazione Python in questione. Ad esempio, se l'applicazione Python è contenuta in
app.py, è possibile eseguire i seguenti comandi:export INSTANA_DEBUG=true python app.pyPresta particolare attenzione per verificare se nell'output dell'applicazione Python compaiono messaggi di errore relativi a Instana.
Archiviare un ticket di supporto.
Se hai verificato tutti i passaggi e il processo " Python " continua a non comparire nella dashboard " Instana ", invia una richiesta di assistenza.
Il ticket di assistenza deve contenere:
- Dettagli dell'ambiente; piattaforma, versione Python , framework in uso
- Riepilogo di tutte le verifiche precedenti.
Tracce mancanti da un’applicazione Python
Assicurati che i framework e le librerie in uso siano supportati consultando la pagina " Versioni supportate".
Assicurati che la procedura di richiesta sia visibile nella tua dashboard di Instana sotto l'host in questione.
Se la tua domanda non compare nella dashboard di Instana, consulta la sezione precedente.
Impostare l'ambiente
INSTANA_DEBUG=trueper il processo dell'applicazione Python e riavviare il processo.Una volta impostata questa variabile d'ambiente, dovresti vedere un output di log proveniente dal processo dell'applicazione Python simile al seguente:
DEBUG instana: initializing agent INFO instana: Stan is on the scene. Starting Instana instrumentation version: 1.22.1 DEBUG instana: initializing fsm DEBUG instana: Instrumenting asyncio DEBUG instana: Instrumenting aiohttp client DEBUG instana: Instrumenting aiohttp server DEBUG instana: Instrumenting asynqp DEBUG instana: Instrumenting cassandra DEBUG instana: Instrumenting couchbase DEBUG instana: Instrumenting flask (without blinker support) DEBUG instana: Instrumenting gevent: gevent not detected or loaded. Nothing done. DEBUG instana: Instrumenting grpcio DEBUG instana: Instrumenting tornado client DEBUG instana: Instrumenting tornado server DEBUG instana: Instrumenting logging DEBUG instana: Instrumenting pymysql DEBUG instana: Instrumenting psycopg2 DEBUG instana: Instrumenting redis DEBUG instana: Instrumenting sqlalchemy DEBUG instana: Instrumenting suds-jurko DEBUG instana: Instrumenting urllib3 DEBUG instana: Instrumenting django DEBUG instana: Instana host agent found on localhost:42699 DEBUG instana: Attempting to make an announcement to the agent on localhost:42699 DEBUG instana: Spawning metric & span reporting threads DEBUG instana: -> Metric reporting thread is now alive DEBUG instana: -> Span reporting thread is now alive DEBUG instana: Announced pid: 34287 (true pid: 34287). Waiting for Agent Ready... DEBUG instana: Instrumenting pymongo DEBUG instana: uwsgi hooks: decorators not available: likely not running under uWSGI INFO instana: Instana host agent available. We're in business. Announced pid: 34287 (true pid: 34287) DEBUG instana: Sending process snapshot dataAssicurarsi che i componenti previsti siano in questo elenco per la visibilità corretta.
Controllare le intestazioni del contesto della richiesta nelle intestazioni di risposta
Effettua una richiesta alla tua applicazione con
curlowgetper controllare le intestazioni della risposta restituite dall'applicazione.Ad esempio, l'opzione restituisce le
-icurlintestazioni della risposta:curl -i http://127.0.0.1:8000/ HTTP/1.1 200 OK Date: Wed, 10 Jun 2020 08:55:25 GMT Server: WSGIServer/0.2 CPython/3.6.9 Content-Type: text/html; charset=utf-8 X-Instana-T: 495b8301e86286c4 X-Instana-S: 495b8301e86286c4 X-Instana-L: 1 Server-Timing: intid;desc=495b8301e86286c4 Connection: closeNell'output dovresti vedere le intestazioni
X-Instana-TX-Instana-L,X-Instana-S, e.Se nell'output vengono visualizzate queste intestazioni, è possibile cercare questa traccia specifica in Query Analyze utilizzando il filtro
trace.id equals 495b8301e86286c4, a condizione che l'intervallo di tempo selezionato copra il periodo in cui è stata effettuata la richiesta.File di un ticket di supporto
Se stai eseguendo uno dei framework o componenti supportati e non vedi le intestazioni di risposta X-Instana-T, X-Instana-Se X-Instana-L dal passo precedente, archivia un ticket di supporto. ` ` ` `
Allegare quanto segue al ticket di supporto:
- L'applicazione
requirements.txto l'elenco di pacchetti Python in uso (output dapip list) - Il link del pannello di controllo all'entità applicazione dal passo #2
- L'output del passo #3
- L'output del passo #4
Il tracciamento causa l'arresto anomalo di un processo di " Python " con il messaggio "Impossibile avviare un nuovo thread"
Se un'applicazione Python viene arrestata in modo anomalo dalla traccia e il messaggio RuntimeError: can't start new thread viene visualizzato nei log dell'applicazione, la causa più probabile è che sia necessario concedere le autorizzazioni all'applicazione. Per ulteriori informazioni sulla traccia e sull'autorizzazione di avvio del thread, consultare Traccia delle note e delle limitazioni.
AutoTrace provoca il crash di un processo di Python
File di un ticket di supporto
Se il webhook AutoTrace sta mandando in crash un processo Python, proporre un ticket.
Arresta la strumentazione AutoTrace webhook per il processo specifico.
Per ulteriori informazioni su come contrassegnare una risorsa per il webhook di AutoTrace, consultare Instana AutoTrace webhook. È inoltre possibile configurare un webhook di AutoTrace in modo da ignorare un intero spazio dei nomi di risorse. Inoltre, è possibile disattivare completamente il Tracer di Python nel webhook. Questo passo è una soluzione temporanea fino a quando la causa principale dell'arresto anomalo non viene identificata e corretta.
Utilizzare il metodo di installazione manuale
Nel frattempo, puoi in alternativa utilizzare il metodo di installazione manuale per la visibilità Python .
AUTOWRAPT_BOOTSTRAP, gevent e RecursionError
gevent Il "monkey patching" interessa molte delle librerie standard di Python e uno dei geventrequisiti è che tale operazione venga eseguita il prima possibile durante il processo di avvio.
Se si utilizza il metodo di installazione «Attivazione senza modifiche al codice » (con la variabile AUTOWRAPT_BOOTSTRAP d'ambiente) o il webhook AutoTrace e il gevent pacchetto con Instana Python Tracer in una versione precedente alla 2.5.0, è possibile che si verifichi il seguente errore:
RecursionError: maximum recursion depth exceeded while calling a Python object
[Previous line repeated 212 more times]
super(SSLContext, SSLContext).options.__set__(self, value)
Questo errore si verifica perché autowrapt carica il pacchetto instana Python prima di qualsiasi altro (anche gevent).
In questo caso, utilizza Instana Python Tracer 2.5.0 o versioni successive, oppure passa al metodo di installazione manuale (aggiungendo import instana al tuo codice).
AUTOWRAPT_BOOTSTRAP, Django e gevent configurati in modo errato
Se si utilizza il metodo di installazione «Attivazione senza modifiche al codice » (con la variabile AUTOWRAPT_BOOTSTRAP d'ambiente), oppure il webhook AutoTrace e i pacchetti Djangogevent e con Instana Python Tracer 2.5.0 o versioni successive, è possibile che venga visualizzato il seguente errore:
django.core.exceptions.ImproperlyConfigured: Requested settings, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
Assicurati quindi che la variabile DJANGO_SETTINGS_MODULE d'ambiente sia impostata prima dell'avvio dell'autotracing, come specificato nella documentazione di Django. Se l'impostazione della variabile DJANGO_SETTINGS_MODULE d'ambiente prima dell'avvio dell'autotracing non è ancora sufficiente, è possibile utilizzare il metodo "Attivazione tramite modifiche al codice" dell'attivazione del pacchetto.
Migrazione al webhook Instana AutoTrace
Il webhook Instana AutoTrace è ora il metodo supportato per la strumentazione automatica delle applicazioni Python monitorate da Instana.
Per completare la migrazione al webhook di AutoTrace, è necessario rimuovere i seguenti elementi dalle proprie applicazioni:
Il pacchetto " Instana " Python
Il webhook Instana AutoTrace gestisce in modo indipendente il pacchetto Instana Python per la tua applicazione. Non è necessario che tu o la tua organizzazione lo installiate manualmente.
Assicurati di rimuovere il pacchetto
instanaPython dal tuorequirements.txt,Pipfile, ovirtualenv.Se stai effettuando chiamate a OpenTracing API, devi invece
opentracingimportare esplicitamente e assicurarti che le chiamate vengano effettuate su quel pacchetto (ad esempio,opentracing.tracer.start_active_span). Instana riceve comunque le tracce risultanti.Rimuovere la variabile d'ambiente
AUTOWRAPT_BOOTSTRAPQuesta variabile d'ambiente viene utilizzata per caricare il pacchetto Instana Python senza che sia necessario apportare modifiche al codice. Con il webhook Instana AutoTrace, questa variabile d'ambiente non è più necessaria.
Rimuovi tutte le chiamate
import instanaPython AutoTrace applica automaticamente il pacchetto Instana Python alle tue applicazioni Python. È possibile rimuovere le importazioni manuali del pacchetto Instana Python.