Consigli necessari sull'approccio per registrare il corpo delle richieste / risposte raw dalle API

4

Ho bisogno di alcuni consigli su un approccio per registrare i dati grezzi di richiesta / risposta da alcune webapps, per tutte le operazioni e i risultati su tutti gli APIS accessibili tramite i metodi HTTP (principalmente POST HTTP), che ho ospitato.

Obiettivo: acquisire un corpo di risposta grezza al termine del ciclo di vita richiesta-risposta. L'app è costruita usando Python / Java e nginx è il server web che sta frontendendo queste app.

Metodo 1: Usa le estensioni di log lua e acquisisci il corpo della risposta grezza alla fine del ciclo req-resp su nginx. O direttamente analizzando il corpo della risposta e registrandolo su un flatfile mentre inoltrando la risposta al richiedente o inoltrandolo a un altro registratore remoto in modo non bloccante.

I vantaggi:

  • molto semplice e facile da raggiungere.
  • la logica aggiuntiva codificata in lua viene eseguita in un ambiente molto imprigionato, quindi la sicurezza è di progettazione.

Svantaggi:

  • Notevole impatto sulle prestazioni poiché le dimensioni del buffer all'estremità del server Web sono limitate e enormi corpi di risposta causano più operazioni di rilettura del buffer.
  • La programmazione è limitata a lua, potrebbe non piacere a tutti.

Approccio 2: utilizza un middleware basato su Python / Java che trasmette la richiesta dal web server all'app Web e gestisce la richiesta / risposta da o verso l'app web. O qualcosa in twistato / tornado ecc.

I vantaggi:

  • Non è troppo difficile da implementare
  • la logica di filtraggio / registrazione può essere codificata in più lang / framework di alto livello
  • il server web non deve essere disturbato dall'avere logiche di business o ulteriori dipendenze aggiuntive.

Svantaggi:

  • Spese operative associate al mantenimento di un middleware diverso

Quale di questi pensi che sia un design elegante? I linguaggi e i framework per le app possono essere qualsiasi di Python / Java, ma il server web sarebbe nginx, su Linux.

    
posta ksvrgh 10.03.2017 - 09:47
fonte

1 risposta

2

Il suggerimento che ho se si desidera registrare il traffico HTTP non è affatto farlo in codice e invece utilizzare un front-end del webserver per farlo per voi.

Sia Apache che Ngnix hanno la capacità di registrare il traffico in entrata e in uscita su server separati. È possibile configurarli come proxy inverso per i server delle applicazioni, offrendo la possibilità di trarre vantaggio da altre funzionalità e vantaggi come la fornitura di contenuto Web statico in modo che i server delle applicazioni non siano gravati da tali richieste (presupponendo che non si stia già utilizzando un CDN) ). Inoltre, puoi usufruire di ulteriori moduli di sicurezza e autenticazione e SSO a livello web.

    
risposta data 12.03.2017 - 18:13
fonte

Leggi altre domande sui tag