sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL-databasebewaking:tips om te controleren

Zodra je database-infrastructuur up-and-running is, moet je in de gaten houden wat er gebeurt. Monitoring is een must als je zeker wilt weten dat alles goed gaat of als je iets moet veranderen.

Voor elke databasetechnologie zijn er verschillende dingen om te controleren. Sommige hiervan zijn specifiek voor de database-engine of de leverancier of zelfs de specifieke versie die u gebruikt.

In deze blog bekijken we wat u moet controleren in een PostgreSQL-omgeving.

Wat te controleren in PostgreSQL

Bij het bewaken van een databasecluster of -knooppunt zijn er twee belangrijke zaken waarmee u rekening moet houden:het besturingssysteem en de database zelf. U moet bepalen welke statistieken u van beide kanten gaat controleren en hoe u dit gaat doen. U moet de metriek altijd in de context van uw systeem controleren en u moet zoeken naar wijzigingen in het gedragspatroon.

In de meeste gevallen moet u meerdere tools gebruiken (aangezien het bijna onmogelijk is om er een te vinden die alle gewenste statistieken dekt.) 

Houd er rekening mee dat wanneer een van uw statistieken wordt beïnvloed, dit ook van invloed kan zijn op andere, waardoor het oplossen van het probleem ingewikkelder wordt. Het hebben van een goed monitoring- en waarschuwingssysteem is belangrijk om deze taak zo eenvoudig mogelijk te maken.

Besturingssysteembewaking

Eén belangrijk ding (dat gemeenschappelijk is voor alle database-engines en zelfs voor alle systemen) is om het gedrag van het besturingssysteem te controleren. Hier zijn enkele punten om hier te controleren.

CPU-gebruik

Overmatig percentage CPU-gebruik kan een probleem zijn als dit niet gebruikelijk is. In dit geval is het belangrijk om het proces/de processen te identificeren die dit probleem veroorzaken. Als het probleem het databaseproces is, moet u controleren wat er in de database gebeurt.

RAM-geheugen of SWAP-gebruik

Als u een hoge waarde voor deze statistiek ziet en er is niets veranderd in uw systeem, moet u waarschijnlijk uw databaseconfiguratie controleren. Parameters zoals shared_buffers en work_mem kunnen dit rechtstreeks beïnvloeden, omdat ze de hoeveelheid geheugen definiëren die voor de PostgreSQL-database kan worden gebruikt.

Schijfgebruik

Een abnormale toename van het gebruik van schijfruimte of een buitensporig gebruik van schijftoegang zijn belangrijke dingen om te controleren, aangezien er een groot aantal fouten in het PostgreSQL-logbestand kan worden vastgelegd of een slechte cacheconfiguratie die kan een belangrijk schijftoegangsverbruik genereren in plaats van geheugen te gebruiken om de query's te verwerken.

Gemiddelde laden

Het heeft te maken met de drie bovengenoemde punten. Een hoge gemiddelde belasting kan worden gegenereerd door een overmatig CPU-, RAM- of schijfgebruik.

Netwerk

Een netwerkprobleem kan van invloed zijn op alle systemen, aangezien de applicatie geen verbinding kan maken (of geen verbinding kan maken met verliezende pakketten) met de database, dus dit is inderdaad een belangrijke statistiek om te controleren. U kunt latentie of pakketverlies controleren, en het belangrijkste probleem kan een netwerkverzadiging, een hardwareprobleem of gewoon een slechte netwerkconfiguratie zijn.

PostgreSQL-databasebewaking

Het bewaken van je PostgreSQL-database is niet alleen belangrijk om te zien of je een probleem hebt, maar ook om te weten of je iets moet veranderen om de prestaties van je database te verbeteren, dat is waarschijnlijk een van de belangrijkste dingen om te controleren in een database. Laten we eens kijken naar enkele statistieken die hiervoor belangrijk zijn.

Query-controle

PostgreSQL is standaard geconfigureerd met het oog op compatibiliteit en stabiliteit, dus u moet uw query's en zijn patroon kennen en uw databases configureren afhankelijk van het verkeer dat u heeft. Hier kunt u de opdracht EXPLAIN gebruiken om het queryplan voor een specifieke query te controleren, en u kunt ook het aantal SELECT, INSERT, UPDATE of DELETE's op elk knooppunt controleren. Als u een lange zoekopdracht of een groot aantal zoekopdrachten tegelijkertijd heeft, kan dat een probleem zijn voor alle systemen.

Actieve sessies volgen

Je moet ook het aantal actieve sessies in de gaten houden. Als u de limiet nadert, moet u controleren of er iets mis is of dat u alleen de waarde max_connections moet verhogen. Het verschil in het aantal kan een toename of afname van aansluitingen zijn. Slecht gebruik van pooling van verbindingen, vergrendeling of netwerkproblemen zijn de meest voorkomende problemen met betrekking tot het aantal verbindingen.

Databasevergrendelingen

Als je een vraag hebt die wacht op een andere vraag, moet je controleren of die andere vraag een normaal proces is of iets nieuws. In sommige gevallen, als iemand bijvoorbeeld een update uitvoert op een grote tafel, kan deze actie het normale gedrag van uw database beïnvloeden en een groot aantal vergrendelingen genereren.

Replicatie bewaken

De belangrijkste meetwaarden die moeten worden gecontroleerd op replicatie zijn de vertraging en de replicatiestatus. De meest voorkomende problemen zijn netwerkproblemen, problemen met hardwarebronnen of problemen met de maatvoering. Als u een replicatieprobleem ondervindt, moet u dit zo snel mogelijk weten, aangezien u dit moet oplossen om de omgeving met hoge beschikbaarheid te garanderen.

Back-ups bewaken

Het voorkomen van gegevensverlies is een van de basistaken van DBA, dus u hoeft niet alleen de back-up te maken, u moet ook weten of de back-up is voltooid en of deze bruikbaar is. Meestal wordt met dit laatste geen rekening gehouden, maar het is waarschijnlijk de belangrijkste controle in een back-upproces.

Databaselogboeken bijhouden

Je moet je databaselogboek controleren op fouten zoals FATAL of deadlock, of zelfs op veelvoorkomende fouten zoals authenticatieproblemen of langlopende zoekopdrachten. De meeste fouten worden in het logbestand geschreven met gedetailleerde nuttige informatie om het op te lossen.

Impact van monitoring op PostgreSQL-databaseprestaties

Hoewel monitoring een must is, is het meestal niet gratis. Er zijn altijd kosten verbonden aan de databaseprestaties, afhankelijk van hoeveel u controleert, dus u moet voorkomen dat u dingen controleert die u niet gebruikt.

Over het algemeen zijn er twee manieren om uw databases te controleren, vanuit de logs of vanuit de database door middel van query's.

In het geval van logboeken, om ze te kunnen gebruiken, moet u een hoog logboekniveau hebben, wat hoge schijftoegang genereert en de prestaties van uw database kan beïnvloeden.

Voor de bevragingsmodus gebruikt elke verbinding met de database bronnen, dus afhankelijk van de activiteit van uw database en de toegewezen bronnen, kan dit ook de prestaties beïnvloeden.

PostgreSQL-controletools

Er zijn verschillende tool-opties voor het bewaken van uw database. Het kan een ingebouwde PostgreSQL-tool zijn, zoals extensies, of een externe tool. Laten we enkele voorbeelden van deze tools bekijken.

Extensies

  • Pg_stat_statements :Deze extensie helpt u het zoekprofiel van uw database te kennen. Het houdt alle uitgevoerde query's bij en slaat veel nuttige informatie op in een tabel met de naam pg_stat_statements. Door deze tabel te doorzoeken, kunt u zien welke query's in het systeem worden uitgevoerd, hoe vaak ze zijn uitgevoerd en hoeveel tijd ze hebben verbruikt, naast andere informatie.
  • Pgbadger :Het is software die een analyse uitvoert van PostgreSQL-logboeken en deze weergeeft in een HTML-bestand. Het helpt u het gedrag van uw database te begrijpen en te bepalen welke query's moeten worden geoptimaliseerd.
  • Pgstattuple :Het kan statistieken genereren voor tabellen en indexen, die laten zien hoeveel ruimte wordt gebruikt door elke tabel en index, wordt verbruikt door live tupels, verwijderde tuples of hoeveel ongebruikte ruimte beschikbaar is in elke relatie.
  • Pg_buffercache :Hiermee kunt u in realtime controleren wat er in de gedeelde buffercache gebeurt, en laten zien hoeveel pagina's zich momenteel in de cache bevinden.

Externe controletools

  • ClusterControl :Het is een beheer- en bewakingssysteem dat helpt bij het implementeren, beheren, bewaken en schalen van uw databases vanuit een gebruiksvriendelijke interface. ClusterControl biedt ondersteuning voor de beste open-source databasetechnologieën en u kunt veel van de databasetaken automatiseren die u regelmatig moet uitvoeren, zoals het toevoegen en schalen van nieuwe knooppunten, het uitvoeren van back-ups en herstelbewerkingen, en meer.
  • Nagios :Het is een Open Source-systeem en applicatie voor netwerkbewaking. Het bewaakt hosts of services en beheert waarschuwingen voor verschillende staten. Met deze tool kunt u netwerkservices, hostbronnen en meer bewaken. Voor het monitoren van PostgreSQL kunt u een plug-in gebruiken of u kunt uw eigen script maken om uw database te controleren.
  • Zabbix :Het is software die zowel netwerken als servers kan bewaken. Het maakt gebruik van een flexibel meldingsmechanisme waarmee gebruikers waarschuwingen per e-mail kunnen configureren. Het biedt ook rapporten en datavisualisatie op basis van de opgeslagen gegevens. Alle Zabbix-rapporten en statistieken, evenals configuratieparameters, zijn toegankelijk via een webinterface.

Dashboards

Zichtbaarheid is handig voor snelle probleemdetectie. Het is beslist een meer tijdrovende taak om een ​​opdrachtuitvoer te lezen dan alleen een grafiek te bekijken. Het gebruik van een dashboard kan dus het verschil zijn tussen het detecteren van een probleem nu of in de komende 15 minuten, zeker dat tijd erg belangrijk kan zijn voor het bedrijf. Voor deze taak kunnen onder andere tools zoals PMM of Vividcortex de sleutel zijn om zichtbaarheid aan uw databasebewakingssysteem toe te voegen.

Percona Monitoring en Beheer (PMM): Het is een open-sourceplatform voor het beheren en bewaken van uw databaseprestaties. Het biedt een grondige, op tijd gebaseerde analyse voor MySQL-, MariaDB-, MongoDB- en PostgreSQL-servers om ervoor te zorgen dat uw gegevens zo efficiënt mogelijk werken.

VividCortex: Het is een door de cloud gehost platform dat diepgaande monitoring van de databaseprestaties biedt. Het biedt volledig inzicht in toonaangevende open source-databases, waaronder MySQL, PostgreSQL, AWS Aurora, MongoDB en Redis.

Waarschuwing

Alleen het monitoren van een systeem heeft geen zin als je geen melding over elk probleem ontvangt. Zonder een waarschuwingssysteem zou je naar de monitoringtool moeten gaan om te zien of alles in orde is, en het zou mogelijk kunnen zijn dat je een groot probleem hebt sinds vele uren geleden. Deze waarschuwingstaak kan worden gedaan door e-mailwaarschuwingen, tekstwaarschuwingen of andere toolintegraties zoals speling te gebruiken.

Het is echt moeilijk om enkele tools te vinden om alle benodigde statistieken voor PostgreSQL te controleren, in het algemeen zul je er meer dan één moeten gebruiken en zelfs wat scripting zal moeten worden gemaakt. Een manier om de bewakings- en waarschuwingstaak te centraliseren, is door ClusterControl te gebruiken, dat u functies biedt zoals back-upbeheer, bewaking en waarschuwingen, implementatie en schaling, automatisch herstel en meer belangrijke functies om u te helpen bij het beheren van uw databases. Al deze functies op hetzelfde systeem.

Uw PostgreSQL-database bewaken met ClusterControl

ClusterControl stelt u in staat uw servers in realtime te bewaken. Het heeft een vooraf gedefinieerde set dashboards voor u om enkele van de meest voorkomende statistieken te analyseren.

Hiermee kunt u de beschikbare grafieken in het cluster aanpassen, en u kunt schakel de op agenten gebaseerde monitoring in om meer gedetailleerde dashboards te genereren.

U kunt ook waarschuwingen maken, die u informeren over gebeurtenissen in uw cluster, of integreer met verschillende diensten zoals PagerDuty of Slack.

U kunt ook de sectie Querymonitor bekijken, waar u de topquery's, de lopende query's, uitbijters van query's en de querystatistieken.

Met deze functies kunt u zien hoe uw PostgreSQL-database werkt.

Voor back-upbeheer centraliseert ClusterControl het om uw gegevens te beschermen, beveiligen en herstellen, en met de back-upfunctie voor verificatie kunt u bevestigen of de back-up klaar is voor gebruik.

Deze verificatie-back-uptaak ​​herstelt de back-up in een aparte standalone host, dus u kunt ervoor zorgen dat de back-up werkt.

Bewaken met de ClusterControl-opdrachtregel

Voor het scripten en automatiseren van taken, of zelfs als je gewoon de voorkeur geeft aan de opdrachtregel, heeft ClusterControl de s9s-tool. Het is een opdrachtregelprogramma voor het beheren van uw databasecluster.

Clusterlijst

Knooppuntenlijst

U kunt alle taken (en zelfs meer) uitvoeren vanuit de gebruikersinterface van ClusterControl , en je kunt deze functie integreren met een aantal externe tools zoals speling, om het vanaf daar te beheren.

Conclusie

In deze blog hebben we enkele belangrijke meetwaarden genoemd die u in uw PostgreSQL-omgeving moet controleren, en enkele hulpmiddelen om uw leven gemakkelijker te maken door uw systemen onder controle te hebben. U kunt ook zien hoe u ClusterControl voor deze taak kunt gebruiken.

Zoals je kunt zien, is monitoring absoluut noodzakelijk, en de beste manier om dit te doen hangt af van de infrastructuur en het systeem zelf. U moet een evenwicht vinden tussen wat u moet controleren en hoe dit uw databaseprestaties beïnvloedt.


  1. MySQL haalt ontbrekende ID's uit de tabel

  2. Hoe de identiteitskolomwaarde in de SQL Server-tabel opnieuw in te stellen - SQL Server / T-SQL-zelfstudiedeel 43

  3. UnicodeEncodeError:'latin-1' codec kan geen teken coderen

  4. Verbeter de prestaties van UDF's met NULL ON NULL INPUT