MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Quản lý MySQL, MongoDB &PostgreSQL với ChatOps từ Slack

ChatOps là gì?

Ngày nay, chúng tôi sử dụng nhiều kênh liên lạc để quản lý hoặc nhận thông tin từ hệ thống của mình, chẳng hạn như email, trò chuyện và các ứng dụng khác. Nếu chúng tôi có thể tập trung điều này trong một hoặc chỉ một vài ứng dụng có thể khác và thậm chí tốt hơn, nếu chúng tôi có thể tích hợp nó với các công cụ mà chúng tôi hiện đang sử dụng trong tổ chức của mình, chúng tôi sẽ có thể tự động hóa các quy trình, cải thiện động lực làm việc và giao tiếp, có một bức tranh rõ ràng hơn về tình trạng hiện tại của hệ thống của chúng tôi. Ở nhiều công ty, Slack hoặc các công cụ cộng tác khác đang trở thành trung tâm và trái tim của các nhóm phát triển và hoạt động.

ChatBot là gì?

Chatbot là một chương trình mô phỏng một cuộc hội thoại, nhận các mục nhập do người dùng thực hiện và trả về câu trả lời dựa trên lập trình của nó.

Một số sản phẩm đã được phát triển với công nghệ này, cho phép chúng tôi thực hiện các tác vụ quản trị hoặc giúp nhóm cập nhật về trạng thái hiện tại của hệ thống.

Điều này cho phép, trong số những thứ khác, tích hợp các công cụ giao tiếp mà chúng tôi sử dụng hàng ngày với hệ thống của chúng tôi.

CCBot - ClusterControl

CCBot là một chatbot sử dụng các API ClusterControl để quản lý và giám sát các cụm cơ sở dữ liệu của bạn. Bạn sẽ có thể triển khai các cụm mới hoặc thiết lập nhân rộng, giữ cho nhóm của bạn được cập nhật về trạng thái của cơ sở dữ liệu cũng như trạng thái của bất kỳ công việc quản trị nào (ví dụ:sao lưu hoặc nâng cấp luân phiên). Bạn cũng có thể khởi động lại các nút bị lỗi, thêm các nút mới, thăng cấp nô lệ để làm chủ, thêm bộ cân bằng tải, v.v. CCBot hỗ trợ hầu hết các dịch vụ trò chuyện chính như Slack, Flowdock và Hipchat.

CCBot được tích hợp với dòng lệnh s9s, vì vậy bạn có một số lệnh để sử dụng với công cụ này.

ClusterControl Thông báo qua Slack

Lưu ý rằng bạn có thể sử dụng Slack để xử lý các cảnh báo và thông báo từ ClusterControl. Tại sao? Một phòng trò chuyện là một nơi tốt để thảo luận về các sự cố. Nhìn thấy một cảnh báo thực tế trong kênh Slack giúp bạn dễ dàng thảo luận với nhóm vì tất cả các thành viên trong nhóm thực sự biết những gì đang được thảo luận và có thể kêu gọi.

Sự khác biệt chính giữa CCBot và việc tích hợp thông báo qua Slack là, với CCBot, người dùng bắt đầu giao tiếp thông qua một lệnh cụ thể, tạo ra phản hồi từ hệ thống. Đối với các thông báo, ClusterControl tạo ra một sự kiện, ví dụ, một thông báo về sự cố của nút. Sự kiện này sau đó được gửi đến công cụ mà chúng tôi đã tích hợp cho các thông báo của mình, chẳng hạn như Slack.

Bạn có thể xem lại bài đăng này về cách định cấu hình ClusterControl để gửi thông báo tới Slack.

Sau đó, chúng ta có thể thấy thông báo ClusterControl trong Slack của mình:

Tích hợp ClusterControl Slack

Cài đặt CCBot

Để cài đặt CCBot, khi chúng ta đã cài đặt ClusterControl, chúng ta phải thực thi đoạn mã sau:

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

Chúng tôi chọn bộ điều hợp mà chúng tôi muốn sử dụng, trong blog này, chúng tôi sẽ chọn Slack.

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

Sau đó, nó sẽ yêu cầu chúng tôi cung cấp một số thông tin, chẳng hạn như email, mô tả, tên mà chúng tôi sẽ đặt cho bot của mình, cổng, mã thông báo API và kênh mà chúng tôi muốn thêm nó vào.

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

Để có được mã thông báo API, chúng ta phải đi tới Slack -> Ứng dụng (Ở bên trái cửa sổ Slack của chúng ta), chúng ta tìm Hubot và chọn Cài đặt.

CCBot Hubot

Chúng tôi nhập Tên người dùng, tên này phải khớp với tên bot của chúng tôi.

Trong cửa sổ tiếp theo, chúng ta có thể thấy mã thông báo API để sử dụng.

Mã thông báo API CCBot
Enter your slack API token: xoxb-111111111111-XXXXXXXXXXXXXXXXXXXXXXXX
CCBot installation completed!

Cuối cùng, để có thể sử dụng tất cả các chức năng dòng lệnh s9s với CCBot, chúng ta phải tạo một người dùng từ ClusterControl:

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

Để biết thêm thông tin về cách quản lý người dùng, vui lòng xem tài liệu chính thức.

Bây giờ chúng tôi có thể sử dụng CCBot của mình từ Slack.

Dưới đây chúng tôi có một số ví dụ về lệnh:

$ s9s --help
CCBot Help

Với lệnh này, chúng ta có thể thấy trợ giúp cho CLI s9s.

$ s9s cluster --list --long
Danh sách cụm CCBot

Với lệnh này, chúng ta có thể xem danh sách các cụm của mình.

$ s9s cluster --cluster-id=17 --stat
Thống kê cụm CCBot

Với lệnh này, chúng ta có thể xem số liệu thống kê của một cụm, trong trường hợp này là id cụm 17.

$ s9s node --list --long
Danh sách nút CCBot

Với lệnh này, chúng ta có thể xem danh sách các nút của mình.

$ s9s job --list
Danh sách công việc CCBot

Với lệnh này, chúng ta có thể xem danh sách các công việc của mình.

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

Với lệnh này, chúng ta có thể tạo một bản sao lưu với mysqldump, trong nút 192.168.100.34. Bản sao lưu sẽ được lưu trong thư mục / backup.

Bây giờ chúng ta hãy xem một số ví dụ phức tạp hơn:

$ 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 Tạo bản sao

Với lệnh này, chúng ta có thể tạo Bản sao MySQL Master-Slave với Percona cho phiên bản MySQL 5.7.

Đã tạo bản sao kiểm tra CCBot

Và chúng tôi có thể kiểm tra cụm mới này.

Trong Dạng xem cấu trúc liên kết ClusterControl, chúng ta có thể kiểm tra cấu trúc liên kết hiện tại của mình với một nút chính và một nút phụ.

Topo View Replication 1
$ s9s cluster --add-node --nodes=mysql3 --cluster-id=24
Nút thêm CCBot

Với lệnh này, chúng tôi có thể thêm một nô lệ mới trong cụm hiện tại của chúng tôi.

Bản sao chế độ xem cấu trúc liên kết 2

Và chúng tôi có thể kiểm tra cấu trúc liên kết mới của mình trong Chế độ xem cấu trúc liên kết ClusterControl.

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

Với lệnh này, chúng tôi có thể thêm một nút ProxySQL mới có tên "proxysql" trong cụm hiện tại của chúng tôi.

Bản sao chế độ xem cấu trúc liên kết 3

Và chúng tôi có thể kiểm tra cấu trúc liên kết mới của mình trong Chế độ xem cấu trúc liên kết ClusterControl.

Bạn có thể kiểm tra danh sách các lệnh có sẵn trong tài liệu.
Nếu chúng tôi cố gắng sử dụng CCBot từ kênh Slack, chúng tôi phải thêm "@ccbot_name" vào đầu lệnh của chúng tôi:

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

CCBot giúp các nhóm quản lý các cụm của họ theo cách cộng tác dễ dàng hơn. Nó được tích hợp đầy đủ với các công cụ mà họ sử dụng hàng ngày.

Lưu ý

Nếu chúng tôi gặp lỗi sau khi muốn chạy trình cài đặt CCBot trong ClusterControl của chúng tôi:

-bash: yo: command not found
Chúng tôi phải cập nhật phiên bản của gói nodejs.

Kết luận

Như chúng tôi đã nói trước đây, có một số lựa chọn thay thế ChatBot cho các mục đích khác nhau, chúng tôi thậm chí có thể tạo ChatBot của riêng mình, nhưng vì công nghệ này tạo điều kiện thuận lợi cho các công việc của chúng tôi và có một số lợi thế mà chúng tôi đã đề cập ở đầu blog này, không phải mọi thứ tỏa sáng đều là vàng.

Có một chi tiết rất quan trọng cần ghi nhớ - bảo mật. Chúng ta phải rất cẩn thận khi sử dụng chúng và thực hiện tất cả các biện pháp phòng ngừa cần thiết để biết chúng ta được phép làm gì, theo cách nào, vào thời điểm nào, cho ai và từ đâu.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. nhận đối tượng mongodb _id sau khi upert bằng php

  2. Cách định cấu hình tên bộ sưu tập MongoDb cho một lớp trong dữ liệu mùa xuân

  3. Việc áp dụng chỉ mục 2dsphere trên giản đồ mongoose có buộc phải yêu cầu trường vị trí không?

  4. MongoDB $ sinh

  5. runCommand tương đương cho nodejs-native-mongodb