Performance Agent adalah plugin AliSQL yang mengumpulkan metrik performa tingkat instans dalam interval tetap dan menyimpannya dalam tabel in-memory yang dapat dikueri (information_schema.PERF_STATISTICS). Fitur ini memungkinkan Anda menjalankan kueri SQL kustom terhadap data performa langsung, membangun dasbor waktu nyata di Grafana, atau mengirim metrik ke pipeline pemantauan Anda sendiri.
Prasyarat
Sebelum memulai, pastikan instans Anda memenuhi persyaratan versi berikut:
MySQL 8.0 dengan versi mesin minor 20200229 atau lebih baru
MySQL 5.7 dengan versi mesin minor 20200229 atau lebih baru
MySQL 5.6 dengan versi mesin minor 20200630 atau lebih baru
Untuk petunjuk memperbarui versi mesin minor, lihat Perbarui Versi Mesin Minor Instans ApsaraDB RDS untuk MySQL.
Cara kerja
Performance Agent menulis snapshot metrik performa utama ke information_schema.PERF_STATISTICS dalam interval tetap (default: 1 detik). Tabel ini merupakan struktur in-memory—entri lama akan dihapus saat entri baru tiba.
Dengan pengaturan default (performance_agent_interval=1, performance_agent_perfstat_volume_size=3600), tabel menyimpan 3.600 baris, mencakup sekitar satu jam data terbaru.
Retensi data secara ringkas
| Interval pengumpulan | Catatan yang Disimpan | Data dipertahankan |
|---|---|---|
| 1 detik (default) | 3.600 (default) | ~1 jam |
| 5 detik | 3.600 (default) | ~5 jam |
| 10 detik | 3.600 (default) | ~10 jam |
| 1 detik | 7.200 | ~2 jam |
Untuk menyimpan riwayat lebih lama, tingkatkan nilai performance_agent_perfstat_volume_size. Pengaturan ini menggunakan memori tambahan, sehingga pertimbangkan kompromi terhadap sumber daya yang tersedia pada instans Anda.
Konfigurasi Performance Agent
Parameter berikut mengontrol perilaku Performance Agent. Parameter ini tidak ditampilkan di konsol ApsaraDB RDS. Untuk melihat nilai saat ini dari parameter apa pun, jalankan:
SHOW VARIABLES LIKE '<parameter_name>';| Parameter | Deskripsi | Default |
|---|---|---|
performance_agent_enabled | Mengaktifkan atau menonaktifkan Performance Agent. Nilai yang valid: ON, OFF. | ON |
performance_agent_interval | Frekuensi RDS mengumpulkan snapshot performa. Satuan: detik. Interval yang lebih kecil berarti data lebih sering dikumpulkan dan penggunaan memori lebih tinggi. | 1 |
performance_agent_perfstat_volume_size | Jumlah maksimum baris dalam tabel PERF_STATISTICS. Saat batas ini tercapai, baris terlama akan dihapus. | 3600 |
performance_agent_file_size | Ukuran file data performa yang ditulis ke disk. Satuan: MB. | — |
performance_agent_network_device | Awalan nama network interface controller (NIC) fisik pada host. | — |
Data kinerja kueri
Semua kueri dijalankan terhadap information_schema.PERF_STATISTICS. Gunakan ORDER BY TIME DESC dan LIMIT untuk mengambil data N detik terbaru.
Metrik sumber daya (CPU, memori, I/O)
SELECT TIME, PROCS_MEM_USAGE, PROCS_CPU_RATIO
FROM information_schema.PERF_STATISTICS
ORDER BY TIME DESC
LIMIT 30;Contoh output:
+---------------------+-----------------+-----------------+
| TIME | PROCS_MEM_USAGE | PROCS_CPU_RATIO |
+---------------------+-----------------+-----------------+
| 2020-02-27 11:15:36 | 857812992 | 18.55 |
| 2020-02-27 11:15:35 | 857808896 | 18.54 |
| 2020-02-27 11:15:34 | 857268224 | 19.64 |
...
+---------------------+-----------------+-----------------+
30 rows in set (0.08 sec)Metrik InnoDB
Statistik InnoDB disimpan sebagai objek JSON dalam kolom EXTRA. Gunakan operator -> untuk mengekstraksi bidang individual.
SELECT TIME,
EXTRA->'$.INNODB_ROWS_READ',
EXTRA->'$.INNODB_ROWS_INSERTED'
FROM information_schema.PERF_STATISTICS
ORDER BY TIME DESC
LIMIT 30;Contoh output:
+---------------------+-----------------------------+---------------------------------+
| TIME | EXTRA->'$.INNODB_ROWS_READ' | EXTRA->'$.INNODB_ROWS_INSERTED' |
+---------------------+-----------------------------+---------------------------------+
| 2020-02-27 11:22:17 | 39209 | 0 |
| 2020-02-27 11:22:16 | 36098 | 0 |
...
+---------------------+-----------------------------+---------------------------------+
30 rows in set (0.08 sec)Nilai dalam kolom EXTRA sesuai dengan nilai yang dikembalikan oleh SHOW STATUS.
Koneksi ke platform pemantauan
Sambungkan Performance Agent ke platform pemantauan untuk dasbor waktu nyata. Misalnya, sambungkan ke Grafana. 
Referensi skema PERF_STATISTICS
Definisi tabel
CREATE TEMPORARY TABLE `PERF_STATISTICS` (
`TIME` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`PROCS_MEM_USAGE` double NOT NULL DEFAULT '0',
`PROCS_MEM_RATIO` double NOT NULL DEFAULT '0',
`PROCS_CPU_RATIO` double NOT NULL DEFAULT '0',
`PROCS_IOPS` double NOT NULL DEFAULT '0',
`PROCS_IOPS_READ` double NOT NULL DEFAULT '0',
`PROCS_IOPS_WRITE` double NOT NULL DEFAULT '0',
`PROCS_IO_READ_BYTES` bigint NOT NULL DEFAULT '0',
`PROCS_IO_WRITE_BYTES` bigint NOT NULL DEFAULT '0',
`MYSQL_CONN_ABORT` int NOT NULL DEFAULT '0',
`MYSQL_CONN_CREATED` int NOT NULL DEFAULT '0',
`MYSQL_USER_CONN_COUNT` int NOT NULL DEFAULT '0',
`MYSQL_CONN_COUNT` int NOT NULL DEFAULT '0',
`MYSQL_CONN_RUNNING` int NOT NULL DEFAULT '0',
`MYSQL_CONNECTIONS` int NOT NULL DEFAULT '0',
`MYSQL_CONN_CACHED` int NOT NULL DEFAULT '0',
`MYSQL_LOCK_IMMEDIATE` int NOT NULL DEFAULT '0',
`MYSQL_LOCK_WAITED` int NOT NULL DEFAULT '0',
`MYSQL_QUESTIONS` int NOT NULL DEFAULT '0',
`MYSQL_COM_INSERT` int NOT NULL DEFAULT '0',
`MYSQL_COM_INSERT_SELECT` int NOT NULL DEFAULT '0',
`MYSQL_COM_REPLACE` int NOT NULL DEFAULT '0',
`MYSQL_COM_REPLACE_SELECT` int NOT NULL DEFAULT '0',
`MYSQL_COM_UPDATE` int NOT NULL DEFAULT '0',
`MYSQL_COM_UPDATE_MULTI` int NOT NULL DEFAULT '0',
`MYSQL_COM_DELETE` int NOT NULL DEFAULT '0',
`MYSQL_COM_DELETE_MULTI` int NOT NULL DEFAULT '0',
`MYSQL_COM_SELECT` int NOT NULL DEFAULT '0',
`MYSQL_COM_COMMIT` int NOT NULL DEFAULT '0',
`MYSQL_COM_ROLLBACK` int NOT NULL DEFAULT '0',
`MYSQL_COM_PREPARE` int NOT NULL DEFAULT '0',
`MYSQL_HANDLER_COMMIT` int NOT NULL DEFAULT '0',
`MYSQL_HANDELR_ROLLBACK` int NOT NULL DEFAULT '0',
`MYSQL_LONG_QUERY` int NOT NULL DEFAULT '0',
`MYSQL_TCACHE_GET` bigint NOT NULL DEFAULT '0',
`MYSQL_TCACHE_MISS` bigint NOT NULL DEFAULT '0',
`MYSQL_TMPFILE_CREATED` int NOT NULL DEFAULT '0',
`MYSQL_TMP_TABLES` int NOT NULL DEFAULT '0',
`MYSQL_TMP_DISKTABLES` int NOT NULL DEFAULT '0',
`MYSQL_SORT_MERGE` int NOT NULL DEFAULT '0',
`MYSQL_SORT_ROWS` int NOT NULL DEFAULT '0',
`MYSQL_BYTES_RECEIVED` bigint NOT NULL DEFAULT '0',
`MYSQL_BYTES_SENT` bigint NOT NULL DEFAULT '0',
`MYSQL_BINLOG_OFFSET` int NOT NULL DEFAULT '0',
`MYSQL_IOLOG_OFFSET` int NOT NULL DEFAULT '0',
`MYSQL_RELAYLOG_OFFSET` int NOT NULL DEFAULT '0',
`EXTRA` json NOT NULL DEFAULT 'null'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;Referensi kolom
Metrik sumber daya
| Kolom | Deskripsi |
|---|---|
TIME | Timestamp snapshot. Format: yyyy-MM-dd HH:mm:ss. |
PROCS_MEM_USAGE | Memori fisik yang digunakan oleh instans RDS. Satuan: byte. |
PROCS_MEM_RATIO | Penggunaan memori proses MySQL, dalam bentuk rasio. |
PROCS_CPU_RATIO | Utilisasi CPU instans RDS. |
PROCS_IOPS | Jumlah total operasi I/O. |
PROCS_IOPS_READ | IOPS baca proses dalam kontainer. |
PROCS_IOPS_WRITE | IOPS tulis proses dalam kontainer. |
PROCS_IO_READ_BYTES | Data yang dibaca oleh operasi I/O. Satuan: byte. |
PROCS_IO_WRITE_BYTES | Data yang ditulis oleh operasi I/O. Satuan: byte. |
Metrik koneksi
| Kolom | Deskripsi |
|---|---|
MYSQL_CONN_ABORT | Jumlah koneksi yang ditutup. |
MYSQL_CONN_CREATED | Jumlah koneksi baru yang dibuat. |
MYSQL_USER_CONN_COUNT | Total jumlah koneksi. |
MYSQL_CONN_COUNT | Total jumlah koneksi. |
MYSQL_CONN_RUNNING | Jumlah koneksi aktif. |
MYSQL_CONNECTIONS | Jumlah koneksi MySQL. |
MYSQL_CONN_CACHED | Jumlah thread yang diblokir. |
MYSQL_LOCK_IMMEDIATE | Jumlah lock yang dipegang. |
MYSQL_LOCK_WAITED | Jumlah event tunggu lock. |
Metrik eksekusi SQL
| Kolom | Deskripsi |
|---|---|
MYSQL_QUESTIONS | Total pernyataan SQL yang dikirim oleh client. |
MYSQL_COM_INSERT | Jumlah pernyataan INSERT. |
MYSQL_COM_INSERT_SELECT | Jumlah pernyataan INSERT ... SELECT. |
MYSQL_COM_REPLACE | Jumlah pernyataan REPLACE. |
MYSQL_COM_REPLACE_SELECT | Jumlah pernyataan REPLACE ... SELECT. |
MYSQL_COM_UPDATE | Jumlah pernyataan UPDATE. |
MYSQL_COM_UPDATE_MULTI | Jumlah pernyataan UPDATE multi-tabel. |
MYSQL_COM_DELETE | Jumlah pernyataan DELETE. |
MYSQL_COM_DELETE_MULTI | Jumlah pernyataan DELETE multi-tabel. |
MYSQL_COM_SELECT | Jumlah pernyataan SELECT. |
MYSQL_COM_COMMIT | Jumlah transaksi yang dikomit secara eksplisit. |
MYSQL_COM_ROLLBACK | Jumlah transaksi yang di-rollback. |
MYSQL_COM_PREPARE | Jumlah pernyataan prepared. |
MYSQL_HANDLER_COMMIT | Jumlah kali pernyataan COMMIT dieksekusi. |
MYSQL_HANDELR_ROLLBACK | Jumlah kali storage engine melakukan rollback. |
MYSQL_LONG_QUERY | Jumlah kueri lambat. |
MYSQL_TCACHE_GET | Jumlah cache hit. |
MYSQL_TCACHE_MISS | Jumlah cache miss. |
MYSQL_TMPFILE_CREATED | Jumlah file temporary yang dibuat. |
MYSQL_TMP_TABLES | Jumlah tabel temporary yang dibuat. |
MYSQL_TMP_DISKTABLES | Jumlah tabel disk temporary yang dibuat. |
MYSQL_SORT_MERGE | Jumlah operasi sort-merge. |
MYSQL_SORT_ROWS | Jumlah baris yang diurutkan. |
MYSQL_BYTES_RECEIVED | Data diterima. Satuan: byte. |
MYSQL_BYTES_SENT | Data dikirim. Satuan: byte. |
Metrik replikasi
| Kolom | Deskripsi |
|---|---|
MYSQL_BINLOG_OFFSET | Ukuran file binary log yang dihasilkan. Satuan: byte. |
MYSQL_IOLOG_OFFSET | Ukuran file binary log yang dikirim oleh instans RDS ke instans RDS secondary-nya. Satuan: byte. |
MYSQL_RELAYLOG_OFFSET | Ukuran relay log yang diterapkan oleh instans RDS secondary. Satuan: byte. |
Metrik InnoDB (kolom EXTRA)
Kolom EXTRA berisi objek JSON dengan statistik InnoDB. Semua nilai sesuai dengan nilai yang dikembalikan oleh SHOW STATUS.
| Bidang | Deskripsi |
|---|---|
INNODB_TRX_CNT | Jumlah transaksi. |
INNODB_DATA_READ | Data dibaca. Satuan: byte. |
INNODB_IBUF_SIZE | Jumlah halaman yang digabung dalam insert buffer. |
INNODB_LOG_WAITS | Jumlah kali InnoDB menunggu untuk menulis data log. |
INNODB_MAX_PURGE | Jumlah transaksi yang dipurge. |
INNODB_N_WAITING | Jumlah lock yang sedang ditunggu oleh InnoDB. |
INNODB_ROWS_READ | Jumlah baris dibaca. |
INNODB_LOG_WRITES | Jumlah kali InnoDB menulis data log. |
INNODB_IBUF_MERGES | Jumlah operasi merge insert buffer. |
INNODB_DATA_WRITTEN | Data ditulis. Satuan: byte. |
INNODB_DBLWR_WRITES | Jumlah operasi doublewrite. |
INNODB_IBUF_SEGSIZE | Ukuran data yang dimasukkan ke insert buffer. |
INNODB_ROWS_DELETED | Jumlah baris dihapus. |
INNODB_ROWS_UPDATED | Jumlah baris diperbarui. |
INNODB_COMMIT_TRXCNT | Jumlah transaksi yang dikomit. |
INNODB_IBUF_FREELIST | Panjang daftar idle. |
INNODB_MYSQL_TRX_CNT | Jumlah transaksi MySQL. |
INNODB_ROWS_INSERTED | Jumlah baris dimasukkan. |
INNODB_ACTIVE_TRX_CNT | Jumlah transaksi aktif. |
INNODB_OS_LOG_WRITTEN | Data log yang ditulis ke disk. Satuan: byte. |
INNODB_ACTIVE_VIEW_CNT | Jumlah view aktif. |
INNODB_RSEG_HISTORY_LEN | Panjang daftar TRX_RSEG_HISTORY. |
INNODB_AVG_COMMIT_TRXTIME | Waktu rata-rata penyelesaian transaksi. |
INNODB_MAX_COMMIT_TRXTIME | Waktu maksimum untuk melakukan commit transaksi. |
INNODB_DBLWR_PAGES_WRITTEN | Jumlah halaman yang ditulis oleh operasi doublewrite. |