MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Pemantauan Database Tanpa Agen dengan ClusterControl

Dengan semakin kompleksnya penyiapan basis data, banyak SysAdmin dan DBA beralih ke pendekatan tanpa agen untuk membantu meringankan beban tantangan pemantauan basis data. Pemantauan tanpa agen ClusterControl memungkinkan Anda untuk memantau database tanpa menginstal perangkat lunak agen pada setiap sistem yang dipantau. ClusterControl mengimplementasikan pemantauan menggunakan pengumpul data jarak jauh yang menggunakan protokol SSH.

Sebelum terjun langsung ke spesifikasi pemantauan tanpa agen, pertama-tama mari kita perjelas ruang lingkup dan arti pemantauan dalam konteks kita di sini. Pemantauan dilakukan setelah tren data — proses pengumpulan dan penyimpanan metrik — yang memungkinkan sistem pemantauan memproses data yang dikumpulkan untuk menghasilkan justifikasi untuk penyetelan, peringatan, dan menampilkan data tren untuk pelaporan.

Mulai versi 1.7.0 (dirilis Desember 2018), ClusterControl mendukung dua metode pemantauan:

  • Pemantauan tanpa agen (default)
  • Pemantauan berbasis agen dengan Prometheus

Postingan ini akan menjelaskan cara memantau server database dan cluster Anda dengan pemantauan tanpa agen ClusterControl. Jika Anda mencari informasi lebih lanjut tentang pemantauan berbasis agen ClusterControl, Anda dapat merujuk ke dokumentasi ini.

Umumnya, ClusterControl melakukan tugas pemantauan, peringatan, dan tren tanpa agen menggunakan tiga metode berikut:

  • SSH – Pengumpulan metrik host (proses, statistik penyeimbang beban, penggunaan sumber daya, konsumsi, dll.) menggunakan pustaka SSH
  • Klien basis data – Pengumpulan metrik basis data (status, kueri, variabel, penggunaan, dll.) menggunakan pustaka klien basis data masing-masing
  • Penasihat – Program mini yang ditulis menggunakan ClusterControl DSL dan berjalan di dalam ClusterControl itu sendiri untuk tujuan pemantauan, penyetelan, dan peringatan

SSH adalah singkatan dari Secure Shell, protokol jaringan aman yang digunakan oleh sebagian besar server berbasis Linux untuk administrasi jarak jauh. ClusterControl Controller, atau CMON, adalah layanan backend yang melakukan tugas otomatisasi, manajemen, pemantauan, dan penjadwalan, yang dibangun di atas C++.

ClusterControl DSL (Bahasa Khusus Domain) memungkinkan Anda untuk memperluas fungsionalitas platform ClusterControl Anda dengan membuat Penasihat, Penyetel Otomatis, atau "Program Mini". Sintaks DSL didasarkan pada JavaScript, dengan ekstensi untuk menyediakan akses ke struktur dan fungsi data internal ClusterControl. DSL memungkinkan Anda untuk mengeksekusi pernyataan SQL, menjalankan perintah/program shell di semua host cluster Anda, dan mengambil hasil untuk diproses untuk penasihat/peringatan atau tindakan lainnya.

Alat Pemantauan

Semua alat prasyarat dipenuhi oleh skrip penginstal atau diinstal secara otomatis oleh ClusterControl selama tahap penyebaran basis data atau jika file/biner/paket yang diperlukan tidak ada di server target sebelum menjalankan pekerjaan. Secara umum, tugas pemantauan ClusterControl hanya membutuhkan paket server OpenSSH pada host yang dipantau. ClusterControl menggunakan pustaka klien libssh untuk mengumpulkan metrik host untuk host yang dipantau – CPU, memori, disk, jaringan, IO, proses, dll. Paket klien OpenSSH diperlukan pada host ClusterControl hanya untuk menyiapkan SSH tanpa kata sandi dan tujuan debugging. Implementasi SSH lain seperti Dropbear dan TinySSH tidak didukung.

Saat mengumpulkan statistik dan metrik basis data, ClusterControl Controller (CMON) terhubung ke server basis data secara langsung melalui pustaka klien basis data – libmysqlclient (MySQL/MariaDB dan ProxySQL), libpq (PostgreSQL), dan libmongocxx (MongoDB ). Itulah mengapa sangat penting untuk menyiapkan hak istimewa yang tepat untuk server ClusterControl dari perspektif server database. Untuk cluster berbasis MySQL, ClusterControl membutuhkan pengguna database "cmon" sedangkan untuk database lain, nama pengguna apa pun dapat digunakan untuk pemantauan, asalkan diberikan hak pengguna super. Biasanya, ClusterControl akan menyiapkan hak istimewa yang diperlukan (atau menggunakan pengguna database yang ditentukan) secara otomatis selama tahap impor klaster atau penyebaran klaster.

ClusterControl memerlukan alat berikut untuk penyeimbang beban:

  • Maxctrl di server MariaDB MaxScale
  • netcat dan/atau socat di server HAProxy untuk terhubung ke file soket HAProxy dan mengambil data pemantauan
  • ProxySQL memerlukan klien mysql di server ProxySQL

Diagram berikut mengilustrasikan proses pemantauan host dan basis data yang dijalankan oleh ClusterControl menggunakan libssh dan pustaka klien basis data:

Meskipun utas pemantauan tidak memerlukan paket klien basis data yang diinstal pada host yang dipantau, sangat disarankan untuk memilikinya untuk tujuan manajemen. Misalnya, paket klien MySQL dilengkapi dengan program mysql, mysqldump, mysqlbinlog, dan mysqladmin, yang akan digunakan oleh ClusterControl saat melakukan pencadangan dan pemulihan tepat waktu.

Metode Pemantauan

Untuk pengumpulan statistik host dan load balancer, ClusterControl menjalankan tugas ini melalui SSH dengan hak pengguna super. Oleh karena itu, SSH tanpa kata sandi dengan hak pengguna super sangat penting untuk memungkinkan ClusterControl menjalankan perintah yang diperlukan dari jarak jauh dengan eskalasi yang tepat. Dengan pendekatan tarik ini, ada beberapa keuntungan dibandingkan dengan mekanisme lain:

  • Agentless – Agen tidak perlu diinstal, dikonfigurasi, dan dipelihara.
  • Menyatukan konfigurasi pengelolaan dan pemantauan – SSH dapat digunakan untuk menarik metrik pemantauan atau mendorong tugas pengelolaan pada node target.
  • Sederhanakan penerapan – Satu-satunya persyaratan adalah penyiapan SSH tanpa kata sandi yang tepat, dan hanya itu. SSH juga sangat aman dan terenkripsi.
  • Penyiapan terpusat – Satu server ClusterControl dapat mengelola beberapa server dan cluster, asalkan memiliki sumber daya yang memadai.

Namun, mekanisme tarik juga memiliki kelemahan sebagai berikut:

  • Data pemantauan hanya akurat dari perspektif ClusterControl. Misalnya, jika ada kesalahan jaringan dan ClusterControl kehilangan komunikasi ke host yang dipantau, pengambilan sampel akan dilewati hingga siklus berikutnya yang tersedia.
  • Akan ada overhead jaringan untuk pemantauan granularitas tinggi karena peningkatan laju pengambilan sampel di mana ClusterControl perlu membuat lebih banyak koneksi ke setiap host target.
  • ClusterControl akan terus mencoba membangun kembali koneksi ke node target karena tidak ada agen yang melakukan ini atas namanya.
  • Pengambilan sampel data redundan jika Anda memiliki lebih dari satu server ClusterControl yang memantau sebuah cluster karena setiap server ClusterControl harus menarik data pemantauan untuk dirinya sendiri.

Untuk pemantauan kueri MySQL, mulai dari ClusterControl 1.9.0 (dirilis Juli 2021), ClusterControl mendukung dua jenis:

  • Pemantauan kueri tanpa agen (default)
  • Pemantauan kueri berbasis agen menggunakan agen kueri CMON, yang memerlukan langkah tambahan untuk mengaktifkannya. Hanya untuk database berbasis MySQL dan PostgreSQL.

Pemantauan kueri tanpa agen memantau kueri dengan dua cara berbeda:

  • Kueri diambil dari PERFORMANCE_SCHEMA dengan mengkueri skema pada node database melalui SSH.
  • Jika PERFORMANCE_SCHEMA dinonaktifkan atau tidak tersedia, ClusterControl akan mengurai konten Log Kueri Lambat melalui SSH.

Jika Skema Kinerja diaktifkan, ClusterControl akan menggunakannya untuk mencari kueri yang lambat. Jika tidak, ClusterControl akan mengurai konten log kueri lambat MySQL (melalui variabel dinamis slow_query_log=ON) berdasarkan alur berikut:

  1. Mulai log lambat (selama waktu proses MySQL).
  2. Jalankan dalam waktu singkat (satu detik atau beberapa detik).
  3. Hentikan log.
  4. Mengurai log.
  5. Potong log (file log baru).
  6. Buka 1.

Kueri yang dikumpulkan di-hash, dihitung, dan dicerna (normalisasi, rata-rata, hitung, sortir) lalu disimpan dalam database CMON ClusterControl. Perhatikan bahwa untuk metode pengambilan sampel ini, ada sedikit kemungkinan beberapa kueri tidak akan ditangkap, terutama selama bagian “stop log, parse log, truncate log”. Anda dapat mengaktifkan Skema Kinerja jika ini bukan pilihan.

Hanya kueri yang melebihi Waktu Kueri Panjang yang akan dicantumkan di sini menggunakan log Kueri Lambat. Misalkan data tidak diisi dengan benar, dan Anda yakin pasti ada sesuatu di sana, bisa jadi:

  • ClusterControl tidak mengumpulkan cukup kueri untuk meringkas dan mengisi data. Coba kurangi Waktu Kueri yang Panjang.
  • Anda telah mengonfigurasi opsi konfigurasi Log Kueri Lambat di my.cnf server MySQL, dan Ganti Kueri Lokal dimatikan. Jika Anda benar-benar ingin menggunakan nilai yang Anda tetapkan di dalam my.cnf, Anda mungkin harus menurunkan nilai long_query_time sehingga ClusterControl dapat menghitung hasil yang lebih akurat.
  • Anda juga memiliki node ClusterControl lain yang menarik log Slow Query (jika Anda memiliki server ClusterControl siaga). Hanya izinkan satu server ClusterControl untuk melakukan tugas ini.

Anda juga dapat menggunakan Monitor Kueri ClusterControl untuk Server MySQL, MariaDB, dan Percona.

Untuk pemantauan kueri PostgreSQL, ClusterControl memerlukan modul pg_stat_statements untuk melacak statistik eksekusi semua pernyataan SQL. Ini mengisi tampilan dan fungsi pg_stat_statements saat menampilkan kueri di UI (di bawah tab Monitor Kueri).

Interval dan Batas Waktu

ClusterControl Controller (cmon) adalah proses multi-utas. Secara default, utas pengambilan sampel ClusterControl Controller terhubung ke setiap host yang dipantau satu kali dan mempertahankan koneksi yang terus-menerus hingga host turun atau terputus saat mengambil sampel statistik host. Ini dapat membuat lebih banyak koneksi tergantung pada pekerjaan yang ditugaskan ke host karena sebagian besar pekerjaan manajemen berjalan di utas mereka sendiri. Misalnya, pemulihan klaster berjalan di utas pemulihan, eksekusi Advisor berjalan di utas cron, dan pemantauan proses berjalan di utas pengumpul proses.

Utas pemantauan ClusterControl melakukan operasi pengambilan sampel berikut dalam interval berikut:

  • Metrik kueri/status MySQL:setiap detik
  • Pengumpulan proses (/proc):setiap 10 detik
  • Deteksi server:setiap 10 detik
  • Metrik host (/proc, /sys):setiap 30 detik (dapat dikonfigurasi melalui host_stats_collection_interval)
  • Metrik basis data (khusus PostgreSQL dan MongoDB):setiap 30 detik (dapat dikonfigurasi melalui db_stats_collection_interval)
  • Metrik skema database:setiap 3 jam (dapat dikonfigurasi melalui db_schema_stats_collection_interval)
  • Metrik penyeimbang beban:setiap 15 detik (dapat dikonfigurasi melalui lb_stats_collection_interval)

Skrip imperatif (Penasihat) dapat menggunakan SSH dan pustaka klien basis data yang disertakan dengan CMON dengan batasan berikut:

  • Batas keras 5 detik untuk eksekusi SSH.
  • Batas default 10 detik untuk koneksi database, dapat dikonfigurasi melalui net_read_timeout, net_write_timeout, connect_timeout dalam file konfigurasi CMON.
  • 60 detik dari total batas waktu eksekusi skrip sebelum CMON membatalkannya dengan tidak hormat.

Penasihat dapat dibuat, dikompilasi, diuji, dan dijadwalkan langsung dari UI ClusterControl di Kelola → Developer Studio . Tangkapan layar berikut menunjukkan contoh Penasihat untuk mengekstrak 10 kueri teratas dari PERFORMANCE_SCHEMA:

Eksekusi penasehat tergantung pada apakah itu diaktifkan dan waktu penjadwalan dalam format cron:

Hasil eksekusi ditampilkan di bawah Kinerja → Penasihat , seperti yang ditunjukkan pada tangkapan layar berikut:

Untuk informasi lebih lanjut tentang Penasihat apa yang disediakan secara default, lihat Pengembang kami Halaman produk studio.

Data disimpan langsung ke database CMON untuk data pemantauan interval pendek seperti kueri dan status MySQL. Data pemantauan interval panjang seperti titik data mingguan/bulanan/tahunan dikumpulkan setiap 60 detik dan disimpan dalam memori selama 10 menit. Perilaku ini tidak dapat dikonfigurasi karena desain arsitekturnya.

Parameter

ClusterControl memiliki banyak parameter yang sesuai dengan kebijakan pemantauan dan peringatan Anda. Sebagian besar dapat dikonfigurasi melalui ClusterControl UI → pilih cluster → Pengaturan . Tab "Pengaturan" menyediakan banyak opsi untuk mengonfigurasi peringatan, ambang batas, pemberitahuan, tata letak grafik, penghitung basis data, pemantauan kueri, dan sebagainya. Misalnya, peringatan dan ambang batas kritis dapat dikonfigurasi sebagai berikut:

Laman “Konfigurasi Runtime” menampilkan daftar ringkasan dari ClusterControl Controller yang aktif (CMON) parameter konfigurasi runtime:

Ada lebih dari 170 opsi konfigurasi ClusterControl Controller, dan beberapa di antaranya pengaturan lanjutan dapat dikonfigurasi pemantauan dan penyetelan kebijakan peringatan. Beberapa di antaranya adalah:

  • monitor_cpu_temperature
  • swap_warning
  • swap_critical
  • redobuffer_warning
  • redobuffer_critical
  • indexmemory_warning
  • indexmemory_critical
  • datamemory_warning
  • datamemory_critical
  • tablespace_warning
  • tablespace_critical
  • redolog_warning
  • redolog_critical
  • max_replication_lag
  • long_query_time
  • log_queries_not_using_indexes
  • query_monitor_use_local_settings
  • enable_query_monitor
  • aktifkan_query_monitor_auto_purge_ps

Anda dapat mengubah parameter yang tercantum di halaman "Konfigurasi Runtime" dengan menggunakan file konfigurasi UI atau CMON yang terletak di /etc/cmon.d/cmon_X.cnf, di mana X adalah ID cluster. Anda dapat membuat daftar semua opsi konfigurasi yang didukung untuk CMON dengan menggunakan perintah berikut:

$ cmon --help-config

Pemikiran Terakhir

Pemantauan tanpa agen telah menjadi salah satu metode paling efektif untuk mengelola infrastruktur database yang semakin kompleks. Ini mengurangi beban banyak tantangan yang terkait dengan pemantauan basis data dan mudah dikelola.

Ada banyak alat pemantauan tanpa agen yang tersedia saat ini. Namun, tidak banyak dari mereka juga menawarkan platform lengkap yang penuh fitur untuk membantu Anda mengelola setiap aspek lain dari cluster database Anda. Untuk melihat apa lagi yang dapat dilakukan ClusterControl, pastikan untuk mengunduh uji coba 30 hari gratis Anda sendiri.

Apakah Anda mencari alternatif berbasis agen untuk pemantauan basis data? Lihat infrastruktur pemantauan database berbasis agen ClusterControl — SCUMM.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Terlalu banyak file yang terbuka sambil memastikan indeks mongo

  2. Pustaka BSON untuk java?

  3. MongoDB $tanh

  4. Bagaimana cara menggunakan Elasticsearch dengan MongoDB?

  5. Bagaimana cara memperbarui nilai menggunakan pymongo?