O que é ChatOps?
Atualmente, fazemos uso de múltiplos canais de comunicação para gerenciar ou receber informações de nossos sistemas, como e-mail, chat e aplicativos entre outros. Se pudéssemos centralizar isso em uma ou apenas algumas aplicações diferentes possíveis, e melhor ainda, se pudéssemos integrá-lo com ferramentas que usamos atualmente em nossa organização, poderíamos automatizar processos, melhorar nossa dinâmica de trabalho e comunicação, tendo uma imagem mais clara do estado atual do nosso sistema. Em muitas empresas, o Slack ou outras ferramentas de colaboração estão se tornando o centro e o coração das equipes de desenvolvimento e operações.
O que é o ChatBot?
Um chatbot é um programa que simula uma conversa, recebe entradas feitas pelo usuário e retorna respostas com base em sua programação.
Alguns produtos foram desenvolvidos com essa tecnologia, que nos permitem realizar tarefas administrativas, ou manter a equipe atualizada sobre o estado atual dos sistemas.
Isso permite, entre outras coisas, integrar as ferramentas de comunicação que usamos diariamente, com nossos sistemas.
CCBot - ClusterControl
CCBot é um chatbot que usa as APIs ClusterControl para gerenciar e monitorar seus clusters de banco de dados. Você poderá implantar novos clusters ou configurações de replicação, manter sua equipe atualizada sobre o status dos bancos de dados, bem como o status de quaisquer tarefas administrativas (por exemplo, backups ou atualizações contínuas). Você também pode reiniciar nós com falha, adicionar novos, promover um escravo a mestre, adicionar balanceadores de carga e assim por diante. O CCBot suporta a maioria dos principais serviços de bate-papo, como Slack, Flowdock e Hipchat.
O CCBot está integrado com a linha de comando s9s, então você tem vários comandos para usar com esta ferramenta.
Notificações do ClusterControl via Slack
Observe que você pode usar o Slack para lidar com alarmes e notificações do ClusterControl. Por quê? Uma sala de bate-papo é um bom lugar para discutir incidentes. Ver um alarme real em um canal do Slack facilita a discussão com a equipe, porque todos os membros da equipe realmente sabem o que está sendo discutido e podem participar.
A principal diferença entre o CCBot e a integração de notificações via Slack é que, com o CCBot, o usuário inicia a comunicação por meio de um comando específico, gerando uma resposta do sistema. Para notificações, o ClusterControl gera um evento, por exemplo, uma mensagem sobre uma falha de nó. Este evento é então enviado para a ferramenta que integramos para nossas notificações, por exemplo, Slack.
Você pode revisar esta postagem sobre como configurar o ClusterControl para enviar notificações ao Slack.
Depois disso, podemos ver as notificações do ClusterControl em nosso Slack:
Integração do ClusterControl Slack
Instalação do CCBot
Para instalar o CCBot, uma vez instalado o ClusterControl, devemos executar o seguinte script:
$ /var/www/html/clustercontrol/app/tools/install-ccbot.sh
Selecionamos qual adaptador queremos usar, neste blog, selecionaremos Slack.
-- Supported Hubot Adapters --
1. slack
2. hipchat
3. flowdock
Select the hubot adapter to install [1-3]: 1
Em seguida, ele nos solicitará algumas informações, como um email, uma descrição, o nome que daremos ao nosso bot, a porta, o token da API e o canal ao qual queremos adicioná-lo.
? 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 obter o token da API, devemos ir ao nosso Slack -> Apps (no lado esquerdo da nossa janela do Slack), procuramos por Hubot e selecionamos Instalar.
CCBot Hub
Inserimos o nome de usuário, que deve corresponder ao nome do nosso bot.
Na próxima janela, podemos ver o token da API a ser usado.
Token da API CCBot
Enter your slack API token: xoxb-111111111111-XXXXXXXXXXXXXXXXXXXXXXXX
CCBot installation completed!
Finalmente, para poder usar todas as funções de linha de comando do s9s com o CCBot, devemos criar um usuário do ClusterControl:
$ s9s user --create --cmon-user=cmon --group=admins --controller="https://localhost:9501" --generate-key cmon
Para mais informações sobre como gerenciar usuários, consulte a documentação oficial.
Agora podemos usar nosso CCBot do Slack.
Aqui temos alguns exemplos de comandos:
$ s9s --help
Ajuda do CCBot Com este comando podemos ver a ajuda para a CLI do s9s.
$ s9s cluster --list --long
Lista de clusters CCBot Com este comando podemos ver uma lista de nossos clusters.
$ s9s cluster --cluster-id=17 --stat
Estatística do cluster CCBot Com este comando podemos ver as estatísticas de um cluster, neste caso cluster id 17.
$ s9s node --list --long
Lista de nós do CCBot Com este comando podemos ver uma lista de nossos nós.
$ s9s job --list
Lista de trabalhos do CCBot Com este comando podemos ver uma lista de nossos trabalhos.
$ s9s backup --create --backup-method=mysqldump --cluster-id=16 --nodes=192.168.100.34:3306 --backup-directory=/backup
CBot Backup Com este comando podemos criar um backup com mysqldump, no nó 192.168.100.34. O backup será salvo no diretório /backup.
Agora vamos ver alguns exemplos mais complexos:
$ 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 Criar replicação Com este comando podemos criar uma replicação MySQL Master-Slave com Percona para MySQL versão 5.7.
Replicação de verificação do CCBot criada
E podemos verificar este novo cluster.
No ClusterControl Topology View, podemos verificar nossa topologia atual com um nó mestre e um nó escravo.
Topology View Replication 1
$ s9s cluster --add-node --nodes=mysql3 --cluster-id=24
CCBot Adicionar nó Com este comando podemos adicionar um novo escravo em nosso cluster atual.
Topology View Replication 2
E podemos verificar nossa nova topologia em ClusterControl Topology View.
$ s9s cluster --add-node --cluster-id=24 --nodes="proxysql://proxysql"
CCBot Adicionar ProxySQL Com este comando, podemos adicionar um novo nó ProxySQL chamado "proxysql" em nosso cluster atual.
Topology View Replication 3
E podemos verificar nossa nova topologia em ClusterControl Topology View.
Você pode conferir a lista de comandos disponíveis na documentação.
Se tentarmos usar o CCBot de um canal do Slack, devemos adicionar "@ccbot_name" no início do nosso comando:
@ccbot s9s backup --create --backup-method=xtrabackupfull --cluster-id=1 --nodes=10.0.0.5:3306 --backup-directory=/storage/backups
O CCBot torna mais fácil para as equipes gerenciarem seus clusters de forma colaborativa. É totalmente integrado com as ferramentas que eles usam diariamente.
Observação
Se tivermos o seguinte erro ao querer executar o instalador do CCBot em nosso ClusterControl:
-bash: yo: command not found
Devemos atualizar a versão do pacote nodejs. Conclusão
Como dissemos anteriormente, existem várias alternativas de ChatBot para diferentes finalidades, podemos até criar nosso próprio ChatBot, mas como essa tecnologia facilita nossas tarefas e possui diversas vantagens que mencionamos no início deste blog, nem tudo que brilha é ouro.
Há um detalhe muito importante a ter em mente - segurança. Devemos ter muito cuidado ao usá-los, e tomar todas as precauções necessárias para saber o que permitimos fazer, de que forma, em que momento, para quem e de onde.