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

Administrar MySQL, MongoDB y PostgreSQL con ChatOps desde Slack

¿Qué es ChatOps?

Hoy en día, hacemos uso de múltiples canales de comunicación para administrar o recibir información de nuestros sistemas, tales como correo electrónico, chat y aplicaciones, entre otros. Si pudiéramos centralizar esto en una o varias posibles aplicaciones diferentes, y mejor aún, si pudiéramos integrarlo con herramientas que actualmente usamos en nuestra organización, seríamos capaces de automatizar procesos, mejorar nuestra dinámica de trabajo y comunicación, teniendo una imagen más clara del estado actual de nuestro sistema. En muchas empresas, Slack u otras herramientas de colaboración se están convirtiendo en el centro y el corazón de los equipos de desarrollo y operaciones.

¿Qué es ChatBot?

Un chatbot es un programa que simula una conversación, recibe entradas realizadas por el usuario y devuelve respuestas en función de su programación.

Se han desarrollado algunos productos con esta tecnología, que nos permiten realizar tareas administrativas, o mantener al equipo actualizado sobre el estado actual de los sistemas.

Esto permite, entre otras cosas, integrar las herramientas de comunicación que usamos a diario con nuestros sistemas.

CCBot - Control de clúster

CCBot es un chatbot que utiliza las API de ClusterControl para administrar y monitorear los clústeres de su base de datos. Podrá implementar nuevos clústeres o configuraciones de replicación, mantener a su equipo actualizado sobre el estado de las bases de datos, así como el estado de cualquier trabajo administrativo (por ejemplo, copias de seguridad o actualizaciones continuas). También puede reiniciar los nodos fallidos, agregar otros nuevos, promover un esclavo a maestro, agregar balanceadores de carga, etc. CCBot es compatible con la mayoría de los principales servicios de chat, como Slack, Flowdock y Hipchat.

CCBot está integrado con la línea de comandos s9s, por lo que tiene varios comandos para usar con esta herramienta.

Notificaciones de ClusterControl a través de Slack

Tenga en cuenta que puede usar Slack para manejar alarmas y notificaciones de ClusterControl. ¿Por qué? Una sala de chat es un buen lugar para discutir incidentes. Ver una alarma real en un canal de Slack facilita discutirla con el equipo, porque todos los miembros del equipo realmente saben lo que se está discutiendo y pueden intervenir.

La principal diferencia entre CCBot y la integración de notificaciones vía Slack es que, con CCBot, el usuario inicia la comunicación mediante un comando específico, generando una respuesta del sistema. Para las notificaciones, ClusterControl genera un evento, por ejemplo, un mensaje sobre la falla de un nodo. Este evento luego se envía a la herramienta que hemos integrado para nuestras notificaciones, por ejemplo, Slack.

Puede revisar esta publicación sobre cómo configurar ClusterControl para enviar notificaciones a Slack.

Después de esto, podemos ver las notificaciones de ClusterControl en nuestro Slack:

Integración de Slack de ClusterControl

Instalación de CCBot

Para instalar CCBot, una vez que hayamos instalado ClusterControl, debemos ejecutar el siguiente script:

$ /var/www/html/clustercontrol/app/tools/install-ccbot.sh

Seleccionamos que adaptador queremos usar, en este blog, seleccionaremos Slack.

-- Supported Hubot Adapters --
1. slack
2. hipchat
3. flowdock
Select the hubot adapter to install [1-3]: 1

Luego nos pedirá cierta información, como un correo electrónico, una descripción, el nombre que le daremos a nuestro bot, el puerto, el token de la API y el canal al que queremos agregarlo.

? Owner (User <[email protected]>)
? Description (A simple helpful robot for your Company)
Enter your bot's name (ccbot):
Enter hubot's http events listening port (8081):
Enter your slack API token:
Enter your slack message room (general):

Para obtener el token API, debemos ir a nuestro Slack -> Aplicaciones (En el lado izquierdo de nuestra ventana de Slack), buscamos Hubot y seleccionamos Instalar.

CCBot Hubot

Ingresamos el Nombre de usuario, que debe coincidir con nuestro nombre de bot.

En la siguiente ventana, podemos ver el token de API a utilizar.

Token de API de CCBot
Enter your slack API token: xoxb-111111111111-XXXXXXXXXXXXXXXXXXXXXXXX
CCBot installation completed!

Finalmente, para poder usar todas las funciones de la línea de comandos del s9s con CCBot, debemos crear un usuario desde ClusterControl:

$ s9s user --create --cmon-user=cmon --group=admins  --controller="https://localhost:9501" --generate-key cmon

Para obtener más información sobre cómo administrar usuarios, consulte la documentación oficial.

Ahora podemos usar nuestro CCBot de Slack.

Aquí tenemos algunos ejemplos de comandos:

$ s9s --help
Ayuda de CCBot

Con este comando podemos ver la ayuda para el s9s CLI.

$ s9s cluster --list --long
Lista de clústeres de CCBot

Con este comando podemos ver una lista de nuestros clústeres.

$ s9s cluster --cluster-id=17 --stat
Estadísticas de clúster de CCBot

Con este comando podemos ver las estadísticas de un clúster, en este caso, el ID de clúster 17.

$ s9s node --list --long
Lista de nodos de CCBot

Con este comando podemos ver una lista de nuestros nodos.

$ s9s job --list
Lista de trabajos de CCBot

Con este comando podemos ver una lista de nuestros trabajos.

$ s9s backup --create --backup-method=mysqldump --cluster-id=16 --nodes=192.168.100.34:3306 --backup-directory=/backup
Copia de seguridad de CCBot

Con este comando podemos crear una copia de seguridad con mysqldump, en el nodo 192.168.100.34. La copia de seguridad se guardará en el directorio /backup.

Ahora veamos algunos ejemplos más complejos:

$ s9s cluster --create --cluster-type=mysqlreplication --nodes="mysql1;mysql2" --vendor="percona" --provider-version="5.7" --template="my.cnf.repl57" --db-admin="root" --db-admin-passwd="root123" --os-user="root" --cluster-name="MySQL1"
CCBot Crear replicación

Con este comando podemos crear una replicación maestro-esclavo de MySQL con Percona para la versión MySQL 5.7.

Replicación de comprobación de CCBot creada

Y podemos comprobar este nuevo grupo.

En la Vista de topología de ClusterControl, podemos verificar nuestra topología actual con un nodo maestro y uno esclavo.

Replicación de vista de topología 1
$ s9s cluster --add-node --nodes=mysql3 --cluster-id=24
CCBot Agregar nodo

Con este comando podemos agregar un nuevo esclavo en nuestro clúster actual.

Replicación de vista de topología 2

Y podemos comprobar nuestra nueva topología en la Vista de topología de ClusterControl.

$ s9s cluster --add-node --cluster-id=24 --nodes="proxysql://proxysql"
CCBot Agregar ProxySQL

Con este comando podemos agregar un nuevo nodo ProxySQL llamado "proxysql" en nuestro clúster actual.

Replicación de vista de topología 3

Y podemos comprobar nuestra nueva topología en la Vista de topología de ClusterControl.

Puede consultar la lista de comandos disponibles en la documentación.
Si intentamos usar CCBot desde un canal de Slack, debemos agregar "@ccbot_name" al comienzo de nuestro comando:

@ccbot s9s backup --create --backup-method=xtrabackupfull --cluster-id=1 --nodes=10.0.0.5:3306 --backup-directory=/storage/backups

CCBot facilita que los equipos administren sus clústeres de manera colaborativa. Está totalmente integrado con las herramientas que utilizan a diario.

Nota

Si tenemos el siguiente error al querer ejecutar el instalador de CCBot en nuestro ClusterControl:

-bash: yo: command not found
Debemos actualizar la versión del paquete nodejs.

Conclusión

Como dijimos anteriormente, existen varias alternativas de ChatBot para diferentes propósitos, incluso podemos crear nuestro propio ChatBot, pero como esta tecnología facilita nuestras tareas y tiene varias ventajas que mencionamos al comienzo de este blog, no todo lo que brilla es oro.

Hay un detalle muy importante a tener en cuenta:la seguridad. Debemos tener mucho cuidado al utilizarlos, y tomar todas las precauciones necesarias para saber qué permitimos hacer, de qué manera, en qué momento, a quién y desde dónde.