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.