StarRocks menyimpan semua log audit dalam file lokal bernama fe/log/fe.audit.log. Anda tidak dapat mengakses log tersebut melalui database sistem internal. Fitur log audit diaktifkan secara default, dan plugin AuditLoader telah dipasang. Plugin ini membaca log dari file lokal dan mengimpornya ke database StarRocks menggunakan metode HTTP PUT, sehingga memungkinkan Anda melihat dan menganalisis semua operasi yang dilakukan dalam database.
Peringatan
Secara default, fitur log audit diaktifkan, dan sebuah database bernama _starrocks_audit_db_ serta tabel bernama starrocks_audit_tbl dibuat secara otomatis. Semua log audit berikutnya disimpan dalam tabel tersebut. Jangan hapus database _starrocks_audit_db_ atau tabel starrocks_audit_tbl karena hal ini akan menyebabkan fitur kueri tugas SQL tidak berfungsi dengan baik di StarRocks Manager.
Log audit menggunakan partisi dinamis. Secara default, data audit dari 30 hari terakhir disimpan. Anda dapat menyesuaikan durasi penyimpanan data audit dengan mengubah nilai parameter
dynamic_partition.startdandynamic_partition.end.Fitur log audit tidak dapat dinonaktifkan.
Ikhtisar fitur
Database _starrocks_audit_db_ dan tabel starrocks_audit_tbl dibuat secara otomatis di bawah default_catalog pada panel Direktori Data di halaman Metadata Management di E-MapReduce (EMR) StarRocks Manager. Semua log audit berikutnya disimpan dalam tabel tersebut.
Untuk melihat pernyataan yang digunakan untuk membuat tabel starrocks_audit_tbl, jalankan SHOW CREATE TABLE starrocks_audit_tbl;. Pernyataan pembuatannya adalah sebagai berikut.
CREATE TABLE `starrocks_audit_tbl` (
`queryId` varchar(64) NOT NULL COMMENT "ID unik dari kueri",
`timestamp` datetime NOT NULL COMMENT "Waktu saat kueri dimulai",
`queryTime` bigint(20) NOT NULL COMMENT "Waktu eksekusi kueri, dalam milidetik",
`queryType` varchar(12) NULL COMMENT "Jenis kueri, seperti query, slow_query, atau connection",
`clientIp` varchar(32) NULL COMMENT "Alamat IP klien",
`user` varchar(64) NULL COMMENT "Nama pengguna untuk kueri",
`authorizedUser` varchar(64) NULL COMMENT "Identitas unik pengguna, yaitu user_identity",
`resourceGroup` varchar(64) NULL COMMENT "Nama kelompok sumber daya",
`catalog` varchar(32) NULL COMMENT "Nama katalog data",
`db` varchar(96) NULL COMMENT "Database tempat kueri dijalankan",
`state` varchar(8) NULL COMMENT "Status kueri, seperti EOF, ERR, atau OK",
`errorCode` varchar(512) NULL COMMENT "Kode kesalahan",
`scanBytes` bigint(20) NULL COMMENT "Jumlah byte yang dipindai oleh kueri",
`scanRows` bigint(20) NULL COMMENT "Jumlah baris yang dipindai oleh kueri",
`returnRows` bigint(20) NULL COMMENT "Jumlah baris yang dikembalikan oleh kueri",
`cpuCostNs` bigint(20) NULL COMMENT "Waktu CPU yang dikonsumsi oleh kueri, dalam nanodetik",
`memCostBytes` bigint(20) NULL COMMENT "Memori yang dikonsumsi oleh kueri, dalam byte",
`stmtId` int(11) NULL COMMENT "ID inkremental dari pernyataan SQL",
`isQuery` tinyint(4) NULL COMMENT "Menunjukkan apakah pernyataan SQL merupakan kueri. Nilai valid: 1 (Ya) dan 0 (Tidak).",
`feIp` varchar(128) NULL COMMENT "Alamat IP frontend (FE) yang mengeksekusi pernyataan",
`stmt` varchar(1048576) NULL COMMENT "Pernyataan SQL asli",
`digest` varchar(32) NULL COMMENT "Sidik jari dari pernyataan SQL lambat",
`planCpuCosts` double NULL COMMENT "Waktu CPU yang dikonsumsi selama fase perencanaan kueri, dalam nanodetik",
`planMemCosts` double NULL COMMENT "Memori yang dikonsumsi selama fase perencanaan kueri, dalam byte",
`warehouse` varchar(96) NULL COMMENT "Kelompok komputasi yang digunakan oleh kueri",
`stmtType` varchar(8) NULL COMMENT "Jenis pernyataan SQL, seperti DQL, DML, DDL, DCL, atau OTHER",
`isFilter` tinyint(4) NULL COMMENT "Menunjukkan apakah pernyataan SQL difilter. Nilai valid: 1 (Ya) dan 0 (Tidak).",
`errorMsg` varchar(1048576) NULL COMMENT "Detail kesalahan",
`pendingTimeMs` bigint(20) NULL COMMENT "Waktu kueri menunggu dalam antrian, dalam milidetik",
`candidateMVs` varchar(65533) NULL COMMENT "Daftar tampilan yang di-materialisasi (MV) kandidat",
`hitMvs` varchar(65533) NULL COMMENT "Daftar MV yang terkena"
) ENGINE=OLAP
DUPLICATE KEY(`queryId`, `timestamp`, `queryTime`)
COMMENT "Tabel log audit"
PARTITION BY RANGE(`timestamp`)
(PARTITION p20250909 VALUES [("0000-01-01 00:00:00"), ("2025-09-10 00:00:00")),
PARTITION p20250910 VALUES [("2025-09-10 00:00:00"), ("2025-09-11 00:00:00")),
PARTITION p20250911 VALUES [("2025-09-11 00:00:00"), ("2025-09-12 00:00:00")),
PARTITION p20250912 VALUES [("2025-09-12 00:00:00"), ("2025-09-13 00:00:00")),
PARTITION p20250913 VALUES [("2025-09-13 00:00:00"), ("2025-09-14 00:00:00")))
DISTRIBUTED BY HASH(`queryId`) BUCKETS 3
PROPERTIES (
"compression" = "LZ4",
"datacache.enable" = "true",
"dynamic_partition.buckets" = "3",
"dynamic_partition.enable" = "true",
"dynamic_partition.end" = "3",
"dynamic_partition.history_partition_num" = "0",
"dynamic_partition.prefix" = "p",
"dynamic_partition.start" = "-30",
"dynamic_partition.time_unit" = "DAY",
"dynamic_partition.time_zone" = "Asia/Shanghai",
"enable_async_write_back" = "false",
"replication_num" = "1",
"storage_volume" = "builtin_storage_volume"
);