PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Analisi del registro PostgreSQL con pgBadger

A volte i registri sono le ultime cose controllate quando le cose vanno male, ma di solito sono le prime cose che chiedono aiuto quando succede qualcosa. La ricerca manuale dei problemi nei registri aiuta, ma perché non utilizzare gli analizzatori di registro per generare automaticamente rapporti per fornire informazioni dettagliate sul database prima che qualcosa vada storto?

L'analizzatore di log PostgreSQL "pgBadger" è un programma open source "rapporti di analisi dei log PostgreSQL veloci" scritto in Perl che prende l'output del log da un'istanza PostgreSQL in esecuzione e lo elabora in un file HTML. Il report che genera mostra tutte le informazioni trovate in un formato di report piacevole e di facile lettura. Questi report possono aiutare a far luce sugli errori che si verificano nel sistema, sul comportamento del checkpoint, sul comportamento del vuoto, sulle tendenze e su altre informazioni di base ma cruciali per un sistema PostgreSQL.

Impostazione registrazione PostgreSQL

Per utilizzare pgBadger in modo efficace, l'accesso a PostgreSQL dovrebbe essere impostato per fornire a pgBadger quante più informazioni possibili. È possibile modificare una manciata di opzioni per consentire al sistema di database di registrare informazioni utili per pgBadger per generare report utili. La documentazione completa per la configurazione di PostgreSQL può essere trovata nella pagina github di pgBadger, ma di seguito sono riportate alcune informazioni di base.

Quando viene eseguito, pgBadger elaborerà i log da PostgreSQL indipendentemente dal fatto che siano syslog, stderr o csvlog, purché le righe di log stesse abbiano informazioni sufficienti nel prefisso.

Esempio di valori log_line_prefix:

Se log_destination ='syslog'

log_line_prefix = 'user=%u,db=%d,app=%aclient=%h '

Se log_destination ='stderr'

log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '

Impostazioni di configurazione di base da impostare in postgresql.conf:

log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
log_autovacuum_min_duration = 0
log_error_verbosity = default
log_statement = off
lc_messages='C'

Log_min_duration_statement = (see below)

Una delle parti più utili dei report di pgBadger è il report di query lente, che si basa sulle query di registrazione del database che superano il valore log_min_duration_statement. Questo valore è rappresentato in millisecondi e tutte le query che vengono completate con un tempo maggiore di quello verranno registrate e quindi i report generati da pgBadger. Ciò è utile per trovare e analizzare le query che richiedono più tempo del previsto.

Sebbene l'impostazione di questo valore su 0 per registrare tutte le query fornirebbe la maggior parte delle informazioni, ciò può facilmente finire per generare file di registro troppo grandi e influire sulle prestazioni del database stesso a causa della scrittura costante del registro. Un valore più corretto non fornirà conteggi di query perfetti, ma concentrerà comunque i report su query a esecuzione lenta in generale. Se le query che vengono eseguite per un paio di minuti sono considerate "lente", impostare il valore su un minuto andrebbe bene. Se le query in esecuzione per più di pochi secondi sono considerate "lente", anche l'impostazione del valore su qualcosa come 5 secondi funzionerebbe bene.

Generazione registri

La generazione dei registri viene eseguita tramite la riga di comando utilizzando l'eseguibile pgBadger. Esistono numerose opzioni, ma la configurazione più semplice è fornire il prefisso della riga di registro utilizzato dal database, il file di registro e il file html di output.

./pgbadger --prefix '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h ' postgresql.log -o postgresql.html
[========================>] Parsed 560607407 bytes of 560607407 (100.00%), queries: 2929645, events: 5

Per maggiori informazioni sulle diverse opzioni per pgBadger, consulta la documentazione o esegui il file binario con il parametro di input --help.

Generazione avanzata dei registri

Poiché la generazione di report sui log è una semplice esecuzione da riga di comando, è possibile impostare script e programmi personalizzati per generare report automaticamente, predisposti su server Web, inviati tramite posta elettronica o archiviati in un archivio a lungo termine. Esplora le diverse opzioni disponibili per la generazione di rapporti e diventa creativo con i sistemi automatizzati per la generazione e la consegna dei rapporti.

Revisione dei registri

La revisione dei registri è il punto in cui entra in gioco il divertimento. Il rapporto che è stato generato ora può essere aperto in un browser Web e rivisto.

Statistiche globali

La sezione delle statistiche globali contiene alcune informazioni di base trovate nel log di PostgreSQL, tra cui:

  • Query:il numero di query trovate, la durata, il numero di query normalizzate e così via
  • Eventi:numero totale di eventi, eventi normalizzati, ecc.
  • Vuoti:il numero totale di aspirapolvere automatici e analisi automatiche trovati.
  • File temporanei:il numero totale di file temporanei trovati, la dimensione massima e la dimensione media.
  • Sessione:numero totale di sessioni, tempo di punta delle sessioni, durata totale delle sessioni, durata media delle sessioni, query medie trovate per sessione, durata media delle query per sessione.
  • Connessioni:numero totale di connessioni, connessioni di picco e numero totale di database collegati.

Nota: I risultati che coinvolgono query, conteggi di query o durata della query non saranno accurati con valori di log_min_duration_statement maggiori di 0.

Esempio:

pgBadger Esempio di statistiche globali

Connessioni

La pagina delle connessioni mostra dei grafici che descrivono in dettaglio le informazioni sulla connessione trovate nei log. Finché log_connections e log_disconnections sono entrambi attivi, i valori qui saranno accurati. I grafici disponibili sono:

  • Connessioni stabilite:mostra il numero massimo, minimo e medio di connessioni nel tempo.
  • Connessioni per database:un grafico a torta e una vista tabella che mostra il numero di connessioni per ogni database trovato.
  • Connessioni per utente:un grafico a torta e una tabella che mostra il numero di connessioni per ogni utente trovato.
  • Connessioni per host:un grafico a torta e una vista tabella che mostra il numero di connessioni per ogni host di origine trovato.

Esempio:

pgBadger Connections esempio di grafico a torta

Sessioni

La pagina delle sessioni è simile alla pagina delle connessioni, ma contiene alcune informazioni in più relative alle sessioni stesse.

  • Sessioni simultanee:un grafico a linee che mostra il numero di sessioni nel tempo.
  • Istogramma dei tempi delle sessioni:un grafico a barre e una tabella che mostra i tempi delle sessioni.
  • Sessioni per database:un grafico a torta e una vista tabella che mostra il numero di sessioni per ogni database trovato.
  • Sessioni per utente:un grafico a torta e una vista tabella che mostra il numero di sessioni per ogni utente trovato.
  • Sessioni per host:un grafico a torta e una tabella che mostra il numero di sessioni per ogni host di origine trovato.
  • Sessioni per applicazione:il numero di sessioni connesse per applicazione.
pgBadger Sessioni per database grafico a torta

Punti di controllo

La pagina dei checkpoint fornisce informazioni sul processo del checkpoint, incluso il numero di buffer scritti, file WAL e altre informazioni generali.

  • Buffer checkpoint:un grafico a linee che mostra la quantità di buffer scritti dal processo di checkpoint nel tempo.
  • File WAL dei checkpoint:un grafico a linee che mostra il numero di file WAL aggiunti, rimossi o riciclati dal checkpoint nel tempo.
  • Distanza checkpoint:un grafico a linee che mostra la distanza e la stima per i checkpoint.
  • Attività checkpoint:una tabella che mostra i quattro punti dati precedenti sotto forma di tabella.
pgBadger Checkpoints Buffers chartScarica il whitepaper oggi PostgreSQL Management &Automation con ClusterControlScopri cosa devi sapere per distribuire, monitorare , gestisci e ridimensiona PostgreSQLScarica il whitepaper

File temporanei

La pagina dei file temporanei contiene informazioni per i file temporanei, che vengono creati quando una query esaurisce work_mem e deve utilizzare il disco per ordinare o filtrare i risultati prima di restituirli alle applicazioni. Questi file vengono eliminati automaticamente al completamento della query e conoscere l'attività del file temporaneo aiuta l'amministratore a ottimizzare il parametro work_mem.

  • Dimensioni dei file temporanei:un grafico a linee che mostra lo spazio utilizzato dai file temporanei nel tempo.
  • Numero di file temporanei:un grafico a linee che mostra il numero di file temporanei utilizzati nel tempo.
  • Attività sui file temporanei:una tabella che mostra le informazioni fornite nei grafici precedenti ma sotto forma di tabella.
pgBadger Grafico delle dimensioni dei file temporanei

Aspiratori

Questa pagina mostra le informazioni sui VUOTI e le ANALISI che si verificano nel database. Queste informazioni sono utili per sapere se il processo di autovacuum sta facendo abbastanza bene il suo lavoro, o se è impantanato e necessita di più risorse.

  • Distribuzione dei vuoti/analisi:un grafico a linee che mostra i VUOTI e le ANALISI nel tempo, nonché le informazioni sulla tabella che ha consumato la maggior parte della potenza di elaborazione della CPU.
  • Analizza per tabella:un grafico a torta e una tabella che mostrano le tabelle con il maggior numero di analisi, suggerendo che queste tabelle sono in uno stato di forte cambiamento.
  • Vuoti per tabella:un grafico a torta e una tabella che mostrano le tabelle con il maggior numero di vuoti, suggerendo che queste tabelle sono in uno stato di forte cambiamento.
  • Tuple rimosse per tabella:un grafico a torta e una tabella che mostrano il numero di tuple e pagine rimosse nei processi sottovuoto per le tabelle.
  • Pagine rimosse per tabella:un grafico a torta e una tabella che mostrano il numero di pagine e tuple rimosse nei processi sottovuoto per le tabelle.
  • Attività di autovacuum:una tabella che mostra i VUOTI e le ANALISI nel tempo all'ora.
pgBadger Grafico di distribuzione degli aspiratori / analisi

Blocchi

La pagina dei blocchi contiene solo pochi dati, ma è un'informazione utile per sapere quando ci sono processi che potrebbero bloccare altre query per lunghi periodi di tempo.

  • Blocchi per tipo
  • Query in attesa più frequenti:un elenco di query trovate in attesa, classificate dalle più frequenti alle meno frequenti.
  • Le query che hanno atteso di più:un elenco di query e il tempo di attesa, ordinate dalla più lunga alla più breve.
pgBadger Query che hanno atteso il maggior numero di segnalazioni

Query

La pagina Query a volte è la più interessante, poiché mostra informazioni sui tipi di query che provengono dalle applicazioni e dagli utenti. Queste informazioni possono aiutare a capire di più sul tipo di abbandono del database che un'applicazione o un utente inserisce nel sistema di database, il che può aiutare l'ottimizzazione futura. Come prima, l'accuratezza di questi numeri dipende dal valore di log_min_duration_statement, poiché qualsiasi valore superiore a 0 non registrerà le query.

  • Query per tipo:un grafico a torta e una tabella che mostrano il numero di diversi tipi di query, come INSERT, UPDATE, DELETE, SELECT, ecc.
  • Query per database:un grafico a torta e una tabella che mostrano il numero di query trovate per database.
  • Query per applicazione:un grafico a torta e una tabella che mostrano il numero di query trovate per applicazione.
  • Numero di query annullate:informazioni su eventuali query annullate.
pgBadger Query per tipo Grafico a torta

Inizio

La pagina principale contiene informazioni sui tempi delle query, le query più lente in generale, la frequenza delle query e altro ancora. È probabile che specifiche query problematiche si trovino qui:

  • Istogramma dei tempi delle query:un istogramma che rappresenta il numero di query che rientrano in ciascun raggruppamento di tempi.
  • Query individuali più lente:un elenco delle query più lente trovate, ordinate dalla più lunga alla più breve.
  • Query che richiedono tempo:un elenco di query normalizzate e la loro durata totale, ordinate in base al tempo massimo consumato al minimo.
  • Query più frequenti:un elenco di query normalizzate e quante volte sono state eseguite, ordinate dal più al minimo.
  • Query normalizzate più lente:un elenco di query normalizzate e la loro durata media, ordinate dalla più lunga alla più breve.
pgBadger Report sulle query che richiedono tempo

Eventi

La pagina finale è costituita dagli eventi, che contiene informazioni sui log stessi e tutto ciò che non è una query, un vuoto o un checkpoint.

  • Livelli di log:i diversi livelli di log sono visualizzati per riga, come CONTEXT, LOG, STATEMENT, HINTs, WARNINGs e altri.
  • Distribuzione degli eventi:un grafico a linee degli eventi nel tempo per gli eventi PANIC, FATAL, ERROR e WARNING.
  • Errori/Eventi più frequenti:un elenco di EVENTI e la loro frequenza, ordinati dal più comune al meno frequente.
pgBadger Grafico a torta Livelli registro

Contribuisci

Il progetto pgBadger è gratuito ed esiste con la licenza PostgreSQL. Attualmente è ben mantenuto e aggiornato per funzionare con le versioni più recenti di PostgreSQL man mano che viene sviluppato. Hai idee per migliorare pgBadger? Crea un fork del progetto e mostra alla community i tuoi miglioramenti.

Per inviare bug, visita la pagina dei problemi di github.