Come possiamo registrare i registri da diversi servizi in un sistema?

0

Quindi, se sto progettando un sistema come un insieme di diversi ruoli (client, app-server, servizi back-end da 1 a n). Ognuno di questi ruoli avrà il proprio meccanismo di registrazione. Posso aggregare tutti i log in un'unica posizione, ma come posso sequenziare i log da fonti diverse, per mostrare un log interlacciato?

Posso fare la mia strategia. I timestamp possono aiutare ma non saranno accurati al 100%. Cosa viene fatto normalmente nel settore?

    
posta Asad Iqbal 27.01.2015 - 21:13
fonte

2 risposte

4

Normalmente si visualizzano i registri in modo indipendente. Troppo registro è un vero problema. Non c'è quasi alcun motivo per visualizzare un log interleaved. Se hai davvero bisogno di registrare una "azione" attraverso tutti i servizi, scrivili su un registro centrale

syslog è un ottimo esempio

apache scrive su un log mysql su un altro, e di solito non c'è mai una ragione per interlacciarli. La tua struttura non è diversa.

Se vuoi veramente interlacciare un log, devi farlo usando "qualcosa di centrale", cioè syslog, un file, un database, ecc., ma dovresti trattare il log come FIFO e non come ordinato in qualsiasi specifico modo.

    
risposta data 27.01.2015 - 21:33
fonte
1

Nella mia attuale azienda abbiamo una configurazione simile: siti Web pubblici, poche API per i partner e un sacco di attività e servizi in background. Una cosa che ho spinto per quando sono entrato nel team diversi anni prima era di registrare tutto in una tabella di database . Scettico?

  • Sì, lo era anche il DBA. L'ho convinto:)
  • Sì, dovevamo stare attenti a ostacolare le prestazioni del nostro DB di produzione con frequenti (media ~ 4 al secondo) inserti di registri di medie dimensioni (in media 100 ~ 2000 byte ciascuno): abbiamo configurato la tabella con la stessa semplicità possibile e indicizzato bene per accelerare le query.
  • Sì, abbiamo dovuto impostare un processo di archiviazione / cancellazione per ripulire i vecchi record (proprio come farebbe un buon amministratore di sistema su un server.)

I vantaggi sono enormi:

  • Il DB impone un ordinamento sequenziale delle voci di registro mediante una chiave intera di incremento automatico primario, pertanto esiste un ordinamento canonico per l'elenco di record di registro e, naturalmente, anche un campo di data / ora. (Questo indirizza la tua domanda specifica.)
  • Abbiamo definito il nostro schema che ha classificato i record per componente di sistema, sottocomponente e persino nome del metodo (tramite reflection e stack trace nei nostri metodi di registrazione).
  • Possiamo interrogare il log secondo schemi specifici usando SQL piuttosto che grepping e concatenando una manciata di file di testo disseminati su 10 server diversi in 100 diverse cartelle.

Dopo aver lavorato con questa configurazione di registrazione per alcuni anni, non sarei disposto a tornare ai file di testo distribuiti, a meno che il sistema su cui stavo lavorando fosse molto piccolo.

    
risposta data 28.01.2015 - 00:27
fonte

Leggi altre domande sui tag