sql >> Database >  >> NoSQL >> MongoDB

Hoe u uw databaseservers kunt bewaken met ClusterControl CLI

Hoe zou je het "top"-proces voor al je 5 databaseknooppunten willen samenvoegen en sorteren op CPU-gebruik met slechts een one-liner-opdracht? Ja, je leest het goed! Hoe zit het met interactieve grafieken in de terminalinterface? We hebben ongeveer een jaar geleden de CLI-client voor ClusterControl, s9s genaamd, geïntroduceerd en het is een geweldige aanvulling op de webinterface. Het is ook open source..

In deze blogpost laten we u zien hoe u uw databases kunt controleren met uw terminal en s9s CLI.

Inleiding tot s9s, The ClusterControl CLI

ClusterControl CLI (of s9s of s9s CLI), is een open source project en optioneel pakket geïntroduceerd met ClusterControl versie 1.4.1. Het is een opdrachtregeltool voor interactie, controle en beheer van uw database-infrastructuur met behulp van ClusterControl. Het s9s-opdrachtregelproject is open source en is te vinden op GitHub.

Vanaf versie 1.4.1 zal het installatiescript het pakket (s9s-tools) automatisch installeren op het ClusterControl-knooppunt.

Enkele voorwaarden. Om s9s-tools CLI te kunnen gebruiken, moet het volgende waar zijn:

  • Een draaiende ClusterControl-controller (cmon).
  • s9s-client, installeer als een afzonderlijk pakket.
  • Poort 9501 moet bereikbaar zijn voor de s9s-client.

Het installeren van de s9s CLI is eenvoudig als u het op de ClusterControl Controller-host zelf installeert:$ rm

$ rm -Rf ~/.s9s
$ wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh
$ ./install-s9s-tools.sh

U kunt s9s-tools installeren buiten de ClusterControl-server (uw werkstationlaptop of bastionhost), zolang de ClusterControl Controller RPC (TLS)-interface is blootgesteld aan het openbare netwerk (standaard 127.0.0.1:9501). U kunt meer details vinden over hoe u dit kunt configureren op de documentatiepagina.

Om te controleren of u correct verbinding kunt maken met de ClusterControl RPC-interface, moet u het antwoord OK krijgen wanneer u de volgende opdracht uitvoert:

$ s9s cluster --ping
PING OK 2.000 ms

Kijk terzijde ook eens naar de beperkingen bij het gebruik van deze tool.

Voorbeeld implementatie

Onze voorbeeldimplementatie bestaat uit 8 knooppunten in 3 clusters:

  • PostgreSQL-streamingreplicatie - 1 master, 2 slaves
  • MySQL-replicatie - 1 master, 1 slave
  • MongoDB-replicaset - 1 primaire, 2 secundaire knooppunten

Alle databaseclusters zijn geïmplementeerd door ClusterControl met behulp van de implementatiewizard "Deploy Database Cluster" en vanuit het oogpunt van de gebruikersinterface is dit wat we zouden zien in het clusterdashboard:

Clusterbewaking

We beginnen met het opsommen van de clusters:

$ s9s cluster --list --long
ID STATE   TYPE              OWNER  GROUP  NAME                   COMMENT
23 STARTED postgresql_single system admins PostgreSQL 10          All nodes are operational.
24 STARTED replication       system admins Oracle 5.7 Replication All nodes are operational.
25 STARTED mongodb           system admins MongoDB 3.6            All nodes are operational.

We zien dezelfde clusters als de UI. We kunnen meer details over het specifieke cluster krijgen door de --stat-vlag te gebruiken. Meerdere clusters en knooppunten kunnen op deze manier ook worden bewaakt, de opdrachtregelopties kunnen zelfs jokertekens gebruiken in de knooppunt- en clusternamen:

$ s9s cluster --stat *Replication
Oracle 5.7 Replication                                                                                                                                                                                               Name: Oracle 5.7 Replication              Owner: system/admins
      ID: 24                                  State: STARTED
    Type: REPLICATION                        Vendor: oracle 5.7
  Status: All nodes are operational.
  Alarms:  0 crit   1 warn
    Jobs:  0 abort  0 defnd  0 dequd  0 faild  7 finsd  0 runng
  Config: '/etc/cmon.d/cmon_24.cnf'
 LogFile: '/var/log/cmon_24.log'

                                                                                HOSTNAME    CPU   MEMORY   SWAP    DISK       NICs
                                                                                10.0.0.104 1  6% 992M 120M 0B 0B 19G 13G   10K/s 54K/s
                                                                                10.0.0.168 1  6% 992M 116M 0B 0B 19G 13G   11K/s 66K/s
                                                                                10.0.0.156 2 39% 3.6G 2.4G 0B 0B 19G 3.3G 338K/s 79K/s

De uitvoer hierboven geeft een samenvatting van onze MySQL-replicatie samen met de clusterstatus, staat, leverancier, configuratiebestand enzovoort. Langs de lijn kunt u de lijst met knooppunten zien die onder deze cluster-ID vallen met een samengevat overzicht van systeembronnen voor elke host, zoals het aantal CPU's, het totale geheugen, geheugengebruik, wisselschijf en netwerkinterfaces. Alle getoonde informatie wordt opgehaald uit de CMON-database, niet rechtstreeks uit de daadwerkelijke knooppunten.

U kunt ook een overzicht krijgen van alle databases op alle clusters:

$ s9s  cluster --list-databases --long
SIZE        #TBL #ROWS     OWNER  GROUP  CLUSTER                DATABASE
  7,340,032    0         0 system admins PostgreSQL 10          postgres
  7,340,032    0         0 system admins PostgreSQL 10          template1
  7,340,032    0         0 system admins PostgreSQL 10          template0
765,460,480   24 2,399,611 system admins PostgreSQL 10          sbtest
          0  101         - system admins Oracle 5.7 Replication sys
Total: 5 databases, 789,577,728, 125 tables.

De laatste regel vat samen dat we in totaal 5 databases hebben met 125 tabellen, waarvan 4 op ons PostgreSQL-cluster.

Voor een compleet voorbeeld van gebruik op s9s-clusteropdrachtregelopties, bekijk de s9s-clusterdocumentatie.

Knooppuntbewaking

Voor knooppuntbewaking heeft s9s CLI vergelijkbare functies als de clusteroptie. Om een ​​overzicht van alle knooppunten te krijgen, kunt u eenvoudig het volgende doen:

$ s9s node --list --long
STAT VERSION    CID CLUSTER                HOST       PORT  COMMENT
coC- 1.6.2.2662  23 PostgreSQL 10          10.0.0.156  9500 Up and running
poM- 10.4        23 PostgreSQL 10          10.0.0.44   5432 Up and running
poS- 10.4        23 PostgreSQL 10          10.0.0.58   5432 Up and running
poS- 10.4        23 PostgreSQL 10          10.0.0.60   5432 Up and running
soS- 5.7.23-log  24 Oracle 5.7 Replication 10.0.0.104  3306 Up and running.
coC- 1.6.2.2662  24 Oracle 5.7 Replication 10.0.0.156  9500 Up and running
soM- 5.7.23-log  24 Oracle 5.7 Replication 10.0.0.168  3306 Up and running.
mo-- 3.2.20      25 MongoDB 3.6            10.0.0.125 27017 Up and Running
mo-- 3.2.20      25 MongoDB 3.6            10.0.0.131 27017 Up and Running
coC- 1.6.2.2662  25 MongoDB 3.6            10.0.0.156  9500 Up and running
mo-- 3.2.20      25 MongoDB 3.6            10.0.0.35  27017 Up and Running
Total: 11

De meest linkse kolom specificeert het type node. Voor deze implementatie staat "c" voor ClusterControl Controller, 'p' voor PostgreSQL, "m" voor MongoDB, "e" voor Memcached en s voor generieke MySQL-knooppunten. De volgende is de hoststatus - "o" voor online, " l" voor offline, "f" voor mislukte knooppunten enzovoort. De volgende is de rol van het knooppunt in het cluster. Het kan M zijn voor master, S voor slave, C voor controller en - voor al het andere. De overige kolommen spreken voor zich.

Je kunt de hele lijst krijgen door naar de man-pagina van dit onderdeel te kijken:

$ man s9s-node

Van daaruit kunnen we naar meer gedetailleerde statistieken springen voor alle knooppunten met --stats vlag:

$ s9s node --stat --cluster-id=24
 10.0.0.104:3306
    Name: 10.0.0.104              Cluster: Oracle 5.7 Replication (24)
      IP: 10.0.0.104                 Port: 3306
   Alias: -                         Owner: system/admins
   Class: CmonMySqlHost              Type: mysql
  Status: CmonHostOnline             Role: slave
      OS: centos 7.0.1406 core     Access: read-only
   VM ID: -
 Version: 5.7.23-log
 Message: Up and running.
LastSeen: Just now                    SSH: 0 fail(s)
 Connect: y Maintenance: n Managed: n Recovery: n Skip DNS: y SuperReadOnly: n
     Pid: 16592  Uptime: 01:44:38
  Config: '/etc/my.cnf'
 LogFile: '/var/log/mysql/mysqld.log'
 PidFile: '/var/lib/mysql/mysql.pid'
 DataDir: '/var/lib/mysql/'
 10.0.0.168:3306
    Name: 10.0.0.168              Cluster: Oracle 5.7 Replication (24)
      IP: 10.0.0.168                 Port: 3306
   Alias: -                         Owner: system/admins
   Class: CmonMySqlHost              Type: mysql
  Status: CmonHostOnline             Role: master
      OS: centos 7.0.1406 core     Access: read-write
   VM ID: -
 Version: 5.7.23-log
 Message: Up and running.
  Slaves: 10.0.0.104:3306
LastSeen: Just now                    SSH: 0 fail(s)
 Connect: n Maintenance: n Managed: n Recovery: n Skip DNS: y SuperReadOnly: n
     Pid: 975  Uptime: 01:52:53
  Config: '/etc/my.cnf'
 LogFile: '/var/log/mysql/mysqld.log'
 PidFile: '/var/lib/mysql/mysql.pid'
 DataDir: '/var/lib/mysql/'
 10.0.0.156:9500
    Name: 10.0.0.156              Cluster: Oracle 5.7 Replication (24)
      IP: 10.0.0.156                 Port: 9500
   Alias: -                         Owner: system/admins
   Class: CmonHost                   Type: controller
  Status: CmonHostOnline             Role: controller
      OS: centos 7.0.1406 core     Access: read-write
   VM ID: -
 Version: 1.6.2.2662
 Message: Up and running
LastSeen: 28 seconds ago              SSH: 0 fail(s)
 Connect: n Maintenance: n Managed: n Recovery: n Skip DNS: n SuperReadOnly: n
     Pid: 12746  Uptime: 01:10:05
  Config: ''
 LogFile: '/var/log/cmon_24.log'
 PidFile: ''
 DataDir: ''

Grafieken afdrukken met de s9s-client kan ook zeer informatief zijn. Dit presenteert de gegevens die de verwerkingsverantwoordelijke heeft verzameld in verschillende grafieken. Er worden bijna 30 grafieken ondersteund door deze tool, zoals hier vermeld en s9s-node somt ze allemaal op. Het volgende toont het serverbelastinghistogram van alle knooppunten voor cluster-ID 1 zoals verzameld door CMON, rechtstreeks vanaf uw terminal:

Het is mogelijk om de start- en einddatum en -tijd in te stellen. Men kan korte periodes (zoals het laatste uur) of langere periodes (zoals een week of een maand) bekijken. Het volgende is een voorbeeld van het bekijken van het schijfgebruik van het afgelopen uur:

Met de --density optie kan voor elke grafiek een andere weergave worden afgedrukt. Deze dichtheidsgrafiek toont niet de tijdreeks, maar hoe vaak de gegeven waarden werden gezien (X-as geeft de dichtheidswaarde weer):

Als de terminal geen Unicode-tekens ondersteunt, kan de optie --only-ascii ze uitschakelen:

De grafieken hebben kleuren, waarbij gevaarlijk hoge waarden bijvoorbeeld in rood worden weergegeven. De lijst met knooppunten kan worden gefilterd met de optie --nodes, waar u de knooppuntnamen kunt specificeren of indien nodig jokertekens kunt gebruiken.

Procesbewaking

Een ander cool ding over s9s CLI is dat het een proceslijst van het hele cluster biedt - een "top" voor alle knooppunten, alle processen samengevoegd tot één. De volgende opdracht voert de opdracht "top" uit op alle databaseknooppunten voor cluster-ID 24, gesorteerd op het meeste CPU-verbruik en continu bijgewerkt:

$ s9s process --top --cluster-id=24
Oracle 5.7 Replication - 04:39:17                                                                                                                                                      All nodes are operational.
3 hosts, 4 cores, 10.6 us,  4.2 sy, 84.6 id,  0.1 wa,  0.3 st,
GiB Mem : 5.5 total, 1.7 free, 2.6 used, 0.1 buffers, 1.1 cached
GiB Swap: 0 total, 0 used, 0 free,

PID   USER     HOST       PR  VIRT      RES    S   %CPU   %MEM COMMAND
12746 root     10.0.0.156 20  1359348    58976 S  25.25   1.56 cmon
 1587 apache   10.0.0.156 20   462572    21632 S   1.38   0.57 httpd
  390 root     10.0.0.156 20     4356      584 S   1.32   0.02 rngd
  975 mysql    10.0.0.168 20  1144260    71936 S   1.11   7.08 mysqld
16592 mysql    10.0.0.104 20  1144808    75976 S   1.11   7.48 mysqld
22983 root     10.0.0.104 20   127368     5308 S   0.92   0.52 sshd
22548 root     10.0.0.168 20   127368     5304 S   0.83   0.52 sshd
 1632 mysql    10.0.0.156 20  3578232  1803336 S   0.50  47.65 mysqld
  470 proxysql 10.0.0.156 20   167956    35300 S   0.44   0.93 proxysql
  338 root     10.0.0.104 20     4304      600 S   0.37   0.06 rngd
  351 root     10.0.0.168 20     4304      600 R   0.28   0.06 rngd
   24 root     10.0.0.156 20        0        0 S   0.19   0.00 rcu_sched
  785 root     10.0.0.156 20   454112    11092 S   0.13   0.29 httpd
   26 root     10.0.0.156 20        0        0 S   0.13   0.00 rcuos/1
   25 root     10.0.0.156 20        0        0 S   0.13   0.00 rcuos/0
22498 root     10.0.0.168 20   127368     5200 S   0.09   0.51 sshd
14538 root     10.0.0.104 20        0        0 S   0.09   0.00 kworker/0:1
22933 root     10.0.0.104 20   127368     5200 S   0.09   0.51 sshd
28295 root     10.0.0.156 20   127452     5016 S   0.06   0.13 sshd
 2238 root     10.0.0.156 20   197520    10444 S   0.06   0.28 vc-agent-007
  419 root     10.0.0.156 20    34764     1660 S   0.06   0.04 systemd-logind
    1 root     10.0.0.156 20    47628     3560 S   0.06   0.09 systemd
27992 proxysql 10.0.0.156 20    11688      872 S   0.00   0.02 proxysql_galera
28036 proxysql 10.0.0.156 20    11688      876 S   0.00   0.02 proxysql_galera

Er is ook een --list vlag die een soortgelijk resultaat retourneert zonder continue update (vergelijkbaar met "ps" commando):

$ s9s process --list --cluster-id=25

Taakbewaking

Taken zijn taken die door de controller op de achtergrond worden uitgevoerd, zodat de clienttoepassing niet hoeft te wachten tot de hele taak is voltooid. ClusterControl voert beheertaken uit door aan elke taak een ID toe te kennen en laat de interne planner beslissen of twee of meer taken parallel kunnen worden uitgevoerd. Er kan bijvoorbeeld meer dan één clusterimplementatie tegelijkertijd worden uitgevoerd, evenals andere langlopende bewerkingen zoals back-up en automatische upload van back-ups naar cloudopslag.

Bij elke beheeroperatie zou het handig zijn als we de voortgang en status van een specifieke taak zouden kunnen volgen, zoals bijvoorbeeld het uitschalen van een nieuwe slaaf voor onze MySQL-replicatie. De volgende opdracht voegt een nieuwe slaaf toe, 10.0.0.77 om onze MySQL-replicatie uit te schalen:

$ s9s cluster --add-node --nodes="10.0.0.77" --cluster-id=24
Job with ID 66992 registered.

We kunnen dan de jobID 66992 controleren met behulp van de job-optie:

$ s9s job --log --job-id=66992
addNode: Verifying job parameters.
10.0.0.77:3306: Adding host to cluster.
10.0.0.77:3306: Testing SSH to host.
10.0.0.77:3306: Installing node.
10.0.0.77:3306: Setup new node (installSoftware = true).
10.0.0.77:3306: Setting SELinux in permissive mode.
10.0.0.77:3306: Disabling firewall.
10.0.0.77:3306: Setting vm.swappiness = 1
10.0.0.77:3306: Installing software.
10.0.0.77:3306: Setting up repositories.
10.0.0.77:3306: Installing helper packages.
10.0.0.77: Upgrading nss.
10.0.0.77: Upgrading ca-certificates.
10.0.0.77: Installing socat.
...
10.0.0.77: Installing pigz.
10.0.0.77: Installing bzip2.
10.0.0.77: Installing iproute2.
10.0.0.77: Installing tar.
10.0.0.77: Installing openssl.
10.0.0.77: Upgrading openssl openssl-libs.
10.0.0.77: Finished with helper packages.
10.0.0.77:3306: Verifying helper packages (checking if socat is installed successfully).
10.0.0.77:3306: Uninstalling existing MySQL packages.
10.0.0.77:3306: Installing replication software, vendor oracle, version 5.7.
10.0.0.77:3306: Installing software.
...

Of we kunnen de --wait vlag gebruiken en een spinner met voortgangsbalk krijgen:

$ s9s job --wait --job-id=66992
Add Node to Cluster
- Job 66992 RUNNING    [         █] ---% Add New Node to Cluster

Dat is het voor het monitoringsupplement van vandaag. We hopen dat u de CLI eens zult proberen en er waarde uit zult halen. Gelukkig clusteren


  1. Mongoose automatisch verhogen

  2. Mongo update array-element (.NET driver 2.0)

  3. MongoDB-updategegevens in genest veld

  4. Networkx is nooit klaar met het berekenen van Betweenness centrality voor 2 mil nodes