MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Verwalten von MySQL, MongoDB und PostgreSQL mit ChatOps von Slack

Was ist ChatOps?

Heutzutage nutzen wir mehrere Kommunikationskanäle, um Informationen von unseren Systemen zu verwalten oder zu erhalten, wie unter anderem E-Mail, Chat und Anwendungen. Wenn wir dies in einer oder nur wenigen möglichen Anwendungen zentralisieren könnten, und noch besser, wenn wir es mit Tools integrieren könnten, die wir derzeit in unserer Organisation verwenden, wären wir in der Lage, Prozesse zu automatisieren, unsere Arbeitsdynamik und Kommunikation zu verbessern ein klareres Bild vom aktuellen Zustand unseres Systems. In vielen Unternehmen werden Slack oder andere Collaboration-Tools zum Mittelpunkt und Herzstück der Entwicklungs- und Betriebsteams.

Was ist ChatBot?

Ein Chatbot ist ein Programm, das eine Konversation simuliert, Eingaben des Benutzers entgegennimmt und Antworten basierend auf seiner Programmierung zurückgibt.

Einige Produkte wurden mit dieser Technologie entwickelt, die es uns ermöglichen, administrative Aufgaben zu erledigen oder das Team über den aktuellen Status der Systeme auf dem Laufenden zu halten.

Dies ermöglicht unter anderem die Integration der Kommunikationstools, die wir täglich verwenden, in unsere Systeme.

CCBot - ClusterControl

CCBot ist ein Chatbot, der die ClusterControl-APIs verwendet, um Ihre Datenbank-Cluster zu verwalten und zu überwachen. Sie können neue Cluster oder Replikations-Setups bereitstellen, Ihr Team über den Status der Datenbanken sowie über den Status aller Verwaltungsaufgaben (z. B. Backups oder fortlaufende Upgrades) auf dem Laufenden halten. Sie können auch ausgefallene Knoten neu starten, neue hinzufügen, einen Slave zum Master hochstufen, Load Balancer hinzufügen und so weiter. CCBot unterstützt die meisten großen Chat-Dienste wie Slack, Flowdock und Hipchat.

CCBot ist in die s9s-Befehlszeile integriert, sodass Sie mit diesem Tool mehrere Befehle verwenden können.

ClusterControl-Benachrichtigungen über Slack

Beachten Sie, dass Sie Slack verwenden können, um Alarme und Benachrichtigungen von ClusterControl zu verarbeiten. Wieso den? Ein Chatroom ist ein guter Ort, um Vorfälle zu besprechen. Wenn Sie einen tatsächlichen Alarm in einem Slack-Kanal sehen, ist es einfach, ihn mit dem Team zu besprechen, da alle Teammitglieder tatsächlich wissen, was besprochen wird, und sich einschalten können.

Der Hauptunterschied zwischen CCBot und der Integration von Benachrichtigungen über Slack besteht darin, dass der Benutzer bei CCBot die Kommunikation über einen bestimmten Befehl initiiert und eine Antwort vom System generiert. Für Benachrichtigungen generiert ClusterControl ein Ereignis, beispielsweise eine Meldung über einen Knotenausfall. Dieses Ereignis wird dann an das Tool gesendet, das wir für unsere Benachrichtigungen integriert haben, z. B. Slack.

In diesem Beitrag erfahren Sie, wie Sie ClusterControl konfigurieren, um Benachrichtigungen an Slack zu senden.

Danach können wir ClusterControl-Benachrichtigungen in unserem Slack sehen:

ClusterControl-Slack-Integration

CCBot-Installation

Um CCBot zu installieren, müssen wir nach der Installation von ClusterControl das folgende Skript ausführen:

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

Wir wählen aus, welchen Adapter wir verwenden möchten, in diesem Blog wählen wir Slack.

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

Anschließend werden wir nach einigen Informationen gefragt, z. B. nach einer E-Mail, einer Beschreibung, dem Namen, den wir unserem Bot geben, dem Port, dem API-Token und dem Kanal, zu dem wir ihn hinzufügen möchten.

? 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):

Um das API-Token zu erhalten, müssen wir zu unserem Slack -> Apps gehen (auf der linken Seite unseres Slack-Fensters), wir suchen nach Hubot und wählen Installieren.

CCBot Hubot

Wir geben den Benutzernamen ein, der mit unserem Bot-Namen übereinstimmen muss.

Im nächsten Fenster sehen wir das zu verwendende API-Token.

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

Um schließlich alle s9s-Befehlszeilenfunktionen mit CCBot verwenden zu können, müssen wir einen Benutzer von ClusterControl erstellen:

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

Weitere Informationen zum Verwalten von Benutzern finden Sie in der offiziellen Dokumentation.

Wir können jetzt unseren CCBot von Slack verwenden.

Hier haben wir einige Beispiele für Befehle:

$ s9s --help
CCBot-Hilfe

Mit diesem Befehl können wir die Hilfe für die s9s-CLI sehen.

$ s9s cluster --list --long
CCBot-Clusterliste

Mit diesem Befehl können wir eine Liste unserer Cluster sehen.

$ s9s cluster --cluster-id=17 --stat
CCBot-Clusterstatistik

Mit diesem Befehl können wir die Statistiken eines Clusters sehen, in diesem Fall Cluster-ID 17.

$ s9s node --list --long
CCBot-Knotenliste

Mit diesem Befehl können wir eine Liste unserer Knoten sehen.

$ s9s job --list
CCBot-Auftragsliste

Mit diesem Befehl können wir eine Liste unserer Jobs sehen.

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

Mit diesem Befehl können wir mit mysqldump ein Backup im Knoten 192.168.100.34 erstellen. Das Backup wird im Verzeichnis /backup gespeichert.

Sehen wir uns nun einige komplexere Beispiele an:

$ 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-Replikation erstellen

Mit diesem Befehl können wir eine MySQL-Master-Slave-Replikation mit Percona für die MySQL-Version 5.7 erstellen.

CCBot-Prüfreplikation erstellt

Und wir können diesen neuen Cluster überprüfen.

In der ClusterControl-Topologieansicht können wir unsere aktuelle Topologie mit einem Master- und einem Slave-Knoten überprüfen.

Topology View Replication 1
$ s9s cluster --add-node --nodes=mysql3 --cluster-id=24
CCBot-Knoten hinzufügen

Mit diesem Befehl können wir unserem aktuellen Cluster einen neuen Slave hinzufügen.

Topologieansichtsreplikation 2

Und wir können unsere neue Topologie in der ClusterControl-Topologieansicht überprüfen.

$ s9s cluster --add-node --cluster-id=24 --nodes="proxysql://proxysql"
CCBot fügt ProxySQL hinzu

Mit diesem Befehl können wir einen neuen ProxySQL-Knoten namens „proxysql“ in unserem aktuellen Cluster hinzufügen.

Topologieansichtsreplikation 3

Und wir können unsere neue Topologie in der ClusterControl-Topologieansicht überprüfen.

Sie können die Liste der verfügbaren Befehle in der Dokumentation einsehen.
Wenn wir versuchen, CCBot von einem Slack-Kanal aus zu verwenden, müssen wir "@ccbot_name" am Anfang unseres Befehls hinzufügen:

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

CCBot erleichtert Teams die gemeinsame Verwaltung ihrer Cluster. Es ist vollständig in die Tools integriert, die sie täglich verwenden.

Hinweis

Wenn wir den folgenden Fehler haben, wenn wir das CCBot-Installationsprogramm in unserem ClusterControl ausführen möchten:

-bash: yo: command not found
Wir müssen die Version des nodejs-Pakets aktualisieren.

Schlussfolgerung

Wie wir bereits gesagt haben, gibt es mehrere ChatBot-Alternativen für verschiedene Zwecke, wir können sogar unseren eigenen ChatBot erstellen, aber da diese Technologie unsere Aufgaben erleichtert und mehrere Vorteile hat, die wir zu Beginn dieses Blogs erwähnt haben, ist nicht alles Gold, was glänzt.

Es gibt ein sehr wichtiges Detail, das Sie beachten sollten - die Sicherheit. Wir müssen sehr vorsichtig sein, wenn wir sie verwenden, und alle notwendigen Vorkehrungen treffen, um zu wissen, was wir auf welche Weise, zu welchem ​​​​Zeitpunkt, wem und von wo aus tun dürfen.