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

Cách giám sát máy chủ cơ sở dữ liệu của bạn bằng ClusterControl CLI

Làm thế nào bạn muốn hợp nhất quy trình "trên cùng" cho tất cả 5 nút cơ sở dữ liệu của mình và sắp xếp theo mức sử dụng CPU chỉ bằng một lệnh một lớp? Vâng, bạn đọc nó đúng! Làm thế nào về đồ thị tương tác hiển thị trong giao diện đầu cuối? Chúng tôi đã giới thiệu ứng dụng khách CLI cho ClusterControl có tên là s9s khoảng một năm trước và nó là một bổ sung tuyệt vời cho giao diện web. Nó cũng là mã nguồn mở ..

Trong bài đăng trên blog này, chúng tôi sẽ chỉ cho bạn cách bạn có thể giám sát cơ sở dữ liệu của mình bằng cách sử dụng thiết bị đầu cuối và CLI s9s.

Giới thiệu về s9s, CLI ClusterControl

ClusterControl CLI (hoặc s9s hoặc s9s CLI), là một dự án mã nguồn mở và gói tùy chọn được giới thiệu với ClusterControl phiên bản 1.4.1. Nó là một công cụ dòng lệnh để tương tác, kiểm soát và quản lý cơ sở hạ tầng cơ sở dữ liệu của bạn bằng cách sử dụng ClusterControl. Dự án dòng lệnh s9s là mã nguồn mở và có thể được tìm thấy trên GitHub.

Bắt đầu từ phiên bản 1.4.1, tập lệnh trình cài đặt sẽ tự động cài đặt gói (s9s-tools) trên nút ClusterControl.

Một số điều kiện tiên quyết. Để bạn chạy CLI của s9s-tools, điều sau phải đúng:

  • Bộ điều khiển ClusterControl đang chạy (cmon).
  • ứng dụng khách s9s, cài đặt dưới dạng một gói riêng biệt.
  • Ứng dụng khách s9s phải truy cập được cổng 9501.

Việc cài đặt CLI s9s rất đơn giản nếu bạn cài đặt nó trên chính máy chủ ClusterControl Controller:$ rm

$ rm -Rf ~/.s9s
$ wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh
$ ./install-s9s-tools.sh

Bạn có thể cài đặt s9s-tools bên ngoài máy chủ ClusterControl (máy tính xách tay máy trạm hoặc máy chủ lưu trữ pháo đài của bạn), miễn là giao diện ClusterControl Controller RPC (TLS) được tiếp xúc với mạng công cộng (mặc định là 127.0.0.1:9501). Bạn có thể tìm thêm chi tiết về cách định cấu hình điều này trong trang tài liệu.

Để xác minh xem bạn có thể kết nối chính xác với giao diện ClusterControl RPC hay không, bạn sẽ nhận được phản hồi OK khi chạy lệnh sau:

$ s9s cluster --ping
PING OK 2.000 ms

Ngoài ra, hãy xem những hạn chế khi sử dụng công cụ này.

Triển khai ví dụ

Triển khai ví dụ của chúng tôi bao gồm 8 nút trên 3 cụm:

  • PostgreSQL Streaming Replication - 1 master, 2 slave
  • Bản sao MySQL - 1 cái chính, 1 cái phụ
  • Bộ bản sao MongoDB - 1 nút chính, 2 nút phụ

Tất cả các cụm cơ sở dữ liệu đã được ClusterControl triển khai bằng cách sử dụng trình hướng dẫn triển khai "Deploy Database Cluster" và từ quan điểm giao diện người dùng, đây là những gì chúng ta sẽ thấy trong bảng điều khiển cụm:

Giám sát cụm

Chúng tôi sẽ bắt đầu bằng cách liệt kê các cụm:

$ s9s cluster --list --long
ID STATE   TYPE              OWNER  GROUP  NAME                   COMMENT
23 STARTED postgresql_single system admins PostgreSQL 10          All nodes are operational.
24 STARTED replication       system admins Oracle 5.7 Replication All nodes are operational.
25 STARTED mongodb           system admins MongoDB 3.6            All nodes are operational.

Chúng tôi thấy các cụm tương tự như giao diện người dùng. Chúng tôi có thể biết thêm chi tiết về cụm cụ thể bằng cách sử dụng cờ --stat. Nhiều cụm và nút cũng có thể được giám sát theo cách này, các tùy chọn dòng lệnh thậm chí có thể sử dụng các ký tự đại diện trong tên nút và cụm:

$ s9s cluster --stat *Replication
Oracle 5.7 Replication                                                                                                                                                                                               Name: Oracle 5.7 Replication              Owner: system/admins
      ID: 24                                  State: STARTED
    Type: REPLICATION                        Vendor: oracle 5.7
  Status: All nodes are operational.
  Alarms:  0 crit   1 warn
    Jobs:  0 abort  0 defnd  0 dequd  0 faild  7 finsd  0 runng
  Config: '/etc/cmon.d/cmon_24.cnf'
 LogFile: '/var/log/cmon_24.log'

                                                                                HOSTNAME    CPU   MEMORY   SWAP    DISK       NICs
                                                                                10.0.0.104 1  6% 992M 120M 0B 0B 19G 13G   10K/s 54K/s
                                                                                10.0.0.168 1  6% 992M 116M 0B 0B 19G 13G   11K/s 66K/s
                                                                                10.0.0.156 2 39% 3.6G 2.4G 0B 0B 19G 3.3G 338K/s 79K/s

Kết quả ở trên cung cấp một bản tóm tắt về bản sao MySQL của chúng tôi cùng với trạng thái cụm, trạng thái, nhà cung cấp, tệp cấu hình, v.v. Cuối cùng, bạn có thể thấy danh sách các nút nằm dưới ID cụm này với cái nhìn tóm tắt về tài nguyên hệ thống cho từng máy chủ lưu trữ như số lượng CPU, tổng bộ nhớ, mức sử dụng bộ nhớ, đĩa hoán đổi và giao diện mạng. Tất cả thông tin hiển thị được truy xuất từ ​​cơ sở dữ liệu CMON, không phải trực tiếp từ các nút thực tế.

Bạn cũng có thể xem tóm tắt tất cả cơ sở dữ liệu trên tất cả các cụm:

$ s9s  cluster --list-databases --long
SIZE        #TBL #ROWS     OWNER  GROUP  CLUSTER                DATABASE
  7,340,032    0         0 system admins PostgreSQL 10          postgres
  7,340,032    0         0 system admins PostgreSQL 10          template1
  7,340,032    0         0 system admins PostgreSQL 10          template0
765,460,480   24 2,399,611 system admins PostgreSQL 10          sbtest
          0  101         - system admins Oracle 5.7 Replication sys
Total: 5 databases, 789,577,728, 125 tables.

Dòng cuối cùng tóm tắt rằng chúng tôi có tổng cộng 5 cơ sở dữ liệu với 125 bảng, 4 trong số đó nằm trên cụm PostgreSQL của chúng tôi.

Để có ví dụ đầy đủ về cách sử dụng tùy chọn dòng lệnh cụm s9s, hãy xem tài liệu về cụm s9s.

Giám sát nút

Đối với giám sát các nút, CLI s9s có các tính năng tương tự với tùy chọn cụm. Để có cái nhìn tóm tắt về tất cả các nút, bạn chỉ cần thực hiện:

$ s9s node --list --long
STAT VERSION    CID CLUSTER                HOST       PORT  COMMENT
coC- 1.6.2.2662  23 PostgreSQL 10          10.0.0.156  9500 Up and running
poM- 10.4        23 PostgreSQL 10          10.0.0.44   5432 Up and running
poS- 10.4        23 PostgreSQL 10          10.0.0.58   5432 Up and running
poS- 10.4        23 PostgreSQL 10          10.0.0.60   5432 Up and running
soS- 5.7.23-log  24 Oracle 5.7 Replication 10.0.0.104  3306 Up and running.
coC- 1.6.2.2662  24 Oracle 5.7 Replication 10.0.0.156  9500 Up and running
soM- 5.7.23-log  24 Oracle 5.7 Replication 10.0.0.168  3306 Up and running.
mo-- 3.2.20      25 MongoDB 3.6            10.0.0.125 27017 Up and Running
mo-- 3.2.20      25 MongoDB 3.6            10.0.0.131 27017 Up and Running
coC- 1.6.2.2662  25 MongoDB 3.6            10.0.0.156  9500 Up and running
mo-- 3.2.20      25 MongoDB 3.6            10.0.0.35  27017 Up and Running
Total: 11

Cột bên trái nhất chỉ định loại nút. Đối với triển khai này, "c" đại diện cho Bộ điều khiển ClusterControl, "p" cho PostgreSQL, "m" cho MongoDB, "e" cho Memcached và s cho các nút MySQL chung. Cái tiếp theo là trạng thái máy chủ - "o" cho trực tuyến, " l "cho ngoại tuyến," f "cho các nút bị lỗi, v.v. Tiếp theo là vai trò của nút trong cụm. Nó có thể là M cho chính, S cho nô lệ, C cho bộ điều khiển và - cho mọi thứ khác. Các cột còn lại khá dễ hiểu.

Bạn có thể lấy tất cả danh sách bằng cách xem trang chủ của thành phần này:

$ man s9s-node

Từ đó, chúng ta có thể chuyển sang số liệu thống kê chi tiết hơn cho tất cả các nút có cờ --stats:

$ s9s node --stat --cluster-id=24
 10.0.0.104:3306
    Name: 10.0.0.104              Cluster: Oracle 5.7 Replication (24)
      IP: 10.0.0.104                 Port: 3306
   Alias: -                         Owner: system/admins
   Class: CmonMySqlHost              Type: mysql
  Status: CmonHostOnline             Role: slave
      OS: centos 7.0.1406 core     Access: read-only
   VM ID: -
 Version: 5.7.23-log
 Message: Up and running.
LastSeen: Just now                    SSH: 0 fail(s)
 Connect: y Maintenance: n Managed: n Recovery: n Skip DNS: y SuperReadOnly: n
     Pid: 16592  Uptime: 01:44:38
  Config: '/etc/my.cnf'
 LogFile: '/var/log/mysql/mysqld.log'
 PidFile: '/var/lib/mysql/mysql.pid'
 DataDir: '/var/lib/mysql/'
 10.0.0.168:3306
    Name: 10.0.0.168              Cluster: Oracle 5.7 Replication (24)
      IP: 10.0.0.168                 Port: 3306
   Alias: -                         Owner: system/admins
   Class: CmonMySqlHost              Type: mysql
  Status: CmonHostOnline             Role: master
      OS: centos 7.0.1406 core     Access: read-write
   VM ID: -
 Version: 5.7.23-log
 Message: Up and running.
  Slaves: 10.0.0.104:3306
LastSeen: Just now                    SSH: 0 fail(s)
 Connect: n Maintenance: n Managed: n Recovery: n Skip DNS: y SuperReadOnly: n
     Pid: 975  Uptime: 01:52:53
  Config: '/etc/my.cnf'
 LogFile: '/var/log/mysql/mysqld.log'
 PidFile: '/var/lib/mysql/mysql.pid'
 DataDir: '/var/lib/mysql/'
 10.0.0.156:9500
    Name: 10.0.0.156              Cluster: Oracle 5.7 Replication (24)
      IP: 10.0.0.156                 Port: 9500
   Alias: -                         Owner: system/admins
   Class: CmonHost                   Type: controller
  Status: CmonHostOnline             Role: controller
      OS: centos 7.0.1406 core     Access: read-write
   VM ID: -
 Version: 1.6.2.2662
 Message: Up and running
LastSeen: 28 seconds ago              SSH: 0 fail(s)
 Connect: n Maintenance: n Managed: n Recovery: n Skip DNS: n SuperReadOnly: n
     Pid: 12746  Uptime: 01:10:05
  Config: ''
 LogFile: '/var/log/cmon_24.log'
 PidFile: ''
 DataDir: ''

Việc in đồ thị bằng ứng dụng khách s9s cũng có thể rất nhiều thông tin. Điều này trình bày dữ liệu mà bộ điều khiển thu thập được trong các biểu đồ khác nhau. Có gần 30 đồ thị được hỗ trợ bởi công cụ này như được liệt kê ở đây và s9s-node liệt kê tất cả chúng. Phần sau hiển thị biểu đồ tải của máy chủ của tất cả các nút cho ID cụm 1 như được CMON thu thập, ngay từ thiết bị đầu cuối của bạn:

Có thể đặt ngày giờ bắt đầu và kết thúc. Người ta có thể xem các khoảng thời gian ngắn (như giờ trước) hoặc các khoảng thời gian dài hơn (như một tuần hoặc một tháng). Sau đây là một ví dụ về việc xem việc sử dụng đĩa trong giờ qua:

Sử dụng tùy chọn --density, một dạng xem khác có thể được in cho mọi biểu đồ. Biểu đồ mật độ này không hiển thị chuỗi thời gian mà hiển thị tần suất các giá trị đã cho được nhìn thấy (trục X đại diện cho giá trị mật độ):

Nếu thiết bị đầu cuối không hỗ trợ các ký tự Unicode, tùy chọn --only-ascii có thể tắt chúng:

Biểu đồ có màu sắc, ví dụ như các giá trị cao nguy hiểm được hiển thị bằng màu đỏ. Danh sách các nút có thể được lọc bằng tùy chọn --nodes, nơi bạn có thể chỉ định tên nút hoặc sử dụng ký tự đại diện nếu thuận tiện.

Giám sát quy trình

Một điều thú vị khác về CLI s9s là nó cung cấp một danh sách xử lý của toàn bộ cụm - một "đỉnh" cho tất cả các nút, tất cả các quy trình được hợp nhất thành một. Lệnh sau chạy lệnh "top" trên tất cả các nút cơ sở dữ liệu cho cụm ID 24, được sắp xếp theo mức tiêu thụ CPU nhiều nhất và được cập nhật liên tục:

$ s9s process --top --cluster-id=24
Oracle 5.7 Replication - 04:39:17                                                                                                                                                      All nodes are operational.
3 hosts, 4 cores, 10.6 us,  4.2 sy, 84.6 id,  0.1 wa,  0.3 st,
GiB Mem : 5.5 total, 1.7 free, 2.6 used, 0.1 buffers, 1.1 cached
GiB Swap: 0 total, 0 used, 0 free,

PID   USER     HOST       PR  VIRT      RES    S   %CPU   %MEM COMMAND
12746 root     10.0.0.156 20  1359348    58976 S  25.25   1.56 cmon
 1587 apache   10.0.0.156 20   462572    21632 S   1.38   0.57 httpd
  390 root     10.0.0.156 20     4356      584 S   1.32   0.02 rngd
  975 mysql    10.0.0.168 20  1144260    71936 S   1.11   7.08 mysqld
16592 mysql    10.0.0.104 20  1144808    75976 S   1.11   7.48 mysqld
22983 root     10.0.0.104 20   127368     5308 S   0.92   0.52 sshd
22548 root     10.0.0.168 20   127368     5304 S   0.83   0.52 sshd
 1632 mysql    10.0.0.156 20  3578232  1803336 S   0.50  47.65 mysqld
  470 proxysql 10.0.0.156 20   167956    35300 S   0.44   0.93 proxysql
  338 root     10.0.0.104 20     4304      600 S   0.37   0.06 rngd
  351 root     10.0.0.168 20     4304      600 R   0.28   0.06 rngd
   24 root     10.0.0.156 20        0        0 S   0.19   0.00 rcu_sched
  785 root     10.0.0.156 20   454112    11092 S   0.13   0.29 httpd
   26 root     10.0.0.156 20        0        0 S   0.13   0.00 rcuos/1
   25 root     10.0.0.156 20        0        0 S   0.13   0.00 rcuos/0
22498 root     10.0.0.168 20   127368     5200 S   0.09   0.51 sshd
14538 root     10.0.0.104 20        0        0 S   0.09   0.00 kworker/0:1
22933 root     10.0.0.104 20   127368     5200 S   0.09   0.51 sshd
28295 root     10.0.0.156 20   127452     5016 S   0.06   0.13 sshd
 2238 root     10.0.0.156 20   197520    10444 S   0.06   0.28 vc-agent-007
  419 root     10.0.0.156 20    34764     1660 S   0.06   0.04 systemd-logind
    1 root     10.0.0.156 20    47628     3560 S   0.06   0.09 systemd
27992 proxysql 10.0.0.156 20    11688      872 S   0.00   0.02 proxysql_galera
28036 proxysql 10.0.0.156 20    11688      876 S   0.00   0.02 proxysql_galera

Ngoài ra còn có một cờ --list trả về một kết quả tương tự mà không cần cập nhật liên tục (tương tự như lệnh "ps"):

$ s9s process --list --cluster-id=25

Giám sát công việc

Công việc là các tác vụ được bộ điều khiển thực hiện ở chế độ nền, do đó ứng dụng khách không cần đợi cho đến khi toàn bộ công việc kết thúc. ClusterControl thực thi các tác vụ quản lý bằng cách gán một ID cho mọi tác vụ và cho phép bộ lập lịch nội bộ quyết định xem có thể chạy song song hai hay nhiều công việc hay không. Ví dụ:có thể thực hiện đồng thời nhiều triển khai cụm cũng như các hoạt động chạy lâu dài khác như sao lưu và tự động tải các bản sao lưu lên bộ nhớ đám mây.

Trong bất kỳ hoạt động quản lý nào, sẽ rất hữu ích nếu chúng tôi có thể theo dõi tiến trình và trạng thái của một công việc cụ thể, chẳng hạn như mở rộng quy mô nô lệ mới cho bản sao MySQL của chúng tôi. Lệnh sau thêm một nô lệ mới, 10.0.0.77 để mở rộng quy mô sao chép MySQL của chúng tôi:

$ s9s cluster --add-node --nodes="10.0.0.77" --cluster-id=24
Job with ID 66992 registered.

Sau đó, chúng tôi có thể theo dõi jobID 66992 bằng cách sử dụng tùy chọn job:

$ s9s job --log --job-id=66992
addNode: Verifying job parameters.
10.0.0.77:3306: Adding host to cluster.
10.0.0.77:3306: Testing SSH to host.
10.0.0.77:3306: Installing node.
10.0.0.77:3306: Setup new node (installSoftware = true).
10.0.0.77:3306: Setting SELinux in permissive mode.
10.0.0.77:3306: Disabling firewall.
10.0.0.77:3306: Setting vm.swappiness = 1
10.0.0.77:3306: Installing software.
10.0.0.77:3306: Setting up repositories.
10.0.0.77:3306: Installing helper packages.
10.0.0.77: Upgrading nss.
10.0.0.77: Upgrading ca-certificates.
10.0.0.77: Installing socat.
...
10.0.0.77: Installing pigz.
10.0.0.77: Installing bzip2.
10.0.0.77: Installing iproute2.
10.0.0.77: Installing tar.
10.0.0.77: Installing openssl.
10.0.0.77: Upgrading openssl openssl-libs.
10.0.0.77: Finished with helper packages.
10.0.0.77:3306: Verifying helper packages (checking if socat is installed successfully).
10.0.0.77:3306: Uninstalling existing MySQL packages.
10.0.0.77:3306: Installing replication software, vendor oracle, version 5.7.
10.0.0.77:3306: Installing software.
...

Hoặc chúng ta có thể sử dụng cờ --wait và lấy một con quay có thanh tiến trình:

$ s9s job --wait --job-id=66992
Add Node to Cluster
- Job 66992 RUNNING    [         █] ---% Add New Node to Cluster

Đó là nó cho phần bổ sung giám sát ngày hôm nay. Chúng tôi hy vọng rằng bạn sẽ dùng thử CLI và nhận được giá trị từ nó. Phân nhóm vui vẻ


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách tìm giá trị tối thiểu trong mongodb

  2. Nhận tất cả các tên trường trong một bộ sưu tập mongodb?

  3. 7 cách đếm tài liệu trong MongoDB

  4. 3 cách để giảm chỉ mục trong MongoDB

  5. Làm cách nào để tính tổng mọi trường trong một tài liệu con của MongoDB?