sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL-logganalys med pgBadger

Ibland är loggar de sista sakerna som kontrolleras när saker går fel, men de är oftast de första sakerna som skriker på hjälp när något händer. Att manuellt leta igenom loggarna efter problem hjälper, men varför inte använda logganalysatorer för att automatiskt generera rapporter för att ge insikt i databasen innan något går fel?

PostgreSQL-logganalysatorn "pgBadger" är ett "snabb PostgreSQL-logganalysrapport"-program med öppen källkod skrivet i Perl som tar loggutdata från en pågående PostgreSQL-instans och bearbetar den till en HTML-fil. Rapporten den genererar visar all information som finns i ett trevligt och lättläst rapportformat. Dessa rapporter kan hjälpa till att belysa fel som händer i systemet, kontrollpunkters beteende, vakuumbeteende, trender och annan grundläggande men avgörande information för ett PostgreSQL-system.

PostgreSQL-loggningsinställningar

För att använda pgBadger effektivt, bör inloggning i PostgreSQL ställas in för att ge pgBadger så mycket information som möjligt. En handfull alternativ kan justeras för att tillåta databassystemet att logga användbar information för pgBadger för att generera användbara rapporter. Fullständig dokumentation för PostgreSQL-konfiguration finns på pgBadger github-sidan, men lite grundläggande information finns nedan.

När pgBadger körs kommer pgBadger att bearbeta loggarna från PostgreSQL oavsett om de är syslog, stderr eller csvlog, så länge som själva loggraderna har tillräckligt med information i prefixet.

Exempel på log_line_prefix-värden:

Om log_destination ='syslog'

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

Om log_destination ='stderr'

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

Grundläggande konfigurationsinställningar att ställa in 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 av de mer användbara delarna av pgBadgers rapporter är den långsamma frågerapporten, som förlitar sig på databasens loggningsfrågor som överskrider värdet log_min_duration_statement. Detta värde representeras i millisekunder, och alla frågor som slutförs med en längre tid än det kommer att loggas, och sedan rapporter som genereras av pgBadger. Detta är användbart för att hitta och analysera frågor som tar längre tid än önskat.

Även om inställningen av detta värde till 0 för att logga alla frågor skulle ge mest information, som lätt kan skapa loggfiler som är alldeles för stora och påverka själva databasens prestanda på grund av konstant loggskrivning. Ett mer förnuftigt värde ger inte perfekta frågeräkningar, men fokuserar fortfarande rapporter på långsamma sökfrågor i allmänhet. Om frågor som körs ett par minuter anses vara "långsamma", skulle det vara bra att ställa in värdet på en minut. Om frågor som körs i mer än några sekunder anses vara "långsamma", skulle det också fungera bra att ställa in värdet på ungefär 5 sekunder.

Generera loggar

Generering av loggar görs via kommandoraden med den körbara filen pgBadger. Det finns en mängd alternativ, men den mest grundläggande inställningen är att tillhandahålla logglinjeprefixet som databasen använder, loggfilen och utdata-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

För mer information om de olika alternativen för pgBadger, se dokumentationen eller exekvera binären med indataparametern --help.

Avancerad logggenerering

Eftersom generering av rapporter på loggar är en enkel kommandoradskörning, kan anpassade skript och program ställas in för att generera rapporter automatiskt, iscensatta på webbservrar, e-postas eller arkiveras i långtidslagring. Utforska de olika alternativen för rapportgenerering och bli kreativ med automatiseringssystem för rapportgenerering och leverans.

Granska loggar

Att granska loggarna är där det roliga kommer in. Rapporten som skapades kan nu öppnas i en webbläsare och granskas.

Global statistik

Den globala statistiksektionen innehåller en del grundläggande information som finns i PostgreSQL-loggen, inklusive:

  • Frågor:Antalet sökfrågor som hittades, varaktighet, antal normaliserade frågor osv.
  • Händelser:Totalt antal händelser, normaliserade händelser, etc.
  • Dammsugare:Det totala antalet autodammsugare och automatiska analyser som hittades.
  • Tillfälliga filer:Det totala antalet temporära filer som hittades, maxstorlek och genomsnittlig storlek.
  • Session:Totalt antal sessioner, toppsessionstid, total längd på sessioner, genomsnittlig längd på sessioner, genomsnittliga sökfrågor per session, genomsnittlig längd på sökfrågor per session.
  • Anslutningar:Totalt antal anslutningar, toppanslutningar och totalt antal databaser anslutna till.

Obs! Resultat som involverar frågor, antal frågeräkningar eller frågelängd kommer att vara felaktiga med värden på log_min_duration_statement större än 0.

Exempel:

pgBadger Global Stats Exempel

Anslutningar

Anslutningssidan visar grafer som visar anslutningsinformationen som finns i loggarna. Så länge log_connections och log_disconnections båda är på, kommer värdena här att vara korrekta. Tillgängliga diagram är:

  • Etablerade anslutningar:Visar högsta, lägsta och genomsnittliga antal anslutningar över tiden.
  • Anslutningar per databas:Ett cirkeldiagram och en tabellvy som visar antalet anslutningar för varje hittad databas.
  • Anslutningar per användare:Ett cirkeldiagram och en tabellvy som visar antalet anslutningar för varje hittad användare.
  • Anslutningar per värd:Ett cirkeldiagram och en tabellvy som visar antalet anslutningar för varje hittad källvärd.

Exempel:

pgBadger Connections cirkeldiagram exempel

Sessioner

Sessionssidan liknar anslutningssidan, men innehåller lite mer information om själva sessionerna.

  • Samtidiga sessioner:Ett linjediagram som visar antalet sessioner över tiden.
  • Histogram över sessionstider:Ett stapeldiagram och en tabell som visar sessionstider.
  • Sessioner per databas:Ett cirkeldiagram och tabellvy som visar antalet sessioner för varje hittad databas.
  • Sessioner per användare:Ett cirkeldiagram och en tabellvy som visar antalet sessioner för varje hittad användare.
  • Sessioner per värd:Ett cirkeldiagram och en tabellvy som visar antalet sessioner för varje hittad källvärd.
  • Sessioner per applikation:Antalet anslutna sessioner per applikation.
pgBadger-sessioner per databascirkeldiagram

Kontrollpunkter

Checkpoints-sidan ger information om checkpointerprocessen, inklusive antalet skrivna buffertar, WAL-filer och annan allmän information.

  • Kontrollpunktsbuffertar:Ett linjediagram som visar mängden buffertar skrivna av kontrollpunktsprocessen över tid.
  • Checkpoints WAL-filer:Ett linjediagram som visar antalet WAL-filer som lagts till, tagits bort eller återvunnits av checkpointern över tiden.
  • Kontrollpunktsavstånd:Ett linjediagram som visar avstånd och uppskattning för kontrollpunkter.
  • Kontrollpunktersaktivitet:En tabell som visar de fyra föregående datapunkterna i tabellform.
pgBadger Checkpoints Buffers chart Ladda ner Whitepaper Today PostgreSQL Management &Automation med ClusterControlLär dig om vad du behöver veta för att distribuera, övervaka, övervaka , hantera och skala PostgreSQLDladda Whitepaper

Templariska filer

Sidan för temporära filer innehåller information för temporära filer, som skapas när en fråga tar slut på work_mem och måste använda disken för att sortera eller filtrera resultat innan de returneras till applikationerna. Dessa filer raderas automatiskt när frågan är klar, och att känna till den tillfälliga filaktiviteten hjälper administratören att justera parametern work_mem.

  • Storlek på temporära filer:Ett linjediagram som visar utrymmet som används av temporära filer över tiden.
  • Antal temporära filer:Ett linjediagram som visar antalet temporära filer som används över tiden.
  • Temporary File Activity:En tabell som visar informationen i föregående diagram men i tabellform.
pgBadger Diagrammet för temporära filers storlek

dammsugare

Den här sidan visar information om VAKUUM och ANALYSER som förekommer i databasen. Den här informationen är användbar för att veta om autovakuumprocessen gör sitt jobb tillräckligt bra, eller om den har fastnat och behöver mer resurser.

  • Vacuums / Analyses Distribution:Ett linjediagram som visar VACUUMS och ANALYSER över tid, samt information i tabellen som förbrukade mest CPU-processorkraft.
  • Analyser per tabell:Ett cirkeldiagram och en tabell som visar tabellerna med flest analyser, vilket tyder på att dessa tabeller är i ett högt tillstånd av förändring.
  • Vakuum per tabell:Ett cirkeldiagram och en tabell som visar tabellerna med flest vakuum, vilket tyder på att dessa tabeller är i ett högt tillstånd av förändring.
  • Tuplar borttagna per tabell:Ett cirkeldiagram och en tabell som visar antalet tuplar och sidor som tagits bort i vakuumprocesser för tabeller.
  • Sidor borttagna per tabell:Ett cirkeldiagram och en tabell som visar antalet sidor och tuplar som tagits bort i vakuumprocesser för tabeller.
  • Autovakuumaktivitet:En tabell som visar VAKUUM och ANALYSER över tid per timme.
pgBadger-dammsugare / Analyser distributionsdiagram

Lås

Låssidan innehåller bara några få bitar av data, men det är användbar information att veta när det finns processer som kan hålla uppe andra frågor under längre perioder.

  • Lås efter typer
  • De vanligaste väntande frågorna:En lista över frågor som befunnits vänta, rankad som vanligast till minst.
  • Frågor som väntade mest:En lista över frågor och hur länge de väntade, sorterade från längst till kortast.
pgBadger-frågor som väntade mest rapportering

Frågor

Sidan Frågor är ibland den mest spännande, eftersom den visar information om vilka typer av frågor som kommer från applikationerna och användarna. Denna information kan hjälpa till att förstå mer av vilken typ av databaschurn en applikation eller användare lägger på databassystemet, vilket kan hjälpa till med framtida inställning. Precis som tidigare beror noggrannheten hos dessa siffror på värdet av log_min_duration_statement, eftersom alla värden över 0 inte loggar frågor.

  • Frågor efter typ:Ett cirkeldiagram och en tabell som visar antalet olika typer av frågor, som INSERT, UPDATE, DELETE, SELECT, etc.
  • Frågor per databas:Ett cirkeldiagram och en tabell som visar antalet sökfrågor per databas.
  • Frågor per applikation:Ett cirkeldiagram och en tabell som visar antalet sökfrågor per applikation.
  • Antal avbrutna frågor:Information om eventuella frågor som avbröts.
pgBadger-frågor efter typ Cirkeldiagram

Överst

Den översta sidan har information om frågetider, långsammaste frågor totalt sett, frågefrekvens och mer. Specifika problematiska frågor kommer sannolikt att hittas här:

  • Histogram över frågetider:Ett histogram som representerar hur många frågor som ingår i varje grupp av tidpunkter.
  • Långsammaste individuella frågor:En lista över de långsammaste sökfrågorna som hittats, sorterade efter längsta till kortaste.
  • Tidskrävande frågor:En lista över normaliserade frågor och deras totala varaktighet, sorterade efter största tid som konsumeras till minst.
  • De vanligaste frågorna:En lista över normaliserade frågor och hur många gånger de kördes, sorterade från mest till minst.
  • Normaliserade långsammaste frågor:En lista över normaliserade frågor och deras genomsnittliga varaktighet, sorterade efter längsta till kortaste.
pgBadger Tidskrävande frågerapport

Händelser

Den sista sidan är händelser, som har information om själva loggarna och allt som inte är en fråga, vakuum eller kontrollpunkt.

  • Loggnivåer:De olika nivåerna av loggar visas per rad, som KONTEXT, LOGG, STATEMENT, TIPS, VARNINGAR och andra.
  • Händelsefördelning:Ett linjediagram över händelser över tid för händelser PANIC, FATAL, ERROR och WARNING.
  • Mest frekventa fel/händelser:En lista över HÄNDELSER och deras frekvens, sorterade från vanligaste till minsta.
pgBadger Log Levels cirkeldiagram

Bidra

pgBadger-projektet är gratis och finns under PostgreSQL-licensen. Den är för närvarande väl underhållen och uppdaterad för att fungera med nyare versioner av PostgreSQL när den utvecklas. Har du idéer för att förbättra pgBadger? Fördela projektet och visa samhället dina förbättringar.

För att skicka in buggar, besök sidan för github-problem.


  1. Oracle:Vad gör `(+)` i en WHERE-sats?

  2. Det renaste sättet att bygga en SQL-sträng i Java

  3. Skapa eller simulera tvådimensionella arrayer i PL/SQL

  4. MySQL - Betydelse av PRIMÄRNYCKEL, UNIK NYCKEL och NYCKEL när de används tillsammans när du skapar en tabell