Co to jest ChatOps?
Obecnie korzystamy z wielu kanałów komunikacji do zarządzania lub odbierania informacji z naszych systemów, takich jak między innymi poczta e-mail, czat i aplikacje. Gdybyśmy mogli to scentralizować w jednej lub kilku różnych możliwych aplikacjach, a jeszcze lepiej, gdybyśmy mogli zintegrować to z narzędziami, z których obecnie korzystamy w naszej organizacji, bylibyśmy w stanie zautomatyzować procesy, poprawić dynamikę naszej pracy i komunikację, mając wyraźniejszy obraz aktualnego stanu naszego systemu. W wielu firmach Slack lub inne narzędzia do współpracy stają się centrum i sercem zespołów programistycznych i operacyjnych.
Co to jest ChatBot?
Chatbot to program, który symuluje rozmowę, odbiera wpisy wprowadzone przez użytkownika i zwraca odpowiedzi na podstawie jego programowania.
Niektóre produkty zostały opracowane przy użyciu tej technologii, która pozwala nam wykonywać zadania administracyjne lub informuje zespół na bieżąco o aktualnym stanie systemów.
Pozwala to między innymi na zintegrowanie narzędzi komunikacyjnych, których używamy na co dzień, z naszymi systemami.
CCBot — ClusterControl
CCBot to chatbot, który wykorzystuje interfejsy API ClusterControl do zarządzania i monitorowania klastrów baz danych. Będziesz mógł wdrażać nowe klastry lub konfiguracje replikacji, informować zespół na bieżąco o stanie baz danych, a także o statusie wszelkich zadań administracyjnych (np. tworzenie kopii zapasowych lub uaktualnienia kroczące). Możesz także zrestartować uszkodzone węzły, dodać nowe, promować urządzenie podrzędne na nadrzędne, dodać systemy równoważenia obciążenia i tak dalej. CCBot obsługuje większość głównych usług czatu, takich jak Slack, Flowdock i Hipchat.
CCBot jest zintegrowany z wierszem poleceń s9s, więc masz kilka poleceń do użycia z tym narzędziem.
Powiadomienia ClusterControl przez Slack
Pamiętaj, że możesz używać Slacka do obsługi alarmów i powiadomień z ClusterControl. Czemu? Pokój rozmów to dobre miejsce do omówienia incydentów. Zobaczenie rzeczywistego alarmu na kanale Slack ułatwia omówienie go z zespołem, ponieważ wszyscy członkowie zespołu faktycznie wiedzą, o czym mowa i mogą się włączyć.
Główna różnica między CCBot a integracją powiadomień przez Slacka polega na tym, że w CCBot użytkownik inicjuje komunikację za pomocą określonego polecenia, generując odpowiedź z systemu. W przypadku powiadomień ClusterControl generuje zdarzenie, na przykład komunikat o awarii węzła. To zdarzenie jest następnie wysyłane do narzędzia, które zintegrowaliśmy z naszymi powiadomieniami, na przykład Slack.
Możesz przejrzeć ten post, jak skonfigurować ClusterControl, aby wysyłać powiadomienia do Slacka.
Następnie możemy zobaczyć powiadomienia ClusterControl w naszym Slacku:

Instalacja CCBot
Aby zainstalować CCBot, po zainstalowaniu ClusterControl, musimy wykonać następujący skrypt:
$ /var/www/html/clustercontrol/app/tools/install-ccbot.sh
Wybieramy adapter, którego chcemy użyć, na tym blogu wybierzemy Slack.
-- Supported Hubot Adapters --
1. slack
2. hipchat
3. flowdock
Select the hubot adapter to install [1-3]: 1
Następnie poprosi nas o pewne informacje, takie jak e-mail, opis, nazwę, którą nadamy naszemu botowi, port, token API i kanał, do którego chcemy go dodać.
? Owner (User <example@sqldat.com>)
? 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):
Aby uzyskać token API, musimy przejść do naszego Slack -> Aplikacje (po lewej stronie naszego okna Slack), szukamy Hubota i wybieramy Zainstaluj.

Wprowadzamy nazwę użytkownika, która musi odpowiadać nazwie naszego bota.
W następnym oknie możemy zobaczyć token API do użycia.

Enter your slack API token: xoxb-111111111111-XXXXXXXXXXXXXXXXXXXXXXXX
CCBot installation completed!
Wreszcie, aby móc korzystać ze wszystkich funkcji wiersza poleceń s9s z CCBot, musimy utworzyć użytkownika z ClusterControl:
$ s9s user --create --cmon-user=cmon --group=admins --controller="https://localhost:9501" --generate-key cmon
Więcej informacji na temat zarządzania użytkownikami można znaleźć w oficjalnej dokumentacji.
Możemy teraz używać naszego CCBota ze Slacka.
Oto kilka przykładów poleceń:
$ s9s --help

Za pomocą tego polecenia możemy zobaczyć pomoc dla CLI s9s.
$ s9s cluster --list --long

Za pomocą tego polecenia możemy zobaczyć listę naszych klastrów.
$ s9s cluster --cluster-id=17 --stat

Za pomocą tego polecenia możemy zobaczyć statystyki jednego klastra, w tym przypadku identyfikator klastra 17.
$ s9s node --list --long

Za pomocą tego polecenia możemy zobaczyć listę naszych węzłów.
$ s9s job --list

Za pomocą tego polecenia możemy zobaczyć listę naszych zadań.
$ s9s backup --create --backup-method=mysqldump --cluster-id=16 --nodes=192.168.100.34:3306 --backup-directory=/backup

Za pomocą tego polecenia możemy utworzyć kopię zapasową za pomocą mysqldump, w węźle 192.168.100.34. Kopia zapasowa zostanie zapisana w katalogu /backup.
Zobaczmy teraz kilka bardziej złożonych przykładów:
$ 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"

Za pomocą tego polecenia możemy utworzyć replikację MySQL Master-Slave z Percona dla wersji MySQL 5.7.

I możemy sprawdzić ten nowy klaster.
W widoku topologii ClusterControl możemy sprawdzić naszą aktualną topologię z jednym węzłem głównym i jednym węzłem podrzędnym.

$ s9s cluster --add-node --nodes=mysql3 --cluster-id=24

Za pomocą tego polecenia możemy dodać nowe urządzenie podrzędne w naszym bieżącym klastrze.

I możemy sprawdzić naszą nową topologię w widoku topologii ClusterControl.
$ s9s cluster --add-node --cluster-id=24 --nodes="proxysql://proxysql"

Za pomocą tego polecenia możemy dodać nowy węzeł ProxySQL o nazwie "proxysql" w naszym obecnym klastrze.

I możemy sprawdzić naszą nową topologię w widoku topologii ClusterControl.
Możesz sprawdzić listę dostępnych poleceń w dokumentacji.
Jeśli próbujemy użyć CCBot z kanału Slack, musimy dodać "@ccbot_name" na początku naszego polecenia:
@ccbot s9s backup --create --backup-method=xtrabackupfull --cluster-id=1 --nodes=10.0.0.5:3306 --backup-directory=/storage/backups
CCBot ułatwia zespołom zarządzanie klastrami w sposób oparty na współpracy. Jest w pełni zintegrowany z narzędziami, z których korzystają na co dzień.
Uwaga
Jeśli podczas próby uruchomienia instalatora CCBot w naszym ClusterControl wystąpi następujący błąd:
-bash: yo: command not found
Musimy zaktualizować wersję pakietu nodejs. Wniosek
Jak powiedzieliśmy wcześniej, istnieje kilka alternatyw ChatBota do różnych celów, możemy nawet stworzyć własnego Chatbota, ale ponieważ ta technologia ułatwia nasze zadania i ma kilka zalet, o których wspomnieliśmy na początku tego bloga, nie wszystko, co świeci, jest złotem.
Należy pamiętać o bardzo ważnym szczególe - bezpieczeństwie. Musimy być bardzo ostrożni podczas ich używania i podjąć wszelkie niezbędne środki ostrożności, aby wiedzieć, na co pozwalamy, w jaki sposób, w jakim momencie, komu i skąd.