2016-04-27 20 views
10

Ho un modulo in esecuzione in App Engine Classic e un altro modulo in esecuzione in App Engine flessibile. Quando si visualizzano i registri in esecuzione in App Engine Classic, le voci del registro sono nidificate all'interno di ciascuna richiesta.I registri non sono nidificati sotto Richieste in VM flessibile

Tuttavia, durante la visualizzazione dei registri in esecuzione in App Engine Flexible, non sono nidificati. Ogni voce del log sembra non essere connessa alla richiesta. Ciò rende molto difficile determinare quale registro sia associato a quale richiesta.

È possibile ottenere i registri in App Engine Flexible da annidarsi sotto ogni richiesta (come avviene con App Engine Classic)?

Non riesco a trovare nulla nella documentazione che spiega questa discrepanza.

+0

Quale runtime stai usando? Java 8, Python, ... o stai usando un'immagine Docker personalizzata? – ozarov

+0

Sto usando un runtime personalizzato ('runtime: custom',' vm: true'), ma la mia immagine di base è 'gcr.io/google_appengine/python-compat-multicore', che dovrebbe essere compatibile con le API standard di App Engine . – speedplane

risposta

3

È ora possibile scrivere registri delle applicazioni nidificate che si comportano in modo simile a App Engine standard seguendo le istruzioni qui: https://cloud.google.com/logging/docs/view/service/appengine-logs#linking_application_logs_and_requests

+2

Sì, ho appena notato che questa funzione era attiva, felice di vederlo finalmente accadere. Una nota a margine: per vedere questi registri, devi selezionare manualmente i registri 'app' nel dropdown del tipo di log nel log viewer. – speedplane

+1

Grazie! Inoltre, quando dice "' trace' deve essere lo stesso nel parent e nel relativo child (i) "significa anche" deve essere impostato "trace". –

+0

Qualcuno potrebbe dare un esempio su come questo può essere usato. Ad esempio, l'ambiente flessibile genera già una voce di registro "principale" (per la richiesta stessa). Come posso ottenere i valori di resource.type, resource.labels e trace per quella voce parent, per propagarli alla voce child? –

4

Come si può immaginare, App Engine Flexible utilizza un buon numero di macchinari diversi dal tradizionale App Engine e questi diversi ambienti si collegano in modo diverso. Purtroppo non è attualmente possibile indurre Flexible ad accedere allo stesso formato di dati di Classic.

Se questo è abbastanza importante per te, puoi sempre accedere direttamente tramite il , che è ciò che l'API di registrazione App Engine finisce per passare a oggi. È possibile dedurre il formato dei dati da registrare esaminando le voci tradizionali di App Engine, anche se è stata aperta una richiesta di funzionalità per documentarla pubblicamente in modo più esplicito.

Inoltre, come nota di passaggio, sul fronte Stackdriver Logging (precedentemente Cloud Logging), stiamo sicuramente pensando ai modi per supportare questo tipo di denormalizzazione dei dati dei registri più in generale, piuttosto che solo l'involucro speciale per App Engine l'accesso a un formato specifico, in quanto sarebbe una funzionalità ampiamente utile. Tuttavia, non abbiamo piani o tempistiche specifici che possiamo condividere a questo punto, solo osservando che questo è nel nostro radar.

+0

Grazie Ben. È vero che questi log denormalizzati vengono visualizzati solo quando si utilizza un Runtime flessibile personalizzato (ad esempio, 'runtime: custom',' vm: true')? Gli utenti ottengono i log annidati quando si utilizza lo standard Runtime flessibile (ad esempio, 'runtime: python-compat',' vm: true')? – speedplane

+0

Attaccando sui diversi runtime, su 'runtime: python' non otteniamo i log annidati. Non ho idea di 'python-compat'. – john2x

+0

Ciao Ben, aggiorni la documentazione su come utilizzare l'API di registrazione per emulare il raggruppamento dei registri standard del motore delle app su richiesta? – stanm87