Podczas uruchamiania krytycznych usług baz danych w środowisku produkcyjnym musimy znać i monitorować bazę danych. Musisz zrozumieć kluczowe metryki w używanej bazie danych. Na przykład, gdy uruchamiasz MongoDB z silnikiem magazynu WiredTiger, musisz znać połączenia, uwierzytelnianie, operacje, opóźnienie replikacji, błędy stron, blokowanie itp.
W tym blogu wyjaśnimy kilka kluczowych wskaźników używanych do monitorowania serwera Percona pod kątem MongoDB.
Połączenia z bazą danych
Połączenia z bazą danych to jeden z ważnych kluczowych wskaźników w każdej bazie danych. Monitoruje bieżące połączenia/wątki od aplikacji do bazy danych. Możesz sprawdzić bieżące połączenia za pomocą poniższego polecenia:
> db.serverStatus().connections
Informuje o tym, jak bardzo aplikacje uzyskują dostęp do bazy danych. Nagły wzrost liczby połączeń może spowodować problemy z serwerami bazy danych. Czy jest to oczekiwane, czy nie?
ClusterControl udostępnia informacje związane z połączeniami, jak pokazano poniżej:
Operacje na poleceniach
Wskaźniki operacji poleceń monitorują bieżące operacje — wstawianie, aktualizowanie, usuwanie lub wybieranie. Możesz monitorować bieżące operacje poleceń, wykonując poniższe polecenie:
>db.serverStatus().opcounters
Z operacji poleceń naprawdę możesz zobaczyć obciążenie aplikacji, czy jest to ciężki zapis lub odczyt. Z tego punktu widzenia możesz podejmować pewne decyzje, np. jeśli masz duży ruch związany z odczytami, możesz chcieć przeskalować węzły drugorzędne w celu dystrybucji zapytań odczytu.
Operacje poleceń monitorowania w ClusterControl są proste, wystarczy włączyć monitorowanie oparte na agentach, aby zobaczyć metryki OpsCounter w panelu MongoDB Server, jak pokazano poniżej:
Opóźnienia zestawu replik
Gdy uruchamiasz architekturę ReplicaSet lub ShardCluster, jednym z ważnych kluczowych parametrów jest opóźnienie replikacji. Opóźnienie replikacji występuje, gdy węzły drugorzędne nie mogą dogonić danych zapisywanych w węźle podstawowym. Przyczyny tego mogą być różne:opóźnienie sieci, przepustowość dysku, wolne zapytania itp.
Możesz sprawdzić bieżące informacje o opóźnieniu replikacji, uruchamiając poniższe polecenie na węźle podstawowym:
> rs.printSlaveReplicationInfo()
Wskaźniki informacji o opóźnieniu są podawane w sekundach, więc przy dużych równoczesnych połączeniach może opóźnić się o kilka sekund na węzłach drugorzędnych, ponieważ replikacja w mongodb jest asynchroniczna.
W ClusterControl metryki Max Replication Lag można znaleźć w MongoDB Replicaset panel monitorowania.
Błędy stron
Błędy strony występują najczęściej w aplikacjach o wysokim współbieżności i dużym obciążeniu. Błędy strony zdarzają się, gdy proces mongodb chce pobrać dane, ale nie są one dostępne w pamięci, wtedy serwer mongodb odczytuje dane z dysku.
Aby monitorować bieżący stan błędów stron, możesz użyć poniższego polecenia:
>db.serverStatus().extra_info.page_faults
Podaje liczbę błędów strony. Wartość może wzrosnąć przy dużym obciążeniu, a serwer może mieć niską wydajność. Możesz również sprawdzić dziennik powolnych zapytań.
Blokowanie
Blokowanie jest również ważną metryką w MongoDB, zwykle ma miejsce w aplikacjach o dużym obciążeniu z wieloma transakcjami na tym samym zbiorze danych. Blokowanie może spowodować poważne problemy z wydajnością.
Możesz sprawdzić bieżące operacje blokowania w bazie danych za pomocą poniższego polecenia:
>db.currentOp()
Gdy uruchamiamy polecenie db.currentOp(), pojawia się kilka informacji związanych z blokowaniem. ClusterControl monitoruje Global Lock na swoim pulpicie MongoDB, jak pokazano poniżej:
Wnioski
Oto niektóre z ważnych kluczowych metryk, które należy monitorować w Percona Server dla MongoDB. Zapewniają podgląd w czasie rzeczywistym tego, co dzieje się na serwerze i mogą wykryć wszelkie anomalie, na których można podjąć działania. ClusterControl zapewnia kilka pulpitów nawigacyjnych, które zapewniają widoczność baz danych MongoDB.