sql >> Databáze >  >> RDS >> PostgreSQL

Monitorování databáze PostgreSQL:Tipy, co monitorovat

Jakmile budete mít svou databázovou infrastrukturu v provozu, budete muset mít přehled o tom, co se děje. Monitorování je nutností, pokud si chcete být jisti, že vše probíhá v pořádku nebo pokud možná budete muset něco změnit.

Pro každou databázovou technologii je třeba sledovat několik věcí. Některé z nich jsou specifické pro databázový stroj nebo dodavatele nebo dokonce konkrétní verzi, kterou používáte.

V tomto blogu se podíváme na to, co potřebujete sledovat v prostředí PostgreSQL.

Co monitorovat v PostgreSQL

Při monitorování databázového klastru nebo uzlu je třeba vzít v úvahu dvě hlavní věci:operační systém a samotnou databázi. Budete muset definovat, které metriky budete sledovat z obou stran a jak to budete dělat. Metriku musíte vždy sledovat v kontextu vašeho systému a měli byste hledat změny ve vzoru chování.

Ve většině případů budete muset použít několik nástrojů (jelikož je téměř nemožné najít takový, který by pokrýval všechny požadované metriky.) 

Mějte na paměti, že když je ovlivněna jedna z vašich metrik, může to ovlivnit i ostatní, takže řešení problému bude složitější. Aby byl tento úkol co nejjednodušší, je důležité mít dobrý monitorovací a výstražný systém.

Monitorování operačního systému

Jedna důležitá věc (která je společná všem databázovým strojům a dokonce všem systémy) je sledovat chování operačního systému. Zde je několik bodů ke kontrole.

Využití CPU

Pokud se nejedná o obvyklé chování, může být problémem nadměrné procento využití procesoru. V tomto případě je důležité identifikovat proces/procesy, které tento problém generují. Pokud je problém v procesu databáze, budete muset zkontrolovat, co se děje uvnitř databáze.

Využití paměti RAM nebo SWAP

Pokud u této metriky vidíte vysokou hodnotu a ve vašem systému se nic nezměnilo, pravděpodobně budete muset zkontrolovat konfiguraci databáze. Parametry jako shared_buffers a work_mem to mohou přímo ovlivnit, protože definují množství paměti, kterou lze použít pro databázi PostgreSQL.

Využití disku

Neobvyklé zvýšení využití místa na disku nebo nadměrná spotřeba přístupu na disk jsou důležité věci, které je třeba sledovat, protože můžete mít vysoký počet chyb zaznamenaných v souboru protokolu PostgreSQL nebo špatnou konfiguraci mezipaměti, která by mohla generovat důležitou spotřebu přístupu na disk namísto použití paměti ke zpracování dotazů.

Průměr načítání

Souvisí to se třemi výše uvedenými body. Vysoké průměrné zatížení může být generováno nadměrným využitím CPU, RAM nebo disku.

Síť

Problém se sítí může ovlivnit všechny systémy, protože aplikace se nemůže připojit (nebo připojit ztracené balíčky) k databázi, takže je to skutečně důležitá metrika ke sledování. Můžete sledovat latenci nebo ztrátu paketů a hlavním problémem může být saturace sítě, problém s hardwarem nebo jen špatná konfigurace sítě.

Monitorování databáze PostgreSQL

Monitorování vaší PostgreSQL databáze není důležité jen proto, abyste zjistili, zda máte problém, ale také abyste věděli, zda potřebujete něco změnit, abyste zlepšili výkon databáze, to je pravděpodobně jeden z nejdůležitějších věci ke sledování v databázi. Podívejme se na některé metriky, které jsou pro to důležité.

Monitorování dotazů

Ve výchozím nastavení je PostgreSQL nakonfigurován s ohledem na kompatibilitu a stabilitu, takže musíte znát své dotazy a jeho vzor a konfigurovat své databáze v závislosti na provozu, který máte. Zde můžete použít příkaz EXPLAIN ke kontrole plánu dotazů pro konkrétní dotaz a také můžete sledovat množství SELECT, INSERT, UPDATE nebo DELETE na každém uzlu. Pokud máte dlouhý dotaz nebo vysoký počet dotazů spuštěných současně, může to být problém pro všechny systémy.

Monitorování aktivních relací

Měli byste také sledovat počet aktivních relací. Pokud se blížíte limitu, musíte zkontrolovat, zda něco není v pořádku, nebo zda jen potřebujete zvýšit hodnotu max_connections. Rozdílem v počtu může být nárůst nebo pokles připojení. Špatné používání sdružování připojení, zamykání nebo problém se sítí jsou nejčastější problémy související s počtem připojení.

Zámky databáze

Pokud máte dotaz čekající na další dotaz, musíte zkontrolovat, zda je tento další dotaz normálním procesem nebo něčím novým. V některých případech, pokud někdo například provádí aktualizaci velkého stolu, může tato akce ovlivnit normální chování vaší databáze a generovat vysoký počet zámků.

Monitorování replikace

Klíčovými metrikami ke sledování replikace jsou zpoždění a stav replikace. Nejběžnějšími problémy jsou problémy se sítí, problémy s hardwarovými prostředky nebo problémy s dimenzováním. Pokud čelíte problému s replikací, budete to muset vědět co nejdříve, protože to budete muset opravit, abyste zajistili prostředí s vysokou dostupností.

Monitorování záloh

Zabránění ztrátě dat je jedním ze základních úkolů DBA, takže nemusíte pouze zálohovat, ale měli byste vědět, zda byla záloha dokončena a zda je použitelná. Obvykle se tento poslední bod nebere v úvahu, ale je to pravděpodobně nejdůležitější kontrola v procesu zálohování.

Monitorování protokolů databáze

Měli byste sledovat protokol databáze, zda neobsahuje chyby, jako je FATAL nebo uváznutí, nebo dokonce běžné chyby, jako jsou problémy s ověřováním nebo dlouhotrvající dotazy. Většina chyb je zapsána v souboru protokolu s podrobnými užitečnými informacemi k jejich opravě.

Vliv monitorování na výkon databáze PostgreSQL

I když je sledování nutností, obvykle není zdarma. Výkon databáze vždy něco stojí v závislosti na tom, jak moc monitorujete, takže byste se měli vyvarovat sledování věcí, které nebudete používat.

Obecně existují dva způsoby monitorování databází, z protokolů nebo ze strany databáze dotazováním.

Abyste je mohli používat, musíte mít vysokou úroveň protokolování, což generuje vysoký přístup k disku a může to ovlivnit výkon vaší databáze.

V režimu dotazování využívá každé připojení k databázi zdroje, takže v závislosti na aktivitě vaší databáze a přiřazených zdrojích může ovlivnit i výkon.

Nástroje pro monitorování PostgreSQL

Existuje několik možností nástrojů pro monitorování databáze. Může to být vestavěný nástroj PostgreSQL, jako jsou rozšíření, nebo nějaký externí nástroj. Podívejme se na některé příklady těchto nástrojů.

Rozšíření

  • Pg_stat_statements :Toto rozšíření vám pomůže zjistit profil dotazů vaší databáze. Sleduje všechny dotazy, které se provádějí, a ukládá mnoho užitečných informací do tabulky nazvané pg_stat_statements. Dotazováním na tuto tabulku můžete mimo jiné zjistit, jaké dotazy jsou v systému spuštěny, kolikrát byly spuštěny a kolik času zabraly.
  • Pgbadger :Je to software, který provádí analýzu protokolů PostgreSQL a zobrazuje je v souboru HTML. Pomůže vám porozumět chování vaší databáze a určit, které dotazy je třeba optimalizovat.
  • Pgstattuple :Může generovat statistiky pro tabulky a indexy, které ukazují, kolik místa využívají jednotlivé tabulky a indexy, spotřebují živé n-tice, odstraněné n-tice nebo kolik nevyužitého místa je k dispozici v každé relaci.
  • Pg_buffercache :Díky tomu můžete v reálném čase kontrolovat, co se děje ve sdílené mezipaměti, a zobrazovat, kolik stránek je aktuálně uloženo v mezipaměti.

Externí monitorovací nástroje

  • ClusterControl :Je to systém pro správu a monitorování, který pomáhá nasazovat, spravovat, monitorovat a škálovat vaše databáze z přátelského rozhraní. ClusterControl má podporu pro špičkové open-source databázové technologie a můžete automatizovat mnoho databázových úloh, které musíte pravidelně provádět, jako je přidávání a škálování nových uzlů, spouštění záloh a obnovy a další.
  • Nagios :Je to open source systém a aplikace pro monitorování sítě. Monitoruje hostitele nebo služby a spravuje výstrahy pro různé stavy. Pomocí tohoto nástroje můžete monitorovat síťové služby, hostitelské zdroje a další. Pro monitorování PostgreSQL můžete použít nějaký plugin nebo si můžete vytvořit vlastní skript pro kontrolu databáze.
  • Zabbix :Je to software, který dokáže monitorovat sítě i servery. Využívá flexibilní oznamovací mechanismus, který uživatelům umožňuje konfigurovat upozornění e-mailem. Nabízí také reporty a vizualizaci dat na základě uložených dat. Všechny reporty a statistiky Zabbix, stejně jako konfigurační parametry, jsou přístupné přes webové rozhraní.

Panely

Viditelnost je užitečná pro rychlé zjištění problémů. Číst výstup příkazu je rozhodně časově náročnější úkol než jen sledovat graf. Použití řídicího panelu by tedy mohlo představovat rozdíl mezi detekcí problému nyní nebo v příštích 15 minutách, přičemž si můžete být jisti, že čas může být pro společnost skutečně důležitý. Pro tento úkol mohou být nástroje jako PMM nebo Vividcortex mimo jiné klíčem ke zvýšení viditelnosti vašeho systému monitorování databáze.

Percona Monitoring and Management (PMM): Je to platforma s otevřeným zdrojovým kódem pro správu a sledování výkonu vaší databáze. Poskytuje důkladnou časovou analýzu pro servery MySQL, MariaDB, MongoDB a PostgreSQL, aby bylo zajištěno, že vaše data budou fungovat co nejefektivněji.

VividCortex: Jedná se o cloudovou platformu, která poskytuje hluboké monitorování výkonu databáze. Nabízí kompletní přehled o předních open source databázích včetně MySQL, PostgreSQL, AWS Aurora, MongoDB a Redis.

Upozornění

Pouhé sledování systému nedává smysl, pokud neobdržíte oznámení o každém problému. Bez výstražného systému byste měli přejít do monitorovacího nástroje, abyste zjistili, zda je vše v pořádku, a je možné, že před mnoha hodinami máte velký problém. Toto upozorňování lze provádět pomocí e-mailových upozornění, textových upozornění nebo jiných integrací nástrojů, jako je slack.

Je opravdu těžké najít nějaké nástroje pro sledování všech nezbytných metrik pro PostgreSQL, obecně budete muset použít více než jeden a dokonce bude potřeba udělat nějaké skriptování. Jedním ze způsobů centralizace úlohy monitorování a upozornění je použití ClusterControl, které vám poskytuje funkce, jako je správa zálohování, monitorování a upozornění, nasazení a škálování, automatické obnovení a další důležité funkce, které vám pomohou spravovat databáze. Všechny tyto funkce na stejném systému.

Monitorování vaší PostgreSQL databáze pomocí ClusterControl

ClusterControl vám umožňuje sledovat vaše servery v reálném čase. Má pro vás předdefinovanou sadu řídicích panelů pro analýzu některých nejběžnějších metrik.

Umožňuje vám přizpůsobit grafy dostupné v clusteru a můžete umožnit monitorování založené na agentech, aby bylo možné generovat podrobnější řídicí panely.

Můžete také vytvářet výstrahy, které vás informují o událostech ve vašem clusteru, nebo integrovat s různými službami, jako je PagerDuty nebo Slack.

Můžete se také podívat do sekce sledování dotazů, kde najdete nejčastější dotazy, běžící dotazy, odlehlé dotazy a statistiky dotazů.

S těmito funkcemi můžete vidět, jak si vaše PostgreSQL databáze vede.

Pro správu záloh je ClusterControl centralizuje, aby chránil, zabezpečoval a obnovoval vaše data a pomocí funkce ověřování zálohování můžete potvrdit, zda je záloha v pořádku.

Tato ověřovací zálohovací úloha obnoví zálohu v samostatném samostatném hostiteli, takže můžete se ujistit, že záloha funguje.

Monitorování pomocí příkazového řádku ClusterControl

Pro skriptování a automatizaci úloh, nebo i když dáváte přednost příkazovému řádku, má ClusterControl nástroj s9s. Je to nástroj příkazového řádku pro správu vašeho databázového clusteru.

Seznam klastrů

Seznam uzlů

Všechny úkoly (a ještě více) můžete provádět z uživatelského rozhraní ClusterControl a můžete tuto funkci integrovat s některými externími nástroji, jako je slack, a spravovat ji odtud.

Závěr

V tomto blogu jsme zmínili některé důležité metriky, které je třeba sledovat ve vašem prostředí PostgreSQL, a některé nástroje, které vám usnadní život tím, že budete mít své systémy pod kontrolou. Můžete se také podívat, jak pro tento úkol použít ClusterControl.

Jak vidíte, monitorování je naprosto nezbytné a nejlepší způsob, jak to provést, závisí na infrastruktuře a samotném systému. Měli byste dosáhnout rovnováhy mezi tím, co potřebujete monitorovat, a tím, jak to ovlivňuje výkon vaší databáze.


  1. Jak porovnat verze softwaru pomocí SQL Server?

  2. Mohu se připojit k serveru SQL pomocí ověřování Windows z webové aplikace Java EE?

  3. MSDTC na serveru „server není k dispozici“

  4. Analytické funkce LEAD a LAG