sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo monitorear sus servidores de base de datos usando ClusterControl CLI

¿Cómo le gustaría fusionar el proceso "superior" para los 5 nodos de la base de datos y ordenarlos por uso de CPU con solo un comando de una sola línea? ¡Si, leíste correctamente! ¿Qué hay de la visualización de gráficos interactivos en la interfaz del terminal? Presentamos el cliente CLI para ClusterControl llamado s9s hace aproximadamente un año y ha sido un gran complemento para la interfaz web. También es de código abierto..

En esta publicación de blog, le mostraremos cómo puede monitorear sus bases de datos utilizando su terminal y la CLI de s9s.

Introducción a s9s, la CLI de ClusterControl

ClusterControl CLI (o s9s o s9s CLI) es un proyecto de código abierto y un paquete opcional introducido con ClusterControl versión 1.4.1. Es una herramienta de línea de comandos para interactuar, controlar y administrar su infraestructura de base de datos usando ClusterControl. El proyecto de línea de comandos s9s es de código abierto y se puede encontrar en GitHub.

A partir de la versión 1.4.1, la secuencia de comandos del instalador instalará automáticamente el paquete (s9s-tools) en el nodo ClusterControl.

Algunos requisitos previos. Para poder ejecutar la CLI de s9s-tools, debe cumplirse lo siguiente:

  • Un controlador ClusterControl en ejecución (cmon).
  • cliente s9s, instálelo como un paquete separado.
  • El cliente s9s debe poder acceder al puerto 9501.

La instalación de la CLI del s9s es sencilla si la instala en el propio host del controlador ClusterControl:$ rm

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

Puede instalar s9s-tools fuera del servidor ClusterControl (la computadora portátil de su estación de trabajo o el host bastión), siempre que la interfaz RPC del controlador ClusterControl (TLS) esté expuesta a la red pública (predeterminado en 127.0.0.1:9501). Puede encontrar más detalles sobre cómo configurar esto en la página de documentación.

Para verificar si puede conectarse a la interfaz RPC de ClusterControl correctamente, debe obtener la respuesta OK al ejecutar el siguiente comando:

$ s9s cluster --ping
PING OK 2.000 ms

Como nota al margen, también observe las limitaciones al usar esta herramienta.

Ejemplo de implementación

Nuestra implementación de ejemplo consta de 8 nodos en 3 clústeres:

  • Replicación de transmisión de PostgreSQL:1 maestro, 2 esclavos
  • Replicación de MySQL - 1 maestro, 1 esclavo
  • Conjunto de réplicas de MongoDB:1 nodo principal y 2 secundarios

ClusterControl implementó todos los clústeres de bases de datos mediante el asistente de implementación "Implementar clúster de base de datos" y, desde el punto de vista de la interfaz de usuario, esto es lo que veríamos en el tablero del clúster:

Supervisión de clústeres

Comenzaremos enumerando los grupos:

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

Vemos los mismos clústeres que la interfaz de usuario. Podemos obtener más detalles sobre el clúster en particular usando el indicador --stat. También se pueden monitorear múltiples clústeres y nodos de esta manera, las opciones de la línea de comando pueden incluso usar comodines en los nombres de nodos y clústeres:

$ 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

El resultado anterior brinda un resumen de nuestra replicación de MySQL junto con el estado del clúster, el estado, el proveedor, el archivo de configuración, etc. A continuación, puede ver la lista de nodos que se incluyen en este ID de clúster con una vista resumida de los recursos del sistema para cada host, como la cantidad de CPU, la memoria total, el uso de la memoria, el disco de intercambio y las interfaces de red. Toda la información que se muestra se recupera de la base de datos de CMON, no directamente de los nodos reales.

También puede obtener una vista resumida de todas las bases de datos en todos los clústeres:

$ 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 última línea resume que tenemos un total de 5 bases de datos con 125 tablas, 4 de ellas están en nuestro clúster de PostgreSQL.

Para ver un ejemplo completo del uso de las opciones de línea de comandos del clúster s9s, consulte la documentación del clúster s9s.

Supervisión de nodos

Para el monitoreo de nodos, la CLI de s9s tiene características similares con la opción de clúster. Para obtener una vista resumida de todos los nodos, simplemente puede hacer:

$ 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 columna más a la izquierda especifica el tipo de nodo. Para esta implementación, "c" representa el controlador ClusterControl, "p" para PostgreSQL, "m" para MongoDB, "e" para Memcached y s para los nodos genéricos de MySQL. El siguiente es el estado del host:"o" para en línea, " l" para fuera de línea, "f" para nodos fallidos, etc. El siguiente es el rol del nodo en el clúster. Puede ser M para maestro, S para esclavo, C para controlador y - para todo lo demás. Las columnas restantes se explican por sí mismas.

Puede obtener toda la lista consultando la página man de este componente:

$ man s9s-node

A partir de ahí, podemos saltar a estadísticas más detalladas para todos los nodos con el indicador --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: ''

Imprimir gráficos con el cliente s9s también puede ser muy informativo. Esto presenta los datos que el controlador recopiló en varios gráficos. Hay casi 30 gráficos compatibles con esta herramienta que se enumeran aquí y s9s-node los enumera todos. A continuación, se muestra el histograma de carga del servidor de todos los nodos para el ID de clúster 1 recopilados por CMON, directamente desde su terminal:

Es posible configurar la fecha y hora de inicio y finalización. Se pueden ver períodos cortos (como la última hora) o períodos más largos (como una semana o un mes). El siguiente es un ejemplo de visualización de la utilización del disco durante la última hora:

Usando la opción --density, se puede imprimir una vista diferente para cada gráfico. Este gráfico de densidad no muestra la serie temporal, sino la frecuencia con la que se vieron los valores dados (el eje X representa el valor de densidad):

Si el terminal no admite caracteres Unicode, la opción --only-ascii puede desactivarlos:

Los gráficos tienen colores, donde los valores peligrosamente altos, por ejemplo, se muestran en rojo. La lista de nodos se puede filtrar con la opción --nodes, donde puede especificar los nombres de los nodos o usar comodines si es conveniente.

Monitoreo de Procesos

Otro aspecto interesante de la CLI de s9s es que proporciona una lista de procesos de todo el clúster:una "superior" para todos los nodos, todos los procesos fusionados en uno. El siguiente comando ejecuta el comando "superior" en todos los nodos de la base de datos para el ID de clúster 24, ordenados por el mayor consumo de CPU y actualizado continuamente:

$ 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

También hay un indicador --list que devuelve un resultado similar sin actualización continua (similar al comando "ps"):

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

Supervisión de trabajos

Los trabajos son tareas realizadas por el controlador en segundo plano, por lo que la aplicación cliente no necesita esperar hasta que finalice todo el trabajo. ClusterControl ejecuta tareas de administración asignando una ID para cada tarea y permite que el programador interno decida si se pueden ejecutar dos o más trabajos en paralelo. Por ejemplo, se puede ejecutar más de una implementación de clúster simultáneamente, así como otras operaciones de ejecución prolongada, como la copia de seguridad y la carga automática de copias de seguridad en el almacenamiento en la nube.

En cualquier operación de administración, sería útil si pudiéramos monitorear el progreso y el estado de un trabajo específico, como por ejemplo, escalar un nuevo esclavo para nuestra replicación de MySQL. El siguiente comando agrega un nuevo esclavo, 10.0.0.77 para escalar horizontalmente nuestra replicación de MySQL:

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

Luego podemos monitorear el jobID 66992 usando la opción de trabajo:

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

O podemos usar el indicador --wait y obtener una flecha giratoria con barra de progreso:

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

Eso es todo por el suplemento de seguimiento de hoy. Esperamos que pruebe la CLI y obtenga valor de ella. Agrupación feliz