Övervakning av PostgreSQL med Zabbix

Övervakning av PostgreSQL med Zabbix
Rapport av Daria Vilkova för Zabbix Meetup Online

Jag vill presentera dig för PostgreSQL och övervakningsverktyget för operativsystem, som utvecklas av vårt företag med hjälp av Zabbix.

Vi har valt Zabbix som vårt övervakningsverktyg under lång tid eftersom det är en öppen källkodsplattform som stöds av en aktiv community som är mycket populär i Ryssland.

Vi skapade en aktiv agent - Mamonsu, som tillhandahöll mer flexibel övervakning än vad standardverktyg vid den tiden tillät, och säkerställde insamlingen av mätvärden och sändningen av dem till Zabbix Server. I vårt företag används Mamonsu vid revisionen.

Mamonsu

Mamonsu är en aktiv agent (Zabbix Trapper) för övervakning av PostgreSQL och operativsystemet. Mamonsu (skriven i Python) låter dig konfigurera PostgreSQL och övervakningsinställningar för operativsystem på fem minuter.

Mamonsu har ytterligare verktyg:

  • mamonsu tune är ett kommando som redigerar inställningarna i PostgreSQL-konfigurationsfilen för maskinen som Mamonsu-agenten är installerad på.
  • mamonsu report är ett kommando som genererar svar om operativsystemet och PostgreSQL.

Mamonsu installeras på DBMS-servern, samlar in information, komponerar den till JSON, som skickar den till Zabbix Server för visualisering, där det ska finnas en mall för dess mätvärden.

Övervakning av PostgreSQL med Zabbix

Mamonsu operationsschema

Mamonsu funktioner

  • Effektivt arbete med PostgreSQL. En ihållande anslutning till PostgreSQL är den största fördelen med Mamonsu. I det här fallet är det maximala antalet anslutningar lika med det maximala antalet databaser som den ansluter till.
  • Expanderbarhet. Mamonsu är en helt "plugin"-agent, och på grund av den fasta strukturen för varje plugin och den relativa enkelheten hos Python, kan man enkelt lära sig hur man skriver nya eller redigerar standardplugins, d.v.s. parametrar för metrikinsamling.
  • Bred täckning av övervakningsmått för PotgreSQL inklusive tilläggsspecifika mätvärden.
  • Snabbstart, tillgänglighet ur lådan.
  • Ladda upp mallar och konfigurationsfiler, samt uppladdning till Zabbix Server.
  • Tvärplattform, vilket är viktigt för våra kunder som använder olika Linux-distributioner, inklusive inhemska.
  • BSD-klausul licens.

För tillfället erbjuder vi många plugins och i varje nästa version försöker vi lägga till något nytt.

  • 14 plugins för PostgreSQL,
  • 8 plugins för OS Linux,
  • 4 plugins för OS Windows.

Mamonsu samlar in mer än 110 PostgreSQL- och operativsystemstatistik:

  • 70 PostgreSQL-mått,
  • 40 OS Linux-mått,
  • 8 OS Windows-statistik.

Nyckelmått inkluderar DBMS-tillgänglighet, antal anslutningar, databasstorlek, kontrollpunkter, läs-/skrivhastighet, lås, antal autovakuumprocesser och WAL-genereringshastighet. En komplett lista över tillgängliga mätvärden, samt en detaljerad beskrivning av alla verktyg, finns i förråd på GitHub-webbplatsen.

Övervakning av PostgreSQL med Zabbix

Lista över tillgängliga mätvärden på GitHub

Starta Mamonsu om 5 minuter

Du kan ställa in PostgreSQL och övervakning av operativsystem med Mamonsu på 5 minuter genom att följa 5 enkla steg.

  1. Installerar Mamonsu. Mamonsu kan byggas från källkod eller använda tillgängliga paket.

$ git clone ... && cd mamonsu && python setup.py

build && python setup.py install

  1. Konfigurera anslutningar. Det är nödvändigt att ange anslutningsparametrar för PostgreSQL och Zabbix Server i filen agent.conf.

/etc/mamonsu/agent.conf

  1. Exportera en mall till Zabbix Server.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. Lägga till en värd till Zabbix Server. Den exporterade mallen kommer automatiskt att kopplas till den nya värden på Zabbix Server.

$ mamonsu zabbix host create mamonsu-demo

  1. Запуск.

$ service mamonsu start

Mamonsu utvecklingsriktningar

Som en del av utvecklingen av Mamonsu planerar vi att förfina måtten och skapa nya plugins, till exempel ett plugin för att övervaka storleken på enskilda tabeller. Vi planerar också att förbättra och skapa ytterligare verktyg, samt utöka funktionerna för automatisk justering genom kommandot mamonsu låt.

PostgreSQL-övervakningsmodul som en del av Zabbix Agent 2

En snabb och populär drivrutin används för att ansluta till PostgreSQL pgx (PG-drivrutin och verktygslåda för Go).

För närvarande använder vi två gränssnitt: Exporter, som anropar hanteraren med nyckel, och Configurator Zabbix Agent 2, som läser och kontrollerar serveranslutningsparametrarna som anges i konfigurationsfilen.

Vi försökte optimera DBMS:s arbete genom att gruppera mått och använda en hanterare (hanterare) för mått och måttgrupper, samt använda grupper av mått i JSON som beroende variabler (beroendeobjekt) och upptäckt på låg nivå (upptäcktsregler ).

Viktiga funktioner

  • upprätthålla en ihållande anslutning till PostgreSQL mellan kontrollerna;
  • stöd för flexibla pollningsintervall;
  • kompatibel med PostgreSQL-versioner från 10 och Zabbix Server från version 4.4;
  • möjligheten att ansluta och övervaka flera PostgreSQL-instanser samtidigt på grund av att Zabbix Agent 2 låter dig skapa flera sessioner.

PostgreSQL-anslutningsparameternivåer

Totalt finns tre nivåer av PostgreSQL-anslutningsparametrar tillgängliga, det vill säga uppgifter och inställningar:

  • Övergripande,
  • Sessioner,
  • Makron.

  1. De globala parametrarna ställs in på agentnivå, parametrarna Session och Makron bestämmer anslutningsparametrarna för databasen.

  2. Anslutningsparametrar till PostgreSQL - Sessioner ställs in i filen zabbix_agent2.conf.

Övervakning av PostgreSQL med Zabbix

PostgreSQL-anslutningsparametrar - Sessioner

  • Efter nyckelord sessioner ett unikt sessionsnamn anges, vilket måste anges i nyckeln (mallen).
  • Parametrar URI и Användarnamn krävs för varje session.
  • Om basnamnet inte anges, används standardnamnet för det gemensamma basnamnet för alla PostgreSQL-sessioner, vilket också anges i konfigurationsfilen.

  1. Anslutningsparametrar till PostgreSQL - Makron ställs in i den metriska nyckeln i mallen (liknande metoden som används i Zabbix Agent 1), det vill säga de skapas i mallen och specificeras sedan som parametrar i nyckeln. I det här fallet är sekvensen av makron fixerad, d.v.s. URI alltid listad först.

Övervakning av PostgreSQL med Zabbix

PostgreSQL-anslutningsparametrar - Makron

PostgreSQL-övervakningsmodulen innehåller redan mer än 95 mätvärden som låter dig täcka ett ganska brett spektrum av PostgreSQL-parametrar, inklusive:

  • antal anslutningar,
  • volym av databaser,
  • arkivera wal-filer,
  • kontrollpunkter,
  • antal "uppsvällda" tabeller,
  • replikeringsstatus,
  • replika lag.

PostgreSQL-mått är inte informativa utan operativsystemparametrar. Men Zabbix Agent 2 vet redan hur man samlar in operativsystemparametrar, så för att få hela bilden ansluter vi helt enkelt de nödvändiga mallarna till värden.

Hanterare

Hanteraren är huvudenheten i modulen där själva begäran exekveras och som låter dig erhålla mätvärden.

Så här får du ett enkelt mått:

  1. Skapa en fil för att ta emot ett nytt mätvärde:

zabbix/src/go/plugins/postgres/handler_uptime.go

  1. Vi kopplar ihop paketet och anger den unika nyckeln (nycklarna) för måtten:

Övervakning av PostgreSQL med Zabbix

  1. Vi skapar en hanterare med begäran, det vill säga vi initierar en variabel som kommer att innehålla resultatet:

Övervakning av PostgreSQL med Zabbix

  1. Vi utför begäran:

Övervakning av PostgreSQL med Zabbix

Det är nödvändigt att kontrollera begäran om fel, varefter resultatet kommer att hämtas av Zabbix Agent 2-processen.

  1. Registrera den nya metriska nyckeln:

Övervakning av PostgreSQL med Zabbix

När du har registrerat måttet kan du bygga om agenten med det nya måttet.

Modulen är tillgänglig från och med Zabbix 5.0 på webbplatsen https://www.zabbix.com/download. I den här versionen av Zabbix ställs parametrarna in separat via värd och port. I Zabbix 5.0.2, som kommer att släppas snart, kommer anslutningsparametrarna att paketeras i en enda URI.

Tack för din uppmärksamhet!

Användbara länkar

GitHub Mamonsu

Mamonsu dokumentation

Zabbix Git

Källa: will.com

Lägg en kommentar