Memantau kinerja database MySQL Anda secara real-time membantu Anda segera mengidentifikasi masalah dan faktor lain yang dapat menyebabkan masalah sekarang atau di masa mendatang. Ini juga merupakan cara yang baik untuk menentukan komponen database mana yang dapat ditingkatkan atau dioptimalkan untuk meningkatkan efisiensi dan kinerja Anda. Ini biasanya dilakukan melalui perangkat lunak dan alat pemantauan baik yang terpasang di dalam perangkat lunak manajemen basis data atau diinstal dari penyedia pihak ketiga.
Prometheus adalah aplikasi perangkat lunak sumber terbuka yang digunakan untuk pemantauan dan peringatan peristiwa. Ini dapat digunakan bersama dengan alat visualisasi seperti Grafana untuk dengan mudah membuat dan mengedit dasbor, membuat kueri, memvisualisasikan, mengingatkan, dan memahami metrik Anda. ScaleGrid memberikan akses admin penuh ke penerapan MySQL Anda – ini mempermudah integrasi ekosistem alat MySQL yang ada dengan penerapan MySQL ScaleGrid Anda di AWS atau Azure. Prometheus bekerja dengan baik untuk merekam rangkaian waktu numerik murni, dan juga menawarkan dukungan untuk pengumpulan dan kueri data multidimensi. Grafana dapat digunakan dengannya untuk membangun dasbor yang membantu memvisualisasikan data ini dengan cara yang mudah ditafsirkan dan digunakan. Alat ini akan memberikan wawasan tambahan untuk metrik, pola penggunaan, dan set data Anda bersama dengan pemantauan MySQL ScaleGrid, analisis kueri, dan peringatan. Dalam posting blog ini, kami membahas bagaimana Anda dapat mengatur dan menggunakan Prometheus dan Grafana dengan penerapan ScaleGrid MySQL Anda untuk pemantauan dan peringatan database tingkat lanjut.
Cara Menyiapkan Pemantauan MySQL Anda
Mari kita telusuri langkah-langkah yang terlibat dalam menginstal dan mengonfigurasi server Prometheus untuk menyimpan dan menampilkan metrik, pengekspor (Pengekspor MySQL dalam kasus ini) untuk mengumpulkan metrik dan menyampaikannya ke server Prometheus, dan Grafana untuk membuat dasbor. Alat Eksportir MySQL dapat diinstal secara lokal di server MySQL atau secara terpusat di server Prometheus. Dalam kasus penggunaan di bawah ini, kami akan menjelaskan cara mengatur dan mulai menggunakan Prometheus, MySQL Exporter, dan Grafana dari host pusat yang berjalan di Ubuntu untuk memantau beberapa server MySQL. Anda juga dapat meninjau petunjuk langkah demi langkah di dokumen bantuan Prometheus dan Grafana untuk MySQL kami.
Diagram blok di bawah ini menunjukkan pengaturan penerapan MySQL master-slave-quorum yang mencakup dua node pembawa data (master dan slave) dan satu anggota voting (quorum) menggunakan Eksportir MySQL, host Prometheus, dan Grafana:
Menginstal &Mengonfigurasi Server Prometheus
Prometheus adalah alat yang akan kami gunakan untuk memusatkan dan menyimpan metrik MySQL Anda. Ini mengikis metrik dari satu atau beberapa eksportir secara berkala dan menampilkannya di UI-nya. Di bawah ini adalah langkah-langkah untuk menginstal dan mengkonfigurasi Prometheus pada host Ubuntu pusat. Untuk lebih jelasnya, Anda dapat merujuk artikel ini.
1. Buat Grup &Pengguna Sistem Prometheus
$sudo groupadd --system prometheus$sudo useradd -s /sbin/nologin --system -g prometheus prometheus
2. Buat Direktori Data untuk Prometheus
$sudo mkdir /var/lib/prometheus
3. Buat Direktori Konfigurasi untuk Prometheus
$for i di rules rules.d files_sd; lakukan sudo mkdir -p /etc/prometheus/${i}; selesai
4. Unduh Arsip Prometheus &Ekstrak File
Untuk mengunduh arsip biner terbaru untuk Prometheus:
$mkdir -p /tmp/prometheus &&cd /tmp/prometheus$curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest \| grep browser_download_url \| grep linux-amd64 \| cut -d '"' -f 4 \| wget -qi -
Untuk mengekstrak file:
$tar xvf prometheus*.tar.gz$cd prometheus*/
5. Pindahkan File Prometheus ke Lokasi Standar
Pindahkan file biner Prometheus ke /usr/local/bin:
$sudo mv prometheus promtool /usr/local/bin/
Pindahkan template konfigurasi Prometheus ke direktori /etc:
$sudo mv prometheus.yml /etc/prometheus/prometheus.yml
Pindahkan juga consoles dan console_libraries ke direktori /etc/prometheus:
$sudo mv consoles/ console_libraries/ /etc/prometheus/
6. Buat/Edit File Konfigurasi Prometheus
Konfigurasi template akan terlihat seperti di bawah ini:
$cat /etc/prometheus/prometheus.yml #my global config global:scrape_interval:15s # Atur interval scrape setiap 15 detik. Default adalah setiap 1 menit. evaluasi_interval:15s # Evaluasi aturan setiap 15 detik. Standarnya adalah setiap 1 menit. #scrape_timeout disetel ke default global (10 detik). Peringatan konfigurasi #Alertmanager:alertmanagers:- static_configs:- target:#- alertmanager:9093 #Muat aturan sekali dan evaluasi secara berkala sesuai dengan 'evaluation_interval' global. rule_files:#- "first_rules.yml" #- "second_rules.yml" #Konfigurasi scrape yang berisi tepat satu titik akhir untuk scrape:#Ini Prometheus itu sendiri. scrape_configs:#Nama pekerjaan ditambahkan sebagai label `job=` ke setiap deret waktu yang diambil dari konfigurasi ini. - job_name:'prometheus' #metrics_path default ke '/metrics' #scheme default ke 'http'. static_configs:- target:['localhost:9090']
7. Buat File Unit Layanan sistem Prometheus
$sudo vim /etc/systemd/system/prometheus.service
Tambahkan konten berikut:
[Unit] Description=Prometheus Documentation=https://prometheus.io/docs/introduction/overview/ Wants=network-online.target After=network-online.target [Service] Type=simple Environment="GOMAXPROCS=1" Pengguna=prometheus Grup=prometheus ExecReload=/bin/kill -HUP $MAINPID ExecStart=/usr/local/bin/prometheus \ --config.file=/etc/prometheus/prometheus.yml \ --storage.tsdb. path=/var/lib/prometheus \ --web.console.templates=/etc/prometheus/consoles \ --web.console.libraries=/etc/prometheus/console_libraries \ --web.listen-address=0.0.0.0 :9090 \ --web.external-url=SyslogIdentifier=prometheus Restart=selalu [Instal] WantedBy=multi-pengguna.target
Ingatlah untuk mengedit baris:Environment="GOMAXPROCS=1 dengan mengganti 1 dengan jumlah vcpus di server Anda.
8. Ubah Izin Direktori
Ubah kepemilikan direktori ini menjadi pengguna dan grup Prometheus:
$for i di rules rules.d files_sd; lakukan sudo chown -R prometheus:prometheus /etc/prometheus/${i}; done$for i in rules rules.d files_sd; lakukan sudo chmod -R 775 /etc/prometheus/${i}; done$sudo chown -R prometheus:prometheus /var/lib/prometheus/
9. Muat ulang systemd Daemon &Mulai Layanan
$sudo systemctl daemon-reload$sudo systemctl start prometheus$sudo systemctl aktifkan prometheus
Periksa status menggunakan systemctl status prometheus perintah:
10. Konfigurasi Firewall untuk Membuka Port 9090
$sudo firewall-cmd --add-port=9090/tcp --permanent$sudo firewall-cmd --reload
Setelah penyiapan selesai, Anda dapat mengakses UI Prometheus dengan masuk ke http://
Cara Memantau Penerapan #MySQL dengan Prometheus &Grafana di ScaleGridKlik Untuk Tweet
Menginstal &Mengonfigurasi Eksportir Prometheus MySQL
Prometheus memerlukan eksportir untuk mengumpulkan metrik server MySQL. Eksportir ini dapat dijalankan secara terpusat di server Prometheus, atau di server database. Untuk bacaan lebih lanjut, lihat dokumentasi Prometheus.
Ikuti langkah-langkah di bawah ini untuk menginstal dan menyiapkan MySQL Prometheus Exporter di host Prometheus pusat. Untuk detail lebih lanjut, lihat artikel ini.
1. Unduh &Instal Prometheus MySQL Exporter
$curl -s https://api.github.com/repos/prometheus/mysqld_exporter/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d '"' -f 4 | wget -qi -$tar xvf mysqld_exporter*.tar.gz$sudo mv mysqld_exporter-*.linux-amd64/mysqld_exporter /usr/local/bin/$sudo chmod +x /usr/ lokal/bin/mysqld_exporter
2. Buat Pengguna Basis Data Eksportir Prometheus untuk Mengakses Basis Data, Mengikis Metrik &Memberikan Hibah
BUAT PENGGUNA 'mysqld_exporter'@'' DIIDENTIFIKASI OLEH 'StrongPassword' DENGAN MAX_USER_CONNECTIONS 2;PROSES GRANT, KLIEN REPLIKASI, PILIH *.* UNTUK 'mysqld_exporter'@' DENGAN MAX_USER_CONNECTIONS 2 digunakan untuk menetapkan batas koneksi maksimal bagi pengguna untuk menghindari server yang kelebihan beban dengan memantau goresan di bawah beban berat.
3. Konfigurasikan Kredensial Basis Data
Edit file konfigurasi eksportir di host pusat:
$sudo vim /etc/.mysqld_exporter.cnfTambahkan nama pengguna dan kata sandi pengguna yang dibuat dan server MySQL ScaleGrid yang ingin Anda pantau:
$sudo vim /etc/.mysqld_exporter.cnf[client]user=mysqld_exporterpassword=StrongPasswordhost=SG-mysqltestcluster-123456.servers.mongodirector.comSetel izin kepemilikan:
$sudo chown root:prometheus /etc/.mysqld_exporter.cnf4. Buat File Unit systemd
Buat file layanan baru di host pusat:
$sudo vim /etc/systemd/system/mysql_exporter.serviceTambahkan konten berikut:
[Unit] Deskripsi=Prometheus MySQL Exporter After=network.target User=prometheus Group=prometheus [Service] Type=simple Restart=always ExecStart=/usr/local/bin/mysqld_exporter \ --config.my-cnf / etc/.mysqld_exporter.cnf \ --collect.global_status \ --collect.info_schema.innodb_metrics \ --collect.auto_increment.columns \ --collect.info_schema.processlist \ --collect.binlog_size \ --collect.info_schema.tablestats \ --collect.global_variables \ --collect.info_schema.query_response_time \ --collect.info_schema.userstats \ --collect.info_schema.tables \ --collect.perf_schema.tablelocks \ --collect.perf_schema.file_events \ --collect .perf_schema.eventswaits \ --collect.perf_schema.indexiowaits \ --collect.perf_schema.tableiowaits \ --collect.slave_status \ --web.listen-address=0.0.0.0:9104 [Instal] WantedBy=multi-pengguna.targetweb.listen-address=0.0.0.0:9104 menentukan bahwa server mendengarkan pada port 9104. Jika server Anda memiliki jaringan publik dan pribadi, Anda mungkin perlu mengganti 0.0.0.0:9104 dengan IP pribadi, misalnya – 192.168.4.5:9104.
Setelah selesai, muat ulang systemd dan mulai layanan mysql_exporter:
$sudo systemctl daemon-reload$sudo systemctl aktifkan mysql_exporter$sudo systemctl start mysql_exporter5. Konfigurasikan MySQL Endpoint untuk Digores oleh Prometheus
Buat perubahan seperti di bawah ini pada file prometheus.yml:
scrape_configs:- job_name:mysql_server1static_configs:- target:['localhost:9104']labels:alias:db1Catatan:Jika eksportir tidak berjalan di host yang sama dengan Prometheus, berikan alamat IP server alih-alih localhost. 9104 mengacu pada port yang didengarkan oleh Prometheus, sebagaimana ditentukan pada langkah sebelumnya.
Memantau Beberapa Host MySQL Dari Host Prometheus Pusat
Beberapa server MySQL dapat dipantau dari server pusat. Ini dapat dicapai dengan memiliki layanan eksportir terpisah untuk setiap server. Pastikan untuk membuat file .mysqld_exporter.cnf dan mysql_exporter.service (dengan nomor port unik yang ditetapkan ke flag –web.listen-address) untuk setiap layanan seperti yang disebutkan dalam langkah 3 dan 4 di atas. Tambahkan target ke file prometheus.yml seperti yang disebutkan pada langkah 5 di atas. Nama pekerjaan harus unik untuk setiap sasaran. Misalnya:
scrape_configs:- job_name:mysql_server1static_configs:- target:['localhost:9104']labels:alias:db1- job_name:mysql_server2static_configs:- target:['localhost:9105']labels:alias:db2- job_name:myconfigs_server3static_ - target:['localhost:9106']labels:alias:db3Catatan:Server Prometheus harus dapat menjangkau target melalui jaringan. Pastikan bahwa konfigurasi jaringan/firewall Anda telah dimodifikasi sebagaimana mestinya.
Menginstal Grafana &Membuat Dasbor
Grafana menggunakan Prometheus sebagai sumber data, memungkinkan Anda membuat dasbor untuk memvisualisasikan dan memahami metrik Anda dengan lebih baik. Ini memberikan cara yang bagus untuk mendapatkan wawasan tentang data deret waktu Anda.
Ikuti langkah-langkah di bawah ini untuk menginstal Grafana di host Prometheus pusat Anda.
1. Unduh Versi Grafana Terbaru
Buka halaman Unduh Grafana untuk mengunduh versi terbaru.
$wget$sudo apt-get install -y adduser libfontconfig1$sudo dpkg -i grafana_ _amd64.deb 2. Unduh Repositori APT &Instal Grafana
Perintah add-apt-repository bukan aplikasi default di Debian 9 dan memerlukan:
$apt-get install -y software-properties-commonInstal repositori untuk rilis stabil:
$sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"Ada repositori terpisah jika Anda ingin rilis beta:
$sudo add-apt-repository "deb https://packages.grafana.com/oss/deb beta main"Gunakan baris di atas meskipun Anda menggunakan Ubuntu atau versi Debian lainnya. Kemudian tambahkan kunci gpg kami. Ini memungkinkan Anda untuk menginstal paket yang ditandatangani:
$wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -Perbarui repositori Apt Anda dan instal Grafana:
$sudo apt-get update$sudo apt-get install grafana3. Mulai Layanan
$systemctl daemon-reload$systemctl start grafana-server$systemctl status grafana-serverAktifkan layanan systemd sehingga Grafana mulai saat boot:
$sudo systemctl aktifkan grafana-server.serviceUntuk menjalankan Grafana, buka browser Anda dan buka http://
:3000/ . 3000 adalah port http yang didengarkan Grafana, secara default.4. Menambahkan Sumber Data
Saat diinstal, login ke dasbor admin dan buka Konfigurasi> Sumber Data. Klik Add data source, pilih Prometheus di bawah Time series databases dan isi kolom Name and URL.
Nama:Prometheus-1 URL:http://localhost:9090
Catatan:Jika server Prometheus tidak berjalan di host yang sama dengan Grafana, berikan alamat IP server sebagai ganti localhost.
Sekarang Anda siap membuat dan menyesuaikan dasbor untuk pemantauan MySQL Anda. Anda dapat membuat dasbor baru dengan mengeklik tautan di sisi kanan pemilih dasbor. Setelah dasbor dibuat, Anda dapat menambahkan panel yang memilih metrik yang akan ditampilkan, membintangi dasbor, menyimpan, dan membagikannya. Untuk petunjuk mendetail, Anda dapat merujuk ke dokumentasi Memulai Grafana.
Berikut adalah contoh dasbor Grafana yang dibuat untuk penerapan MySQL di ScaleGrid:
Dasbor Grafana di atas menampilkan MySQL Select Types, MySQL Client Thread Activity, MySQL Network Usage Hourly, dan MySQL Table Locks metrik yang divisualisasikan dalam bagan, dan dasbor Grafana di bawah menampilkan MySQL Top Penghitung Perintah dan Penghitung Perintah Teratas MySQL Setiap Jam.
Kami selalu berusaha membuat hidup pengguna kami lebih mudah, jadi beri tahu kami alat lain yang ingin Anda hubungkan ke penerapan ScaleGrid Anda melalui komentar atau melalui Twitter di @scalegridio.