Bagaimana Anda ingin menggabungkan proses "atas" untuk semua 5 node basis data Anda dan mengurutkan berdasarkan penggunaan CPU hanya dengan perintah satu baris? Ya, Anda membacanya dengan benar! Bagaimana dengan tampilan grafik interaktif di antarmuka terminal? Kami memperkenalkan klien CLI untuk ClusterControl yang disebut s9s sekitar setahun yang lalu, dan ini merupakan pelengkap yang bagus untuk antarmuka web. Ini juga open source..
Dalam posting blog ini, kami akan menunjukkan kepada Anda bagaimana Anda dapat memantau database Anda menggunakan terminal dan s9s CLI Anda.
Pengantar s9s, CLI ClusterControl
ClusterControl CLI (atau s9s atau s9s CLI), adalah proyek sumber terbuka dan paket opsional yang diperkenalkan dengan ClusterControl versi 1.4.1. Ini adalah alat baris perintah untuk berinteraksi, mengontrol, dan mengelola infrastruktur database Anda menggunakan ClusterControl. Proyek baris perintah s9s adalah open source dan dapat ditemukan di GitHub.
Mulai dari versi 1.4.1, skrip penginstal akan secara otomatis menginstal paket (s9s-tools) pada node ClusterControl.
Beberapa prasyarat. Agar Anda dapat menjalankan s9s-tools CLI, berikut ini harus benar:
- Pengontrol ClusterControl (cmon) yang sedang berjalan.
- klien s9s, instal sebagai paket terpisah.
- Port 9501 harus dapat dijangkau oleh klien s9s.
Menginstal s9s CLI sangat mudah jika Anda menginstalnya di host ClusterControl Controller itu sendiri:$ rm
$ rm -Rf ~/.s9s
$ wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh
$ ./install-s9s-tools.sh
Anda dapat menginstal s9s-tools di luar server ClusterControl (laptop workstation atau bastion host Anda), selama antarmuka ClusterControl Controller RPC (TLS) terbuka ke jaringan publik (default ke 127.0.0.1:9501). Anda dapat menemukan detail selengkapnya tentang cara mengonfigurasi ini di halaman dokumentasi.
Untuk memverifikasi apakah Anda dapat terhubung ke antarmuka ClusterControl RPC dengan benar, Anda harus mendapatkan respons OK saat menjalankan perintah berikut:
$ s9s cluster --ping
PING OK 2.000 ms
Sebagai catatan tambahan, lihat juga batasan saat menggunakan alat ini.
Contoh Penerapan
Contoh penerapan kami terdiri dari 8 node di 3 cluster:
- Replikasi Streaming PostgreSQL - 1 master, 2 slave
- Replikasi MySQL - 1 master, 1 slave
- Set Replika MongoDB - 1 node primer, 2 node sekunder
Semua cluster database disebarkan oleh ClusterControl dengan menggunakan wizard penyebaran "Deploy Database Cluster" dan dari sudut pandang UI, inilah yang akan kita lihat di dashboard cluster:
Pemantauan Cluster
Kita akan mulai dengan membuat daftar cluster:
$ 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.
Kami melihat cluster yang sama dengan UI. Kita bisa mendapatkan detail lebih lanjut tentang cluster tertentu dengan menggunakan flag --stat. Beberapa cluster dan node juga dapat dipantau dengan cara ini, opsi baris perintah bahkan dapat menggunakan wildcard dalam nama node dan cluster:
$ 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
Output di atas memberikan ringkasan replikasi MySQL kami bersama dengan status cluster, status, vendor, file konfigurasi, dan sebagainya. Selanjutnya, Anda dapat melihat daftar node yang termasuk dalam ID cluster ini dengan tampilan ringkasan sumber daya sistem untuk setiap host seperti jumlah CPU, total memori, penggunaan memori, swap disk, dan antarmuka jaringan. Semua informasi yang ditampilkan diambil dari database CMON, tidak langsung dari node yang sebenarnya.
Anda juga bisa mendapatkan tampilan ringkasan dari semua database di semua cluster:
$ 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.
Baris terakhir merangkum bahwa kami memiliki total 5 database dengan 125 tabel, 4 di antaranya ada di cluster PostgreSQL kami.
Untuk contoh lengkap penggunaan pada opsi baris perintah s9s cluster, lihat dokumentasi cluster s9s.
Pemantauan Node
Untuk pemantauan node, s9s CLI memiliki fitur serupa dengan opsi cluster. Untuk mendapatkan tampilan ringkasan semua node, Anda cukup melakukan:
$ 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
Kolom paling kiri menentukan jenis node. Untuk penerapan ini, "c" mewakili ClusterControl Controller, 'p" untuk PostgreSQL, "m" untuk MongoDB, "e" untuk Memcached dan s untuk node MySQL generik. Yang berikutnya adalah status host - "o" untuk online, " l" untuk off-line, "f" untuk node yang gagal, dan seterusnya. Yang berikutnya adalah peran node dalam cluster. Bisa jadi M untuk master, S untuk slave, C untuk controller dan - untuk yang lainnya. Kolom yang tersisa cukup jelas.
Anda bisa mendapatkan semua daftar dengan melihat halaman manual komponen ini:
$ man s9s-node
Dari sana, kita dapat beralih ke statistik yang lebih detail untuk semua node dengan flag --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: ''
Mencetak grafik dengan klien s9s juga bisa sangat informatif. Ini menyajikan data pengontrol yang dikumpulkan dalam berbagai grafik. Ada hampir 30 grafik yang didukung oleh alat ini seperti yang tercantum di sini dan s9s-node menyebutkan semuanya. Berikut ini menunjukkan histogram pemuatan server dari semua node untuk ID cluster 1 yang dikumpulkan oleh CMON, langsung dari terminal Anda:
Dimungkinkan untuk mengatur tanggal dan waktu mulai dan berakhir. Seseorang dapat melihat periode pendek (seperti satu jam terakhir) atau periode yang lebih lama (seperti seminggu atau sebulan). Berikut ini adalah contoh tampilan penggunaan disk selama satu jam terakhir:
Menggunakan opsi --density, tampilan yang berbeda dapat dicetak untuk setiap grafik. Grafik kepadatan ini tidak menunjukkan deret waktu, tetapi seberapa sering nilai yang diberikan terlihat (sumbu X mewakili nilai kepadatan):
Jika terminal tidak mendukung karakter Unicode, opsi --only-ascii dapat menonaktifkannya:
Grafik memiliki warna, di mana nilai tinggi yang berbahaya misalnya ditampilkan dalam warna merah. Daftar node dapat difilter dengan opsi --nodes, di mana Anda dapat menentukan nama node atau menggunakan wildcard jika nyaman.
Pemantauan Proses
Hal keren lainnya tentang s9s CLI adalah ia menyediakan daftar proses dari seluruh cluster - "atas" untuk semua node, semua proses digabungkan menjadi satu. Perintah berikut menjalankan perintah "top" pada semua node database untuk cluster ID 24, diurutkan berdasarkan konsumsi CPU paling banyak, dan diperbarui terus-menerus:
$ 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
Ada juga flag --list yang mengembalikan hasil serupa tanpa pembaruan berkelanjutan (mirip dengan perintah "ps"):
$ s9s process --list --cluster-id=25
Pemantauan Pekerjaan
Pekerjaan adalah tugas yang dilakukan oleh pengontrol di latar belakang, sehingga aplikasi klien tidak perlu menunggu sampai seluruh pekerjaan selesai. ClusterControl menjalankan tugas manajemen dengan menetapkan ID untuk setiap tugas dan memungkinkan penjadwal internal memutuskan apakah dua atau lebih tugas dapat dijalankan secara paralel. Misalnya, lebih dari satu penerapan cluster dapat dijalankan secara bersamaan, serta operasi jangka panjang lainnya seperti pencadangan dan pengunggahan otomatis cadangan ke penyimpanan cloud.
Dalam operasi manajemen apa pun, akan sangat membantu jika kita dapat memantau kemajuan dan status pekerjaan tertentu, seperti misalnya, menskalakan budak baru untuk replikasi MySQL kita. Perintah berikut menambahkan budak baru, 10.0.0.77 untuk meningkatkan replikasi MySQL kami:
$ s9s cluster --add-node --nodes="10.0.0.77" --cluster-id=24
Job with ID 66992 registered.
Kami kemudian dapat memantau jobID 66992 menggunakan opsi pekerjaan:
$ 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.
...
Atau kita bisa menggunakan flag --wait dan mendapatkan spinner dengan progress bar:
$ s9s job --wait --job-id=66992
Add Node to Cluster
- Job 66992 RUNNING [ █] ---% Add New Node to Cluster
Itu saja untuk suplemen pemantauan hari ini. Kami berharap Anda akan mencoba CLI dan mendapatkan nilai darinya. Selamat mengelompokkan