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

PostgreSQL-loganalyse med pgBadger

Nogle gange er logfiler de sidste ting, der kontrolleres, når ting går galt, men de er normalt de første ting, der skriger på hjælp, når der sker noget. Manuel gennemsøgning af logfilerne for problemer hjælper, men hvorfor ikke bruge loganalysatorer til automatisk at generere rapporter for at give indsigt i databasen, før noget går galt?

PostgreSQL-loganalysatoren "pgBadger" er et open source-program "hurtig PostgreSQL-loganalyserapport" skrevet i Perl, der tager logoutputtet fra en kørende PostgreSQL-instans og behandler det til en HTML-fil. Rapporten den genererer viser al information fundet i et flot og letlæst rapportformat. Disse rapporter kan hjælpe med at kaste lys over fejl, der sker i systemet, kontrolpunkters adfærd, vakuumadfærd, tendenser og andre grundlæggende, men afgørende oplysninger for et PostgreSQL-system.

Opsætning af PostgreSQL-logføring

For at bruge pgBadger effektivt, bør logning i PostgreSQL sættes op for at give pgBadger så meget information som muligt. En håndfuld muligheder kan justeres for at tillade databasesystemet at logge nyttige oplysninger til pgBadger for at generere nyttige rapporter. Fuld dokumentation for PostgreSQL-konfiguration kan findes på pgBadger github-siden, men nogle grundlæggende oplysninger er nedenfor.

Når den køres, vil pgBadger behandle logfilerne fra PostgreSQL, uanset om de er syslog, stderr eller csvlog, så længe loglinjerne selv har nok information i præfikset.

Eksempel på log_line_prefix-værdier:

Hvis log_destination ='syslog'

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

Hvis log_destination ='stderr'

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

Grundlæggende konfigurationsindstillinger til at indstille i 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)

En af de mere nyttige dele af pgBadgers rapporter er den langsomme forespørgselsrapport, som er afhængig af databasens logningsforespørgsler, der overstiger log_min_duration_statement-værdien. Denne værdi er repræsenteret i millisekunder, og enhver forespørgsel, der afsluttes med en længere tid end den, vil blive logget, og derefter rapporter genereret af pgBadger. Dette er nyttigt til at finde og analysere forespørgsler, der tager længere tid end ønsket.

Selvom indstilling af denne værdi til 0 for at logge, ville alle forespørgsler give mest information, hvilket nemt kan ende med at generere logfiler, der er alt for store, og påvirke ydeevnen af ​​selve databasen på grund af konstant logskrivning. En mere fornuftig værdi vil ikke give perfekte forespørgselsoptællinger, men vil stadig fokusere rapporter på langsomt kørende forespørgsler generelt. Hvis forespørgsler, der kører et par minutter, betragtes som 'langsomme', vil det være godt at indstille værdien til et minut. Hvis forespørgsler, der kører i mere end et par sekunder, betragtes som 'langsomme', vil det også fungere godt at indstille værdien til noget i retning af 5 sekunder.

Generering af logfiler

Generering af logfiler sker via kommandolinjen ved hjælp af den eksekverbare pgBadger. Der er et væld af muligheder, men den mest grundlæggende opsætning er at angive loglinjepræfikset, som databasen bruger, logfilen og output-html-filen.

./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

For mere information om de forskellige muligheder for pgBadger, se dokumentationen eller kør det binære med --help input-parameteren.

Avanceret loggenerering

Da generering af rapporter på logfiler er en simpel kommandolinjekørsel, kan brugerdefinerede scripts og programmer konfigureres til automatisk at generere rapporter, iscenesættes på webservere, sendes via e-mail eller arkiveres i langtidslagring. Udforsk de forskellige muligheder for rapportgenerering, og vær kreativ med automatiseringssystemer til rapportgenerering og -levering.

Gennemgang af logfiler

Gennemgang af loggene er, hvor det sjove kommer ind. Rapporten, der blev genereret, kan nu åbnes i en webbrowser og gennemgås.

Global statistik

Den globale statistiksektion indeholder nogle grundlæggende oplysninger, der findes i PostgreSQL-loggen, herunder:

  • Forespørgsler:Antallet af fundne forespørgsler, varighed, antal normaliserede forespørgsler osv.
  • Begivenheder:Samlet antal hændelser, normaliserede hændelser osv.
  • Støvsugere:Det samlede antal fundne autostøvsugere og automatiske analyser.
  • Midlertidige filer:Det samlede antal fundne midlertidige filer, maks. størrelse og gennemsnitlig størrelse.
  • Session:Samlet antal sessioner, spidsbelastningstid, samlet varighed af sessioner, gennemsnitlig varighed af sessioner, gennemsnitlige forespørgsler fundet pr. session, gennemsnitlig forespørgselsvarighed pr. session.
  • Forbindelser:Samlet antal forbindelser, spidsbelastningsforbindelser og samlet antal databaser forbundet til.

Bemærk: Resultater, der involverer forespørgsler, forespørgselsantal eller forespørgselsvarighed, vil være unøjagtige med værdier for log_min_duration_statement større end 0.

Eksempel:

pgBadger Global Stats Eksempel

Forbindelser

Forbindelsessiden viser grafer med detaljerede oplysninger om forbindelsen, der findes i loggene. Så længe log_connections og log_disconnections begge er aktiveret, vil værdierne her være nøjagtige. Tilgængelige diagrammer er:

  • Etablerede forbindelser:Viser maksimum, minimum og gennemsnitligt antal forbindelser over tid.
  • Forbindelser pr. database:Et cirkeldiagram og tabelvisning, der viser antallet af forbindelser for hver fundne database.
  • Forbindelser pr. bruger:Et cirkeldiagram og tabelvisning, der viser antallet af forbindelser for hver fundet bruger.
  • Forbindelser pr. vært:Et cirkeldiagram og tabelvisning, der viser antallet af forbindelser for hver fundet kildevært.

Eksempel:

pgBadger Connections cirkeldiagram eksempel

Sessioner

Sessionssiden ligner tilslutningssiden, men indeholder nogle flere oplysninger vedrørende selve sessionerne.

  • Samtidige sessioner:Et linjediagram, der viser antallet af sessioner over tid.
  • Histogram over sessionstider:Et søjlediagram og tabel, der viser sessionstider.
  • Sessioner pr. database:Et cirkeldiagram og tabelvisning, der viser antallet af sessioner for hver fundne database.
  • Sessioner pr. bruger:Et cirkeldiagram og tabelvisning, der viser antallet af sessioner for hver fundet bruger.
  • Sessioner pr. vært:Et cirkeldiagram og tabelvisning, der viser antallet af sessioner for hver fundet kildevært.
  • Sessioner pr. applikation:Antallet af sessioner, der er forbundet pr. applikation.
pgBadger-sessioner pr. databasecirkeldiagram

Kontrolpunkter

Checkpoints-siden giver information om checkpointer-processen, herunder antallet af skrevne buffere, WAL-filer og andre generelle oplysninger.

  • Checkpoint-buffere:Et linjediagram, der viser mængden af ​​buffere skrevet af checkpoint-processen over tid.
  • Checkpoints WAL-filer:Et linjediagram, der viser antallet af WAL-filer tilføjet, fjernet eller genbrugt af checkpointeren over tid.
  • Checkpoint Distance:Et linjediagram, der viser afstanden og estimat for checkpoints.
  • Tjekpunkters aktivitet:En tabel, der viser de foregående fire datapunkter i tabelform.
pgBadger Checkpoints Buffers chartDownload Whitepaper Today PostgreSQL Management &Automation med ClusterControlFå flere oplysninger om, hvad du har brug for at overvåge for at kunne implementere, overvåge , administrer og skaler PostgreSQLDownload hvidbogen

Midlertidige filer

Siden med midlertidige filer indeholder information om midlertidige filer, som oprettes, når en forespørgsel løber tør for work_mem og skal bruge disken til at sortere eller filtrere resultater, før de returneres til applikationerne. Disse filer slettes automatisk, når forespørgslen er fuldført, og at kende til den midlertidige filaktivitet hjælper administratoren med at indstille work_mem-parameteren.

  • Størrelse af midlertidige filer:Et linjediagram, der viser den plads, der bruges af midlertidige filer over tid.
  • Antal midlertidige filer:Et linjediagram, der viser antallet af midlertidige filer, der er brugt over tid.
  • Midlertidig filaktivitet:En tabel, der viser oplysningerne i de foregående diagrammer, men i tabelform.
pgBadger Størrelse af midlertidige filer diagram

Støvsugere

Denne side viser oplysninger om VAKUUM og ANALYSER, der forekommer i databasen. Disse oplysninger er nyttige for at vide, om autovakuumprocessen gør sit arbejde godt nok, eller om den er kørt fast og har brug for flere ressourcer.

  • Vacuums / Analyses Distribution:Et linjediagram, der viser VACUUMS og ANALYSER over tid, samt oplysninger i tabellen, der forbrugte mest CPU-processorkraft.
  • Analyser pr. tabel:Et cirkeldiagram og en tabel, der viser tabellerne med flest analyser, hvilket tyder på, at disse tabeller er i en høj ændringstilstand.
  • Støvsugere pr. tabel:Et cirkeldiagram og en tabel, der viser tabellerne med flest vakuum, hvilket tyder på, at disse tabeller er i en høj ændringstilstand.
  • Tupler fjernet pr. tabel:Et cirkeldiagram og en tabel, der viser antallet af tupler og sider, der er fjernet i vakuumprocesser for tabeller.
  • Sider fjernet pr. tabel:Et cirkeldiagram og en tabel, der viser antallet af sider og tupler, der er fjernet i vakuumprocesser for tabeller.
  • Autovakuumaktivitet:En tabel, der viser VACUUMS og ANALYSER over tid pr. time.
pgBadger-støvsugere / Analyser distributionsgraf

Låse

Låsesiden indeholder kun nogle få stykker data, men det er nyttig information at vide, når der er processer, der kan holde andre forespørgsler tilbage i længere perioder.

  • Låser efter typer
  • Hyppigste ventende forespørgsler:En liste over forespørgsler, der er fundet ventende, rangeret som hyppigst til mindst.
  • Forespørgsler, der ventede mest:En liste over forespørgsler og hvor længe de ventede, sorteret fra den længste til den korteste.
pgBadger-forespørgsler, der ventede flest rapporter

Forespørgsler

Forespørgselssiden er nogle gange den mest spændende, da den viser information om de typer forespørgsler, der kommer fra applikationerne og brugerne. Disse oplysninger kan hjælpe med at forstå mere af, hvilken slags database-churn en applikation eller bruger lægger på databasesystemet, hvilket kan hjælpe med fremtidig tuning. Som før afhænger nøjagtigheden af ​​disse tal af værdien af ​​log_min_duration_statement, da enhver værdi over 0 ikke vil logge forespørgsler.

  • Forespørgsler efter type:Et cirkeldiagram og en tabel, der viser antallet af forskellige typer forespørgsler, såsom INSERT, UPDATE, DELETE, SELECT osv.
  • Forespørgsler efter database:Et cirkeldiagram og en tabel, der viser antallet af fundne forespørgsler pr. database.
  • Forespørgsler efter applikation:Et cirkeldiagram og en tabel, der viser antallet af fundne forespørgsler pr. applikation.
  • Antal annullerede forespørgsler:Oplysninger om eventuelle forespørgsler, der blev annulleret.
pgBadger-forespørgsler efter type Cirkeldiagram

Top

Den øverste side har oplysninger om forespørgselstider, langsomste forespørgsler generelt, forespørgselsfrekvens og mere. Specifikke problematiske forespørgsler vil sandsynligvis blive fundet her:

  • Histogram over forespørgselstider:Et histogram, der repræsenterer, hvor mange forespørgsler, der falder ind under hver gruppering af tidspunkter.
  • Langsomste individuelle forespørgsler:En liste over de langsomste forespørgsler, der er fundet, sorteret efter længste til korteste.
  • Tidskrævende forespørgsler:En liste over normaliserede forespørgsler og deres samlede varighed, sorteret efter størst tidsforbrug til mindst.
  • Hyppigste forespørgsler:En liste over normaliserede forespørgsler og hvor mange gange de blev udført, sorteret fra flest til mindst.
  • Normaliserede langsomste forespørgsler:En liste over normaliserede forespørgsler og deres gennemsnitlige varighed, sorteret efter længste til korteste.
pgBadger Tidskrævende forespørgselsrapport

Begivenheder

Den sidste side er hændelser, som har information om selve logfilerne og alt, hvad der ikke er en forespørgsel, vakuum eller kontrolpunkt.

  • Logniveauer:De forskellige niveauer af logfiler blev vist efter linje, f.eks. KONTEKST, LOG, STATEMENT, TIP, ADVARSLER og andre.
  • Hændelsesfordeling:En linjegraf over hændelser over tid for PANIK-, FATAL-, FEJL- og ADVARSEL-hændelser.
  • Hyppigste fejl/hændelser:En liste over BEGIVENHEDER og deres hyppighed, sorteret fra mest almindelige til mindste.
pgBadger Log Levels cirkeldiagram

Bidrag

pgBadger-projektet er gratis og eksisterer under PostgreSQL-licensen. Det er i øjeblikket godt vedligeholdt og opdateret til at fungere med nyere versioner af PostgreSQL, efterhånden som det udvikles. Har du ideer til at forbedre pgBadger? Forkast projektet og vis fællesskabet dine forbedringer.

Besøg siden med problemer med github for at indsende fejl.


  1. Sådan rettes "Ugyldigt objektnavn 'OPENJSON'." i SQL Server

  2. Asynkrone opgaver med Django og selleri

  3. Sammenligning af Percona XtraBackup med MySQL Enterprise Backup:Part One

  4. MySQL Hvordan INSERT I en tabel med en SELECT underforespørgsel, der returnerer flere rækker?