Referensi: Detail lengkap integrasi MySQL dan definisi field tersedia di Dokumentasi Integrasi MySQL TrueWatch.
Yang Akan Anda Capai
Dengan mengikuti panduan langkah demi langkah ini, Anda akan:
- Menginstal dan mengonfigurasi TrueWatch DataKit untuk terhubung ke MySQL
- Membuat pengguna monitoring yang aman dengan hak akses minimal (least-privilege)
- Secara opsional mengaktifkan dan mengumpulkan log general/slow query MySQL
- Membangun dashboard monitoring MySQL yang praktis di TrueWatch
Untuk siapa: backend engineer, SRE, dan DBA yang ingin monitoring MySQL kelas enterprise dengan cepat.
Prasyarat
- Instans MySQL 5.7+ / 8.0+ yang dapat dijangkau (RDS cloud juga bisa)
- Disarankan: MySQL 8.0 untuk cakupan
performance_schemayang lengkap - Hak akses untuk membuat pengguna dan memberikan izin
- Kemampuan untuk men-deploy TrueWatch DataKit (Docker atau instalasi pada host)
Gambaran Arsitektur
MySQL ← (monitoring user, performance_schema)
↑
DataKit (container or host) → ships Metrics / Logs / Slow Queries to TrueWatchButuh telemetri eBPF/tingkat host? Pilih instalasi pada host. Untuk monitoring database saja, container sudah cukup.
Langkah 1: Verifikasi dan Aktifkan performance_schema
Banyak metrik database bersumber dari performance_schema MySQL. Periksa apakah sudah aktif:
SHOW VARIABLES LIKE 'performance_schema';Jika Anda melihat Value = OFF, aktifkan sesuai lingkungan Anda:
- Di
my.cnf:
[mysqld]
performance_schema=ONRestart MySQL dan pastikan nilainya ON.
Layanan terkelola (mis. Aliyun RDS) dapat membatasi beberapa measurement (mis.
mysql_user_status) jikaperformance_schemadinonaktifkan atau dibatasi. Lihat FAQ resmi dan solusinya di Dokumentasi Integrasi MySQL TrueWatch.
Langkah 2: Buat Pengguna Monitoring dengan Hak Akses Minimal
Untuk keamanan dan observabilitas, buat pengguna khusus read-only (sesuaikan user/password):
CREATE USER 'datakit'@'%' IDENTIFIED WITH caching_sha2_password BY 'datakit_password';
GRANT PROCESS ON *.* TO 'datakit'@'%';
GRANT SELECT ON *.* TO 'datakit'@'%';
GRANT SELECT ON performance_schema.* TO 'datakit'@'%';
GRANT SELECT ON mysql.user TO 'datakit'@'%';
GRANT REPLICATION CLIENT ON *.* TO 'datakit'@'%';
FLUSH PRIVILEGES;Mengapa hak akses ini penting:
- PROCESS: memeriksa query dan koneksi yang sedang berjalan
- SELECT (termasuk performance_schema): membaca data performa dan statistik
- REPLICATION CLIENT: membaca status replikasi (jika berlaku)
Langkah 3: Instal dan Jalankan DataKit (pilih salah satu)
Instal DataKit sebagai container atau pada host (perintah disederhanakan dari panduan resmi):
3A. Docker (mulai cepat)

#1) Di TrueWatch Console → DataKit → Docker, pilih DataWay Anda dan salin perintah/token yang dihasilkan. #2) Pada host target, jalankan:
docker run -d --name datakit \
--hostname "$(hostname)" \
-p 9529:9529 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(pwd)/conf.d:/usr/local/datakit/conf.d \
-e ENV_DATAWAY="https://<your-openway-host>?token=<your_token>" \
-e ENV_HTTP_LISTEN="0.0.0.0:9529" \
pubrepo.truewatch.com/truewatch/datakit:1.80.1#3) Letakkan mysql.conf dari langkah berikutnya ke direktori conf.d/ yang di-mount (utamakan conf.d/db/). DataKit akan memuatnya secara otomatis.
Lihat dokumentasi resmi untuk variabel lingkungan lainnya dan opsi lanjutan (proxy, batas resource, logging, dll.): Dokumentasi Instalasi DataKit.
3B. Instalasi pada host (disarankan untuk eBPF/metrik host)

#1) Di TrueWatch Console → DataKit → Linux, pilih DataWay dan salin perintah yang sudah berisi token.
#2) Pada host target, jalankan (menginstal dan memulai DataKit):
DK_DATAWAY="https://<your-openway-host>?token=<your_token>" bash -c "$(curl -L https://static.truewatch.com/datakit/install.sh)"#3) Letakkan mysql.conf di conf.d/db/ milik DataKit, lalu restart layanan:
sudo systemctl restart datakitUntuk opsi tambahan seperti
DK_INSTALL_ONLY, proxy, dan upgrade, lihat dokumentasi resmi: Dokumentasi Instalasi DataKit.
Langkah 4: Konfigurasi input MySQL DataKit (inputs.mysql)
Buat atau edit mysql.conf di direktori conf.d/db milik DataKit:
[[inputs.mysql]]
host = "db" # or your MySQL address (FQDN/IP)
user = "datakit" # monitoring user
pass = "datakit_password"
port = 3306
interval = "10s"
innodb = true # collect key InnoDB metrics
dbm = true # enable Database Monitoring (query analysis)
election = true # single leader collects when multiple DataKits existArti field dan tips tuning: lihat Dokumentasi Integrasi MySQL TrueWatch.
Restart (atau hot-reload) DataKit; metrik akan mulai mengalir.
Langkah 5 (opsional): Kumpulkan log general/slow query MySQL
TrueWatch dapat menerima log general dan slow query MySQL untuk menemukan SQL dengan latensi tinggi.
5A. Aktifkan slow query logging (MySQL)
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL log_queries_not_using_indexes = 'ON'; -- optional: flag queries without indexes
-- Recommended tuning (persist via my.cnf):
SET GLOBAL long_query_time = 1; -- seconds threshold for slow queryUntuk membuatnya permanen, tambahkan ke my.cnf (contoh):
[mysqld]
slow_query_log=ON
long_query_time=1
log_queries_not_using_indexes=ON
log_output=FILE
slow_query_log_file=/var/log/mysql/slow.log5B. Pengumpulan log DataKit (umumnya dengan instalasi pada host)
Tambahkan ke conf.d/mysql.conf (atau buat bagian baru):
[inputs.mysql.log]
files = ["/var/log/mysql/*.log"] # adjust to your absolute pathsUntuk pemetaan field log yang mendetail (normal/slow), lihat Dokumentasi Integrasi MySQL TrueWatch.
Langkah 6: Verifikasi data masuk
#1) Periksa halaman status DataKit (port default 9529) untuk memastikan input sehat
#2) Di TrueWatch Explorer, cari measurement seperti mysql, mysql_replication_log
#3) Cari field seperti connections, query_time, lock_time, rows_examined, rows_sent
Jika ada measurement yang tidak muncul (mis. mysql_user_status), pastikan performance_schema aktif atau periksa batasan RDS. Lihat FAQ di Dokumentasi Integrasi MySQL TrueWatch.
Langkah 7: Bangun dashboard MySQL yang praktis
A. Gunakan dashboard template (disarankan)
#1) Buka Scenes di kiri → Dashboards di atas → klik Create.

#2) Di bawah System Views, cari mysql dan pilih Mysql Monitor View (atau template MySQL khusus cloud).

#3) Template ini mencakup chart umum untuk koneksi, latensi query, InnoDB, dan replikasi. Sesuaikan sesuai kebutuhan.
Sumber template dan referensi field: Dokumentasi Integrasi MySQL TrueWatch.
B. Bangun widget sendiri (fleksibel)
Pratinjau dashboard


Contoh konfigurasi widget (QPS / TPS)
- QPS: metrik
mysqldenganQuestions, terapkannon_negative_derivativeuntuk mendapatkan query per detik.

- TPS: gunakan ekspresi A+B untuk menjumlahkan
Handler_commitdanHandler_rollback, masing-masing dengannon_negative_derivative, untuk mendapatkan transaksi per detik.

Berikut widget yang teruji di lapangan untuk kebutuhan monitoring database yang umum. Tambahkan ke dashboard TrueWatch menggunakan query Simple/Expression/DQL sesuai kebutuhan.
Contoh field merujuk pada measurement seperti
mysqldanmysql_replication_log. Pastikan ketersediaan field di Explorer Anda.
A. Ringkasan
-
Time series (Connections)
- Sumber:
mysql.connections - Dimensi:
server(host:port) - Tujuan: memantau konkurensi dan lonjakan
- Sumber:
-
Single value/trend (p95 query time)
- Sumber:
mysql.query_time - Agregasi: p95 selama 5m
- Tujuan: melihat tail latency sekilas
- Sumber:
-
Single value/trend (lock wait time)
- Sumber:
mysql.lock_time - Agregasi: avg selama 5m (atau p95)
- Tujuan: mendeteksi lock contention dan blocking
- Sumber:
-
Single value (slow query per menit)
- Sumber: log slow query (
inputs.mysql.log) - Metode: hitung event yang memiliki
db_slow_statement - Tujuan: menangkap lonjakan slow query
- Sumber: log slow query (
B. InnoDB & Throughput
-
Time series (Rows Examined / Rows Sent)
- Sumber:
mysql.rows_examined,mysql.rows_sent - Agregasi: sum atau rate
- Tujuan: memahami volume baca vs. baris yang dikembalikan, menyimpulkan efisiensi
- Sumber:
-
Tabel (Top hot tables/indexes)
- Sumber:
mysql.index_name,mysql.object_name,mysql.object_schema - Agregasi: group by
query_signatureatauobject_name, tampilkan avgquery_timedan count - Tujuan: menemukan tabel/indeks yang sering diakses dan operasi yang lambat
- Sumber:
C. Top-N query bermasalah (log/event)
-
Tabel (Top slow queries berdasarkan rata-rata durasi)
- Sumber: log slow query atau event
mysql - Kolom:
query_signature,sql_text(ataumessageyang dinormalisasi) - Metrik: avg(
query_time), count()
- Sumber: log slow query atau event
-
Tabel (Top wait events)
- Sumber:
mysql.wait_event,event_name - Metrik: sum(
event_timer_wait)
- Sumber:
D. Replikasi (jika berlaku)
- Single value/tabel (Ringkasan Master / Executed GTID Set)
- Sumber:
mysql_replication_log.Executed_Gtid_Set,Master_Host,Master_Port - Tujuan: memastikan hubungan master dan progres GTID
- Sumber:
Tips: jika tersedia, tambahkan
Seconds_Behind_Mastersebagai single value/time series untuk replication lag.
Praktik terbaik & keamanan
- Gunakan pengguna monitoring khusus dengan hak akses minimal, terpisah dari akun aplikasi
- Frekuensi pengumpulan yang lebih tinggi (mis.
interval = "10s") tidak masalah di staging; sesuaikan untuk biaya/performa di produksi - Sesuaikan
long_query_timedanlog_queries_not_using_indexesuntuk menyeimbangkan noise dan sinyal - Pada container, utamakan stdout/log-driver daripada file mount agar tidak membagikan path sensitif
- Simpan kredensial di secrets/variabel ENV, bukan di-commit ke dalam file
FAQ & pemecahan masalah
T: Saya tidak melihat measurement mysql_user_status.
J: Pastikan
performance_schemabernilaiON:
SHOW VARIABLES LIKE 'performance_schema';Jika OFF, aktifkan sesuai penyedia DB/RDS Anda. Beberapa produk RDS membatasinya. Lihat Dokumentasi Integrasi MySQL TrueWatch.
T: DataKit berjalan tetapi tidak ada data yang masuk.
- Verifikasi detail koneksi di
mysql.conf(host/user/pass/port) - Pastikan security group/firewall mengizinkan DataKit menjangkau MySQL
- Periksa halaman status/log DataKit untuk error koneksi atau izin
T: Slow query tidak muncul.
- Pastikan
slow_query_logaktif - Jika mengumpulkan file dari container, pastikan path absolut dapat dibaca (stdout/sidecar sering kali lebih sederhana)
- Di Explorer, cari penanda di indeks log (mis.
[MYSQL_QUERY]) atau field slow log
Referensi
- Dokumentasi integrasi resmi dan definisi field: Dokumentasi Integrasi MySQL TrueWatch
- Perjalanan dan alasan integrasi kami (monitoring user, input DataKit, sidecar):
demo-project/INTEGRATION_GUIDE.md
Dengan langkah-langkah ini, Anda telah mengintegrasikan MySQL dengan TrueWatch dan membangun dashboard yang dapat ditindaklanjuti. Selanjutnya, tambahkan alert (Monitors), laporan terjadwal, dan korelasi lintas layanan untuk mencapai observabilitas database end-to-end yang siap produksi.

