PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Monitorowanie bazy danych PostgreSQL:wskazówki dotyczące monitorowania

Gdy Twoja infrastruktura bazy danych będzie już gotowa do działania, musisz mieć oko na to, co się dzieje. Monitorowanie jest koniecznością, jeśli chcesz mieć pewność, że wszystko jest w porządku lub jeśli musisz coś zmienić.

Dla każdej technologii baz danych należy monitorować kilka rzeczy. Niektóre z nich są specyficzne dla silnika bazy danych lub dostawcy, a nawet konkretnej wersji, której używasz.

W tym blogu przyjrzymy się, co należy monitorować w środowisku PostgreSQL.

Co monitorować w PostgreSQL

Podczas monitorowania klastra lub węzła bazy danych należy wziąć pod uwagę dwie główne rzeczy:system operacyjny i samą bazę danych. Musisz określić, które metryki będziesz monitorować z obu stron i jak to zrobisz. Musisz monitorować metrykę zawsze w kontekście swojego systemu i powinieneś szukać zmian we wzorcu zachowania.

W większości przypadków będziesz potrzebować kilku narzędzi (ponieważ znalezienie takiego, które pokryje wszystkie pożądane dane, jest prawie niemożliwe).

Pamiętaj, że gdy ma to wpływ na jeden z Twoich wskaźników, może to mieć również wpływ na inne, przez co rozwiązywanie problemu staje się bardziej złożone. Posiadanie dobrego systemu monitorowania i ostrzegania jest ważne, aby uczynić to zadanie tak prostym, jak to tylko możliwe.

Monitorowanie systemu operacyjnego

Jedna ważna rzecz (która jest wspólna dla wszystkich silników baz danych, a nawet dla wszystkich systemów) jest monitorowanie zachowania systemu operacyjnego. Oto kilka punktów do sprawdzenia tutaj.

Wykorzystanie procesora

Nadmierny procent wykorzystania procesora może stanowić problem, jeśli nie jest to typowe zachowanie. W takim przypadku ważne jest, aby zidentyfikować proces/procesy, które generują ten problem. Jeśli problemem jest proces bazy danych, musisz sprawdzić, co dzieje się w bazie danych.

Wykorzystanie pamięci RAM lub SWAP

Jeśli widzisz wysoką wartość tej metryki i nic się nie zmieniło w twoim systemie, prawdopodobnie musisz sprawdzić konfigurację bazy danych. Parametry takie jak shared_buffers i work_mem mogą mieć na to bezpośredni wpływ, ponieważ definiują ilość pamięci, którą można wykorzystać dla bazy danych PostgreSQL.

Wykorzystanie dysku

Nienormalny wzrost wykorzystania miejsca na dysku lub nadmierne zużycie dostępu do dysku to ważne rzeczy do monitorowania, ponieważ w pliku dziennika PostgreSQL może być zarejestrowanych wiele błędów lub zła konfiguracja pamięci podręcznej, która może generować ważne zużycie dostępu do dysku zamiast używać pamięci do przetwarzania zapytań.

Średnia obciążenia

Wiąże się to z trzema wymienionymi powyżej punktami. Wysokie średnie obciążenie może być generowane przez nadmierne użycie procesora, pamięci RAM lub dysku.

Sieć

Problem z siecią może mieć wpływ na wszystkie systemy, ponieważ aplikacja nie może połączyć się (lub połączyć utraconych pakietów) z bazą danych, więc jest to istotna metryka do monitorowania. Możesz monitorować opóźnienia lub utratę pakietów, a głównym problemem może być nasycenie sieci, problem ze sprzętem lub po prostu zła konfiguracja sieci.

Monitorowanie bazy danych PostgreSQL

Monitorowanie bazy danych PostgreSQL jest ważne nie tylko po to, aby sprawdzić, czy masz problem, ale także, aby wiedzieć, czy musisz coś zmienić, aby poprawić wydajność bazy danych, co jest prawdopodobnie jednym z najważniejszych rzeczy do monitorowania w bazie danych. Zobaczmy kilka wskaźników, które są w tym ważne.

Monitorowanie zapytań

Domyślnie PostgreSQL jest skonfigurowany z myślą o kompatybilności i stabilności, więc musisz znać swoje zapytania i jego wzorzec oraz konfigurować bazy danych w zależności od ruchu, który masz. Tutaj możesz użyć polecenia EXPLAIN, aby sprawdzić plan zapytania dla konkretnego zapytania, a także możesz monitorować liczbę SELECT, INSERT, UPDATE lub DELETE na każdym węźle. Jeśli masz długie zapytanie lub dużą liczbę zapytań uruchomionych w tym samym czasie, może to stanowić problem dla wszystkich systemów.

Monitorowanie aktywnych sesji

Powinieneś także monitorować liczbę aktywnych sesji. Jeśli jesteś blisko limitu, musisz sprawdzić, czy coś jest nie tak, czy po prostu musisz zwiększyć wartość max_connections. Różnica w liczbie może oznaczać wzrost lub spadek połączeń. Złe korzystanie z puli połączeń, blokowanie lub problem z siecią to najczęstsze problemy związane z liczbą połączeń.

Blokady bazy danych

Jeśli masz zapytanie oczekujące na inne zapytanie, musisz sprawdzić, czy to inne zapytanie jest normalnym procesem, czy czymś nowym. W niektórych przypadkach, na przykład, jeśli ktoś dokonuje aktualizacji na dużym stole, ta akcja może wpływać na normalne zachowanie bazy danych, generując dużą liczbę blokad.

Monitorowanie replikacji

Kluczowe metryki do monitorowania replikacji to opóźnienie i stan replikacji. Najczęstsze problemy to problemy z siecią, problemy z zasobami sprzętowymi lub problemy z niewymiarowaniem. Jeśli napotkasz problem z replikacją, musisz wiedzieć o tym jak najszybciej, ponieważ będziesz musiał to naprawić, aby zapewnić środowisko wysokiej dostępności.

Monitorowanie kopii zapasowych

Unikanie utraty danych jest jednym z podstawowych zadań DBA, więc nie musisz tylko wykonać kopii zapasowej, powinieneś wiedzieć, czy kopia zapasowa została ukończona i czy nadaje się do użytku. Zwykle ten ostatni punkt nie jest brany pod uwagę, ale jest to prawdopodobnie najważniejsza kontrola w procesie tworzenia kopii zapasowej.

Monitorowanie dzienników bazy danych

Należy monitorować dziennik bazy danych pod kątem błędów, takich jak FATAL lub zakleszczenie, a nawet typowych błędów, takich jak problemy z uwierzytelnianiem lub długotrwałe zapytania. Większość błędów jest zapisywana w pliku dziennika ze szczegółowymi przydatnymi informacjami, aby to naprawić.

Wpływ monitorowania na wydajność bazy danych PostgreSQL

Chociaż monitorowanie jest koniecznością, zazwyczaj nie jest bezpłatne. Wydajność bazy danych zawsze wiąże się z pewnym kosztem, w zależności od tego, ile monitorujesz, więc powinieneś unikać monitorowania rzeczy, których nie będziesz używać.

Ogólnie istnieją dwa sposoby monitorowania baz danych, z dzienników lub po stronie bazy danych przez zapytania.

W przypadku logów, aby móc z nich korzystać, musisz mieć wysoki poziom rejestrowania, który generuje wysoki dostęp do dysku i może wpływać na wydajność Twojej bazy danych.

W trybie zapytania każde połączenie z bazą danych wykorzystuje zasoby, więc w zależności od aktywności bazy danych i przydzielonych zasobów może to również wpłynąć na wydajność.

Narzędzia do monitorowania PostgreSQL

Istnieje kilka opcji narzędzi do monitorowania bazy danych. Może to być wbudowane narzędzie PostgreSQL, takie jak rozszerzenia, lub jakieś narzędzie zewnętrzne. Zobaczmy kilka przykładów tych narzędzi.

Rozszerzenia

  • Pg_stat_statements :To rozszerzenie pomoże Ci poznać profil zapytań Twojej bazy danych. Śledzi wszystkie wykonywane zapytania i przechowuje wiele przydatnych informacji w tabeli o nazwie pg_stat_statements. Wysyłając zapytanie do tej tabeli, możesz uzyskać między innymi informacje o tym, jakie zapytania są uruchamiane w systemie, ile razy zostały uruchomione i ile czasu zajęły.
  • Pgbadger :To oprogramowanie, które przeprowadza analizę logów PostgreSQL i wyświetla je w pliku HTML. Pomaga zrozumieć zachowanie bazy danych i określić, które zapytania wymagają optymalizacji.
  • Pgstattuple :Może generować statystyki dla tabel i indeksów, pokazujące, ile miejsca zajmowanego przez każdą tabelę i indeks jest zużywane przez żywe krotki, usunięte krotki lub ile niewykorzystanego miejsca jest dostępne w każdej relacji.
  • Pg_buffercache :Dzięki temu możesz sprawdzić w czasie rzeczywistym, co dzieje się w pamięci podręcznej współdzielonego bufora, pokazując, ile stron jest aktualnie przechowywanych w pamięci podręcznej.

Zewnętrzne narzędzia monitorowania

  • ClusterControl :To system zarządzania i monitorowania, który pomaga wdrażać, zarządzać, monitorować i skalować bazy danych z przyjaznego interfejsu. ClusterControl obsługuje najlepsze technologie baz danych typu open source i możesz zautomatyzować wiele zadań bazy danych, które musisz regularnie wykonywać, takich jak dodawanie i skalowanie nowych węzłów, wykonywanie kopii zapasowych i przywracanie oraz wiele innych.
  • Nagios :Jest to system Open Source i aplikacja do monitorowania sieci. Monitoruje hosty lub usługi oraz zarządza alertami dla różnych stanów. Za pomocą tego narzędzia możesz monitorować usługi sieciowe, zasoby hosta i nie tylko. Do monitorowania PostgreSQL możesz użyć jakiejś wtyczki lub stworzyć własny skrypt do sprawdzania bazy danych.
  • Zabbix :To oprogramowanie, które może monitorować zarówno sieci, jak i serwery. Wykorzystuje elastyczny mechanizm powiadomień, który umożliwia użytkownikom konfigurowanie alertów przez e-mail. Oferuje również raporty i wizualizację danych na podstawie przechowywanych danych. Wszystkie raporty i statystyki Zabbix, jak również parametry konfiguracyjne, są dostępne przez interfejs sieciowy.

Panele informacyjne

Widoczność jest przydatna do szybkiego wykrywania problemów. Odczytanie danych wyjściowych polecenia jest zdecydowanie bardziej czasochłonnym zadaniem niż oglądanie wykresu. Tak więc użycie pulpitu nawigacyjnego może być różnicą między wykryciem problemu teraz lub w ciągu najbliższych 15 minut, z pewnością, że czas może być naprawdę ważny dla firmy. W tym celu narzędzia takie jak PMM lub Vividcortex mogą być kluczem do zwiększenia widoczności systemu monitorowania bazy danych.

Monitorowanie i zarządzanie Percona (PMM): Jest to platforma typu open source do zarządzania i monitorowania wydajności bazy danych. Zapewnia dokładną analizę opartą na czasie dla serwerów MySQL, MariaDB, MongoDB i PostgreSQL, aby zapewnić, że Twoje dane działają tak wydajnie, jak to możliwe.

VividCortex: Jest to platforma hostowana w chmurze, która zapewnia głębokie monitorowanie wydajności bazy danych. Oferuje pełny wgląd w wiodące bazy danych typu open source, w tym MySQL, PostgreSQL, AWS Aurora, MongoDB i Redis.

Alarmy

Tylko monitorowanie systemu nie ma sensu, jeśli nie otrzymasz powiadomienia o każdym problemie. Bez systemu ostrzegania powinieneś przejść do narzędzia monitorującego, aby sprawdzić, czy wszystko jest w porządku, i możliwe, że masz poważny problem od wielu godzin. Ta praca z alertami może być wykonana za pomocą alertów e-mail, alertów tekstowych lub innych integracji narzędzi, takich jak slack.

Naprawdę trudno jest znaleźć narzędzia do monitorowania wszystkich niezbędnych metryk PostgreSQL, ogólnie rzecz biorąc, będziesz musiał użyć więcej niż jednego, a nawet trzeba będzie wykonać kilka skryptów. Jednym ze sposobów scentralizowania zadania monitorowania i alarmowania jest użycie ClusterControl, który zapewnia takie funkcje, jak zarządzanie kopiami zapasowymi, monitorowanie i ostrzeganie, wdrażanie i skalowanie, automatyczne odzyskiwanie i ważniejsze funkcje ułatwiające zarządzanie bazami danych. Wszystkie te funkcje w tym samym systemie.

Monitorowanie bazy danych PostgreSQL za pomocą ClusterControl

ClusterControl umożliwia monitorowanie serwerów w czasie rzeczywistym. Ma wstępnie zdefiniowany zestaw pulpitów nawigacyjnych, aby analizować niektóre z najczęstszych wskaźników.

Pozwala dostosować wykresy dostępne w klastrze i umożliwienie monitorowania opartego na agentach w celu generowania bardziej szczegółowych pulpitów nawigacyjnych.

Możesz także tworzyć alerty informujące o zdarzeniach w Twoim klastrze, lub zintegrować z różnymi usługami, takimi jak PagerDuty lub Slack.

Możesz również sprawdzić sekcję monitora zapytań, gdzie znajdziesz najczęstsze zapytania, uruchomione zapytania, wartości odstające zapytań i statystyki zapytań.

Dzięki tym funkcjom możesz sprawdzić, jak działa Twoja baza danych PostgreSQL.

W celu zarządzania kopiami zapasowymi ClusterControl centralizuje je w celu ochrony, zabezpieczenia i odzyskiwania danych, a dzięki funkcji weryfikacji kopii zapasowej możesz sprawdzić, czy kopia zapasowa jest gotowa.

To weryfikacyjne zadanie kopii zapasowej przywróci kopię zapasową na osobnym, autonomicznym hoście, więc możesz upewnić się, że kopia zapasowa działa.

Monitorowanie za pomocą wiersza poleceń ClusterControl

Do pisania skryptów i automatyzacji zadań, a nawet jeśli wolisz tylko wiersz poleceń, ClusterControl ma narzędzie s9s. Jest to narzędzie wiersza poleceń do zarządzania klastrem bazy danych.

Lista klastrów

Lista węzłów

Możesz wykonać wszystkie zadania (a nawet więcej) z interfejsu użytkownika ClusterControl , i możesz zintegrować tę funkcję z niektórymi narzędziami zewnętrznymi, takimi jak slack, aby zarządzać nią z tego miejsca.

Wnioski

W tym blogu wspomnieliśmy o kilku ważnych metrykach, które należy monitorować w środowisku PostgreSQL, a także o narzędziach ułatwiających życie dzięki kontrolowaniu systemów. Możesz również zobaczyć, jak używać ClusterControl do tego zadania.

Jak widać, monitorowanie jest absolutnie konieczne, a najlepszy sposób na to zależy od infrastruktury i samego systemu. Powinieneś osiągnąć równowagę między tym, co musisz monitorować, a tym, jak wpływa to na wydajność Twojej bazy danych.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie z LEFT JOIN nie zwraca wierszy dla liczby 0

  2. Jakie są zalety i wady wykonywania obliczeń w sql vs. w Twojej aplikacji?

  3. Wykonywanie sekwencji i seriali w Postgres-XL

  4. Jak timeofday() działa w PostgreSQL

  5. Równoległość dochodzi do VACUUM