Qu'est-ce que ChatOps ?
De nos jours, nous utilisons plusieurs canaux de communication pour gérer ou recevoir des informations de nos systèmes, tels que le courrier électronique, le chat et les applications, entre autres. Si nous pouvions centraliser cela dans une ou quelques applications différentes possibles, et mieux encore, si nous pouvions l'intégrer aux outils que nous utilisons actuellement dans notre organisation, nous serions en mesure d'automatiser les processus, d'améliorer notre dynamique de travail et de communication, d'avoir une image plus claire de l'état actuel de notre système. Dans de nombreuses entreprises, Slack ou d'autres outils de collaboration deviennent le centre et le cœur des équipes de développement et d'exploitation.
Qu'est-ce que ChatBot ?
Un chatbot est un programme qui simule une conversation, reçoit des entrées faites par l'utilisateur et renvoie des réponses basées sur sa programmation.
Certains produits ont été développés avec cette technologie, qui nous permettent d'effectuer des tâches administratives ou de tenir l'équipe informée de l'état actuel des systèmes.
Cela permet, entre autres, d'intégrer les outils de communication que nous utilisons quotidiennement, avec nos systèmes.
CCBot – ClusterControl
CCBot est un chatbot qui utilise les API ClusterControl pour gérer et surveiller vos clusters de bases de données. Vous pourrez déployer de nouveaux clusters ou configurations de réplication, tenir votre équipe informée de l'état des bases de données ainsi que de l'état de toutes les tâches administratives (par exemple, les sauvegardes ou les mises à niveau continues). Vous pouvez également redémarrer les nœuds défaillants, en ajouter de nouveaux, promouvoir un esclave en maître, ajouter des équilibreurs de charge, etc. CCBot prend en charge la plupart des principaux services de chat comme Slack, Flowdock et Hipchat.
CCBot est intégré à la ligne de commande s9s, vous avez donc plusieurs commandes à utiliser avec cet outil.
Notifications de contrôle de cluster via Slack
Notez que vous pouvez utiliser Slack pour gérer les alarmes et les notifications de ClusterControl. Pourquoi? Un salon de discussion est un bon endroit pour discuter des incidents. Voir une alarme réelle dans un canal Slack facilite la discussion avec l'équipe, car tous les membres de l'équipe savent réellement de quoi il s'agit et peuvent intervenir.
La principale différence entre CCBot et l'intégration des notifications via Slack est que, avec CCBot, l'utilisateur initie la communication via une commande spécifique, générant une réponse du système. Pour les notifications, ClusterControl génère un événement, par exemple, un message concernant une panne de nœud. Cet événement est ensuite envoyé à l'outil que nous avons intégré pour nos notifications, par exemple, Slack.
Vous pouvez consulter cet article sur la configuration de ClusterControl afin d'envoyer des notifications à Slack.
Après cela, nous pouvons voir les notifications de ClusterControl dans notre Slack :
Intégration de ClusterControl SlackInstallation CCBot
Pour installer CCBot, une fois que nous avons installé ClusterControl, nous devons exécuter le script suivant :
$ /var/www/html/clustercontrol/app/tools/install-ccbot.sh
Nous sélectionnons l'adaptateur que nous voulons utiliser, dans ce blog, nous sélectionnerons Slack.
-- Supported Hubot Adapters --
1. slack
2. hipchat
3. flowdock
Select the hubot adapter to install [1-3]: 1
Il nous demandera alors quelques informations, comme un email, une description, le nom que nous donnerons à notre bot, le port, le jeton API et le canal auquel nous voulons l'ajouter.
? 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):
Pour obtenir le jeton API, nous devons aller dans notre Slack -> Applications (Sur le côté gauche de notre fenêtre Slack), nous recherchons Hubot et sélectionnons Installer.
CCBot HubotNous entrons le nom d'utilisateur, qui doit correspondre au nom de notre bot.
Dans la fenêtre suivante, nous pouvons voir le jeton API à utiliser.
Jeton API CCBotEnter your slack API token: xoxb-111111111111-XXXXXXXXXXXXXXXXXXXXXXXX
CCBot installation completed!
Enfin, pour pouvoir utiliser toutes les fonctions de ligne de commande s9s avec CCBot, nous devons créer un utilisateur depuis ClusterControl :
$ s9s user --create --cmon-user=cmon --group=admins --controller="https://localhost:9501" --generate-key cmon
Pour plus d'informations sur la gestion des utilisateurs, veuillez consulter la documentation officielle.
Nous pouvons maintenant utiliser notre CCBot de Slack.
Voici quelques exemples de commandes :
$ s9s --help
Aide CCBot Avec cette commande, nous pouvons voir l'aide de la CLI s9s.
$ s9s cluster --list --long
Liste des clusters CCBot Avec cette commande, nous pouvons voir une liste de nos clusters.
$ s9s cluster --cluster-id=17 --stat
Statistiques du cluster CCBot Avec cette commande, nous pouvons voir les statistiques d'un cluster, dans ce cas l'identifiant de cluster 17.
$ s9s node --list --long
Liste des nœuds CCBot Avec cette commande, nous pouvons voir une liste de nos nœuds.
$ s9s job --list
Liste des tâches CCBot Avec cette commande, nous pouvons voir une liste de nos travaux.
$ s9s backup --create --backup-method=mysqldump --cluster-id=16 --nodes=192.168.100.34:3306 --backup-directory=/backup
Sauvegarde CCBot Avec cette commande, nous pouvons créer une sauvegarde avec mysqldump, dans le nœud 192.168.100.34. La sauvegarde sera enregistrée dans le répertoire /backup.
Voyons maintenant quelques exemples plus complexes :
$ 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 Créer une réplication Avec cette commande, nous pouvons créer une réplication MySQL maître-esclave avec Percona pour la version MySQL 5.7.
Réplication de vérification CCBot crééeEt nous pouvons vérifier ce nouveau cluster.
Dans ClusterControl Topology View, nous pouvons vérifier notre topologie actuelle avec un nœud maître et un nœud esclave.
Réplication de la vue topologique 1$ s9s cluster --add-node --nodes=mysql3 --cluster-id=24
CCBot Ajouter un nœud Avec cette commande, nous pouvons ajouter un nouvel esclave dans notre cluster actuel.
Réplication de la vue topologique 2Et nous pouvons vérifier notre nouvelle topologie dans ClusterControl Topology View.
$ s9s cluster --add-node --cluster-id=24 --nodes="proxysql://proxysql"
CCBot Ajouter ProxySQL Avec cette commande, nous pouvons ajouter un nouveau nœud ProxySQL nommé "proxysql" dans notre cluster actuel.
Réplication de vue topologique 3Et nous pouvons vérifier notre nouvelle topologie dans ClusterControl Topology View.
Vous pouvez consulter la liste des commandes disponibles dans la documentation.
Si nous essayons d'utiliser CCBot depuis un canal Slack, nous devons ajouter "@ccbot_name" au début de notre commande :
@ccbot s9s backup --create --backup-method=xtrabackupfull --cluster-id=1 --nodes=10.0.0.5:3306 --backup-directory=/storage/backups
CCBot permet aux équipes de gérer plus facilement leurs clusters de manière collaborative. Il est entièrement intégré aux outils qu'ils utilisent au quotidien.
Remarque
Si nous avons l'erreur suivante lorsque nous voulons exécuter le programme d'installation de CCBot dans notre ClusterControl :
-bash: yo: command not found
Nous devons mettre à jour la version du package nodejs. Conclusion
Comme nous l'avons dit précédemment, il existe plusieurs alternatives ChatBot à des fins différentes, nous pouvons même créer notre propre ChatBot, mais comme cette technologie facilite nos tâches et présente plusieurs avantages que nous avons mentionnés au début de ce blog, tout ce qui brille n'est pas de l'or.
Il y a un détail très important à garder à l'esprit :la sécurité. Il faut être très prudent lors de leur utilisation, et prendre toutes les précautions nécessaires pour savoir ce que l'on permet de faire, de quelle manière, à quel moment, à qui et d'où.