Når du har din databaseinfrastruktur oppe og køre, bliver du nødt til at holde styr på, hvad der sker. Overvågning er et must, hvis du vil være sikker på, at alt går fint, eller hvis du måske skal ændre noget.
For hver databaseteknologi er der flere ting at overvåge. Nogle af disse er specifikke for databasemotoren eller leverandøren eller endda den specifikke version, du bruger.
I denne blog tager vi et kig på, hvad du har brug for at overvåge i et PostgreSQL-miljø.
Hvad skal overvåges i PostgreSQL
Når du overvåger en databaseklynge eller node, er der to hovedting at tage hensyn til:operativsystemet og selve databasen. Du bliver nødt til at definere, hvilke målinger du vil overvåge fra begge sider, og hvordan du vil gøre det. Du skal altid overvåge metrikken i sammenhæng med dit system, og du bør se efter ændringer i adfærdsmønsteret.
I de fleste tilfælde skal du bruge flere værktøjer (da det er næsten umuligt at finde et, der dækker alle de ønskede målinger).
Husk, at når en af dine metrics påvirkes, kan den også påvirke andre, hvilket gør fejlfinding af problemet mere kompleks. At have et godt overvågnings- og alarmeringssystem er vigtigt for at gøre denne opgave så enkel som muligt.
Overvågning af operativsystemet
En vigtig ting (som er fælles for alle databasemotorer og endda for alle systems) er at overvåge operativsystemets adfærd. Her er nogle punkter at tjekke her.
CPU-brug
For høj procentdel af CPU-brug kan være et problem, hvis det ikke er normal adfærd. I dette tilfælde er det vigtigt at identificere den proces/processer, der genererer dette problem. Hvis problemet er databaseprocessen, skal du kontrollere, hvad der sker inde i databasen.
RAM-hukommelse eller SWAP-brug
Hvis du ser en høj værdi for denne metrik, og intet er ændret i dit system, skal du sandsynligvis tjekke din databasekonfiguration. Parametre som shared_buffers og work_mem kan påvirke dette direkte, da de definerer mængden af hukommelse, der skal kunne bruges til PostgreSQL-databasen.
Diskbrug
En unormal stigning i brugen af diskplads eller et for stort forbrug af diskadgang er vigtige ting at overvåge, da du kan have et stort antal fejl logget i PostgreSQL-logfilen eller en dårlig cache-konfiguration, der kan generere et vigtigt diskadgangsforbrug i stedet for at bruge hukommelse til at behandle forespørgslerne.
Indlæsningsgennemsnit
Det er relateret til de tre punkter nævnt ovenfor. Et højt belastningsgennemsnit kan genereres af en overdreven CPU, RAM eller diskbrug.
Netværk
Et netværksproblem kan påvirke alle systemerne, da applikationen ikke kan oprette forbindelse (eller forbinde tabende pakker) til databasen, så dette er en vigtig metrik at overvåge. Du kan overvåge latens eller pakketab, og hovedproblemet kan være en netværksmætning, et hardwareproblem eller bare en dårlig netværkskonfiguration.
PostgreSQL-databaseovervågning
Overvågning af din PostgreSQL-database er ikke kun vigtigt for at se, om du har et problem, men også for at vide, om du skal ændre noget for at forbedre din databaseydeevne, det er nok en af de vigtigste ting at overvåge i en database. Lad os se nogle målinger, der er vigtige for dette.
Forespørgselsovervågning
Som standard er PostgreSQL konfigureret med kompatibilitet og stabilitet i tankerne, så du skal kende dine forespørgsler og hans mønster og konfigurere dine databaser afhængigt af den trafik, du har. Her kan du bruge EXPLAIN-kommandoen til at kontrollere forespørgselsplanen for en specifik forespørgsel, og du kan også overvåge mængden af SELECT, INSERT, UPDATE eller DELETEs på hver node. Hvis du har en lang forespørgsel eller et stort antal forespørgsler, der kører på samme tid, kan det være et problem for alle systemerne.
Overvågning af aktive sessioner
Du bør også overvåge antallet af aktive sessioner. Hvis du er tæt på grænsen, skal du tjekke, om der er noget galt, eller om du blot skal øge max_connections-værdien. Forskellen i antallet kan være en stigning eller et fald af forbindelser. Dårlig brug af forbindelsespooling, låsning eller netværksproblemer er de mest almindelige problemer relateret til antallet af forbindelser.
Databaselåse
Hvis du har en forespørgsel, der venter på en anden forespørgsel, skal du kontrollere, om den anden forespørgsel er en normal proces eller noget nyt. I nogle tilfælde, hvis nogen for eksempel laver en opdatering på et stort bord, kan denne handling påvirke din databases normale adfærd og generere et stort antal låse.
Overvågning af replikering
Nøglemålingerne, der skal overvåges for replikering, er forsinkelsen og replikeringstilstanden. De mest almindelige problemer er netværksproblemer, hardwareressourceproblemer eller problemer med underdimensionering. Hvis du står over for et replikeringsproblem, skal du vide dette hurtigst muligt, da du skal rette det for at sikre et miljø med høj tilgængelighed.
Overvågning af sikkerhedskopier
At undgå tab af data er en af de grundlæggende DBA-opgaver, så du behøver ikke kun at tage sikkerhedskopien, du skal vide, om sikkerhedskopieringen er gennemført, og om den er brugbar. Normalt tages der ikke højde for dette sidste punkt, men det er nok den vigtigste kontrol i en backupproces.
Overvågning af databaselogfiler
Du bør overvåge din databaselog for fejl som FATAL eller deadlock, eller endda for almindelige fejl som autentificeringsproblemer eller langvarige forespørgsler. De fleste af fejlene er skrevet i logfilen med detaljerede nyttige oplysninger til at rette det.
Overvågningens indvirkning på PostgreSQL-databaseydelsen
Selvom overvågning er et must, er det normalt ikke gratis. Der er altid en omkostning på databasens ydeevne, afhængigt af hvor meget du overvåger, så du bør undgå at overvåge ting, som du ikke vil bruge.
Generelt er der to måder at overvåge dine databaser på, fra logfilerne eller fra databasesiden ved at forespørge.
I tilfælde af logs, for at kunne bruge dem, skal du have et højt logningsniveau, hvilket genererer høj diskadgang, og det kan påvirke ydeevnen af din database.
For forespørgselstilstanden bruger hver forbindelse til databasen ressourcer, så afhængigt af din databases aktivitet og de tildelte ressourcer kan det også påvirke ydeevnen.
PostgreSQL-overvågningsværktøjer
Der er flere værktøjsmuligheder til at overvåge din database. Det kan være et indbygget PostgreSQL-værktøj, såsom udvidelser, eller et eksternt værktøj. Lad os se nogle eksempler på disse værktøjer.
Udvidelser
- Pg_stat_statements :Denne udvidelse hjælper dig med at kende din databases forespørgselsprofil. Den sporer alle de forespørgsler, der udføres, og gemmer en masse nyttig information i en tabel kaldet pg_stat_statements. Ved at forespørge i denne tabel kan du blandt andet få vist, hvilke forespørgsler der køres i systemet, hvor mange gange de har kørt, og hvor meget tid de har brugt.
- Pgbadger :Det er en software, der udfører en analyse af PostgreSQL-logfiler og viser dem i en HTML-fil. Det hjælper dig med at forstå din databases adfærd og identificere, hvilke forespørgsler der skal optimeres.
- Pgstattuple :Den kan generere statistik for tabeller og indekser, der viser hvor meget plads, der bruges af hver tabel og indeks, der forbruges af live-tupler, slettede tupler eller hvor meget ubrugt plads, der er tilgængelig i hver relation.
- Pg_buffercache :Med dette kan du kontrollere, hvad der sker i den delte buffer-cache i realtid, og vise, hvor mange sider der i øjeblikket opbevares i cachen.
Eksterne overvågningsværktøjer
- ClusterControl :Det er et administrations- og overvågningssystem, der hjælper med at implementere, administrere, overvåge og skalere dine databaser fra en venlig grænseflade. ClusterControl har understøttelse af de bedste open source-databaseteknologier, og du kan automatisere mange af de databaseopgaver, du skal udføre regelmæssigt, såsom tilføjelse og skalering af nye noder, kørsel af sikkerhedskopier og gendannelser og mere.
- Nagios :Det er et Open Source-system og netværksovervågningsapplikation. Det overvåger værter eller tjenester og administrerer advarsler for forskellige stater. Med dette værktøj kan du overvåge netværkstjenester, værtsressourcer og mere. Til overvågning af PostgreSQL kan du bruge et eller andet plugin, eller du kan oprette dit eget script for at tjekke din database.
- Zabbix :Det er en software, der kan overvåge både netværk og servere. Den bruger en fleksibel notifikationsmekanisme, der giver brugerne mulighed for at konfigurere advarsler via e-mail. Det tilbyder også rapporter og datavisualisering baseret på de lagrede data. Alle Zabbix-rapporter og -statistikker samt konfigurationsparametre tilgås via en webgrænseflade.
Dashboards
Synlighed er nyttig til hurtig registrering af problemer. Det er bestemt en mere tidskrævende opgave at læse en kommandoudgang end blot at se en graf. Så brugen af et dashboard kan være forskellen mellem at opdage et problem nu eller inden for de næste 15 minutter, mest sikker på, at tiden kan være virkelig vigtig for virksomheden. Til denne opgave kan værktøjer som PMM eller Vividcortex, blandt andre, være nøglen til at tilføje synlighed til dit databaseovervågningssystem.
Percona Monitoring and Management (PMM): Det er en open source-platform til styring og overvågning af din databaseydeevne. Det giver en grundig tidsbaseret analyse for MySQL-, MariaDB-, MongoDB- og PostgreSQL-servere for at sikre, at dine data fungerer så effektivt som muligt.
VividCortex: Det er en cloud-hostet platform, der giver dyb overvågning af databasens ydeevne. Det giver komplet synlighed i førende open source-databaser, herunder MySQL, PostgreSQL, AWS Aurora, MongoDB og Redis.
Alarm
Bare overvågning af et system giver ikke mening, hvis du ikke modtager en meddelelse om hvert problem. Uden et advarselssystem bør du gå til overvågningsværktøjet for at se, om alt er i orden, og det kan være muligt, at du har et stort problem siden mange timer siden. Dette advarselsjob kunne udføres ved at bruge e-mail-beskeder, tekstbeskeder eller andre værktøjsintegrationer som slack.
Det er virkelig svært at finde nogle værktøjer til at overvåge alle de nødvendige metrics for PostgreSQL, generelt skal du bruge mere end én og endda nogle scripting skal laves. En måde at centralisere overvågnings- og advarselsopgaven på er ved at bruge ClusterControl, som giver dig funktioner som sikkerhedskopiering, overvågning og alarmering, implementering og skalering, automatisk gendannelse og flere vigtige funktioner til at hjælpe dig med at administrere dine databaser. Alle disse funktioner på det samme system.
Overvågning af din PostgreSQL-database med ClusterControl
ClusterControl giver dig mulighed for at overvåge dine servere i realtid. Den har et foruddefineret sæt dashboards til dig, til at analysere nogle af de mest almindelige metrics.
Det giver dig mulighed for at tilpasse de grafer, der er tilgængelige i klyngen, og du kan aktivere den agentbaserede overvågning for at generere mere detaljerede dashboards.
Du kan også oprette advarsler, som informerer dig om begivenheder i din klynge, eller integrere med forskellige tjenester såsom PagerDuty eller Slack.
Du kan også tjekke sektionen for forespørgselsovervågning, hvor du kan finde topforespørgsler, de kørende forespørgsler, forespørgslers outliers og forespørgselsstatistikken.
Med disse funktioner kan du se, hvordan det går med din PostgreSQL-database.
Til sikkerhedskopieringsstyring centraliserer ClusterControl det for at beskytte, sikre og gendanne dine data, og med bekræftelsessikkerhedskopieringsfunktionen kan du bekræfte, om sikkerhedskopieringen er god til at gå.
Dette bekræftelsessikkerhedskopiopgave vil gendanne sikkerhedskopien i en separat selvstændig vært, så du kan sikre dig, at sikkerhedskopieringen virker.
Overvågning med ClusterControl-kommandolinjen
Til scripting og automatisering af opgaver, eller selvom du bare foretrækker kommandolinjen, har ClusterControl værktøjet s9s. Det er et kommandolinjeværktøj til at administrere din databaseklynge.
Klyngeliste
Nodeliste
Du kan udføre alle opgaverne (og endnu flere) fra ClusterControl UI , og du kan integrere denne funktion med nogle eksterne værktøjer som slack for at styre den derfra.
Konklusion
I denne blog nævnte vi nogle vigtige metrics til at overvåge i dit PostgreSQL-miljø og nogle værktøjer til at gøre dit liv lettere ved at have dine systemer under kontrol. Du kan også se, hvordan du bruger ClusterControl til denne opgave.
Som du kan se, er overvågning absolut nødvendig, og den bedste måde at gøre det på afhænger af infrastrukturen og selve systemet. Du bør nå en balance mellem, hvad du skal overvåge, og hvordan det påvirker din databaseydelse.