MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment surveiller vos serveurs de base de données à l'aide de la CLI de ClusterControl

Comment souhaitez-vous fusionner le processus "top" pour tous vos 5 nœuds de base de données et trier par utilisation du processeur avec une seule commande en une seule ligne ? Oui, vous avez bien lu ! Que diriez-vous de l'affichage de graphiques interactifs dans l'interface du terminal ? Nous avons introduit le client CLI pour ClusterControl appelé s9s il y a environ un an, et cela a été un excellent complément à l'interface Web. C'est aussi open source..

Dans cet article de blog, nous vous montrerons comment vous pouvez surveiller vos bases de données à l'aide de votre terminal et de la CLI s9s.

Introduction à s9s, la CLI ClusterControl

ClusterControl CLI (ou s9s ou s9s CLI) est un projet open source et un package facultatif introduit avec ClusterControl version 1.4.1. Il s'agit d'un outil en ligne de commande pour interagir, contrôler et gérer votre infrastructure de base de données à l'aide de ClusterControl. Le projet de ligne de commande s9s est open source et peut être trouvé sur GitHub.

À partir de la version 1.4.1, le script d'installation installera automatiquement le package (s9s-tools) sur le nœud ClusterControl.

Quelques prérequis. Pour que vous puissiez exécuter la CLI s9s-tools, les conditions suivantes doivent être remplies :

  • Un contrôleur ClusterControl en cours d'exécution (cmon).
  • client s9s, installez-le en tant que package séparé.
  • Le port 9501 doit être accessible par le client s9s.

L'installation de la CLI s9s est simple si vous l'installez sur l'hôte ClusterControl Controller lui-même :$ rm

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

Vous pouvez installer les outils s9s en dehors du serveur ClusterControl (votre poste de travail portable ou hôte bastion), tant que l'interface ClusterControl Controller RPC (TLS) est exposée au réseau public (par défaut 127.0.0.1:9501). Vous pouvez trouver plus de détails sur la façon de configurer ceci dans la page de documentation.

Pour vérifier si vous pouvez vous connecter correctement à l'interface ClusterControl RPC, vous devriez obtenir la réponse OK lors de l'exécution de la commande suivante :

$ s9s cluster --ping
PING OK 2.000 ms

En remarque, examinez également les limitations lors de l'utilisation de cet outil.

Exemple de déploiement

Notre exemple de déploiement se compose de 8 nœuds répartis sur 3 clusters :

  • Réplication en continu PostgreSQL :1 maître, 2 esclaves
  • Réplication MySQL - 1 maître, 1 esclave
  • Ensemble de réplicas MongoDB :1 nœud principal, 2 nœuds secondaires

Tous les clusters de bases de données ont été déployés par ClusterControl à l'aide de l'assistant de déploiement "Déployer le cluster de bases de données" et du point de vue de l'interface utilisateur, voici ce que nous verrions dans le tableau de bord du cluster :

Surveillance des clusters

Nous allons commencer par lister les 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.

Nous voyons les mêmes clusters que l'interface utilisateur. Nous pouvons obtenir plus de détails sur le cluster particulier en utilisant l'indicateur --stat. Plusieurs clusters et nœuds peuvent également être surveillés de cette façon, les options de ligne de commande peuvent même utiliser des caractères génériques dans les noms de nœud et de cluster :

$ 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

La sortie ci-dessus donne un résumé de notre réplication MySQL avec l'état du cluster, l'état, le fournisseur, le fichier de configuration, etc. En bout de ligne, vous pouvez voir la liste des nœuds qui relèvent de cet ID de cluster avec une vue résumée des ressources système pour chaque hôte, comme le nombre de processeurs, la mémoire totale, l'utilisation de la mémoire, le disque d'échange et les interfaces réseau. Toutes les informations affichées sont extraites de la base de données CMON, et non directement des nœuds réels.

Vous pouvez également obtenir une vue résumée de toutes les bases de données sur tous les 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.

La dernière ligne résume que nous avons un total de 5 bases de données avec 125 tables, dont 4 sur notre cluster PostgreSQL.

Pour un exemple complet d'utilisation des options de ligne de commande du cluster s9s, consultez la documentation du cluster s9s.

Surveillance des nœuds

Pour la surveillance des nœuds, la CLI s9s a des fonctionnalités similaires avec l'option de cluster. Pour obtenir une vue résumée de tous les nœuds, vous pouvez simplement faire :

$ 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

La colonne la plus à gauche spécifie le type du nœud. Pour ce déploiement, "c" représente ClusterControl Controller, "p" pour PostgreSQL, "m" pour MongoDB, "e" pour Memcached et s pour les nœuds MySQL génériques. Le suivant est le statut de l'hôte - "o" pour en ligne, " l" pour hors ligne, "f" pour les nœuds défaillants, etc. Le suivant est le rôle du nœud dans le cluster. Il peut être M pour maître, S pour esclave, C pour contrôleur et - pour tout le reste. Les colonnes restantes sont assez explicites.

Vous pouvez obtenir toute la liste en consultant la page de manuel de ce composant :

$ man s9s-node

À partir de là, nous pouvons accéder à des statistiques plus détaillées pour tous les nœuds avec l'indicateur --stats :

$ 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: ''

L'impression de graphiques avec le client s9s peut également être très informative. Cela présente les données que le contrôleur a collectées dans divers graphiques. Il y a près de 30 graphiques pris en charge par cet outil comme indiqué ici et s9s-node les énumère tous. L'exemple suivant montre l'histogramme de charge du serveur de tous les nœuds pour l'ID de cluster 1, tel que collecté par CMON, directement depuis votre terminal :

Il est possible de régler la date et l'heure de début et de fin. On peut visualiser des périodes courtes (comme la dernière heure) ou des périodes plus longues (comme une semaine ou un mois). Voici un exemple d'affichage de l'utilisation du disque pour la dernière heure :

En utilisant l'option --density, une vue différente peut être imprimée pour chaque graphique. Ce graphique de densité ne montre pas la série chronologique, mais la fréquence à laquelle les valeurs données ont été observées (l'axe X représente la valeur de densité) :

Si le terminal ne prend pas en charge les caractères Unicode, l'option --only-ascii peut les désactiver :

Les graphiques ont des couleurs, où les valeurs dangereusement élevées, par exemple, sont affichées en rouge. La liste des nœuds peut être filtrée avec l'option --nodes, où vous pouvez spécifier les noms de nœuds ou utiliser des caractères génériques si cela vous convient.

Surveillance des processus

Une autre chose intéressante à propos de la CLI s9s est qu'elle fournit une liste de processus de l'ensemble du cluster - un "top" pour tous les nœuds, tous les processus fusionnés en un seul. La commande suivante exécute la commande "top" sur tous les nœuds de base de données pour l'ID de cluster 24, triés en fonction de la consommation de CPU la plus élevée et mis à jour en continu :

$ 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

Il existe également un indicateur --list qui renvoie un résultat similaire sans mise à jour continue (similaire à la commande "ps") :

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

Surveillance des tâches

Les travaux sont des tâches exécutées par le contrôleur en arrière-plan, de sorte que l'application cliente n'a pas besoin d'attendre que le travail soit terminé. ClusterControl exécute les tâches de gestion en attribuant un ID à chaque tâche et laisse le planificateur interne décider si deux tâches ou plus peuvent être exécutées en parallèle. Par exemple, plusieurs déploiements de cluster peuvent être exécutés simultanément, ainsi que d'autres opérations de longue durée telles que la sauvegarde et le téléchargement automatique des sauvegardes vers le stockage dans le cloud.

Dans toute opération de gestion, il serait utile de pouvoir surveiller la progression et l'état d'une tâche spécifique, comme par exemple, faire évoluer un nouvel esclave pour notre réplication MySQL. La commande suivante ajoute un nouvel esclave, 10.0.0.77 pour faire évoluer notre réplication MySQL :

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

Nous pouvons alors surveiller le jobID 66992 en utilisant l'option job :

$ 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.
...

Ou nous pouvons utiliser le drapeau --wait et obtenir un spinner avec une barre de progression :

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

C'est tout pour le supplément de surveillance d'aujourd'hui. Nous espérons que vous essaierez la CLI et que vous en tirerez profit. Bon regroupement