StarRocks將所有審計日志存儲在本地文件fe/log/fe.audit.log
中,并且這些日志無法通過系統內部數據庫訪問。啟用審計日志功能將安裝AuditLoader插件,該插件能夠從本地文件中讀取日志,并通過HTTP PUT方法將其導入StarRocks數據庫,方便您能夠查看并分析數據庫中發生的所有操作。
前提條件
已創建Serverless StarRocks實例,詳情請參見創建實例。
開啟審計日志
- 進入EMR Serverless StarRocks實例詳情頁面。
- 登錄EMR Serverless控制臺。
- 在頂部菜單欄處,根據實際情況選擇地域。
- 單擊目標實例的實例名稱。
單擊右上角的開啟審計日志。
在開啟審計日志對話框中,單擊確定。
即可一鍵安裝AuditLoader插件。同時,會在您的StarRocks實例中自動創建數據庫_starrocks_audit_db_和數據表starrocks_audit_tbl,后續所有的審計日志都會存儲于該表中。
說明目前,審計日志使用了動態分區的方式,默認存儲前3天和后30天的審計數據。根據您的業務需求,您可以自行調整審計數據的存儲時間,即修改
dynamic_partition.start
和dynamic_partition.end
的參數值。數據庫_starrocks_audit_db_和數據表starrocks_audit_tbl的創建語句如下所示。
CREATE DATABASE _starrocks_audit_db_; CREATE TABLE _starrocks_audit_db_.starrocks_audit_tbl( `queryId` VARCHAR(48) COMMENT "Unique query ID", `timestamp` DATETIME NOT NULL COMMENT "Query start time", `queryType` VARCHAR(12) COMMENT "Query type (query, slow_query)", `clientIp` VARCHAR(32) COMMENT "Client IP address", `user` VARCHAR(64) COMMENT "User who initiates the query", `authorizedUser` VARCHAR(64) COMMENT "user_identity", `resourceGroup` VARCHAR(64) COMMENT "Resource group name", `catalog` VARCHAR(32) COMMENT "Catalog name", `db` VARCHAR(96) COMMENT "Database that the query scans", `state` VARCHAR(8) COMMENT "Query state (EOF, ERR, OK)", `errorCode` VARCHAR(96) COMMENT "Error code", `queryTime` BIGINT COMMENT "Query latency in milliseconds", `scanBytes` BIGINT COMMENT "Size of the scanned data in bytes", `scanRows` BIGINT COMMENT "Row count of the scanned data", `returnRows` BIGINT COMMENT "Row count of the result", `cpuCostNs` BIGINT COMMENT "CPU resources consumption time for query in nanoseconds", `memCostBytes` BIGINT COMMENT "Memory cost for query in bytes", `stmtId` INT COMMENT "Incremental SQL statement ID", `isQuery` TINYINT COMMENT "If the SQL is a query (0 and 1)", `feIp` VARCHAR(32) COMMENT "IP address of FE that executes the SQL", `stmt` STRING COMMENT "SQL statement", `digest` VARCHAR(32) COMMENT "SQL fingerprint", `planCpuCosts` DOUBLE COMMENT "CPU resources consumption time for planning in nanoseconds", `planMemCosts` DOUBLE COMMENT "Memory cost for planning in bytes" ) ENGINE = OLAP DUPLICATE KEY (`queryId`, `timestamp`, `queryType`) COMMENT "Audit log table" PARTITION BY RANGE (`timestamp`) () DISTRIBUTED BY HASH (`queryId`) BUCKETS 3 PROPERTIES ( "dynamic_partition.time_unit" = "DAY", "dynamic_partition.start" = "-30", "dynamic_partition.end" = "3", "dynamic_partition.prefix" = "p", "dynamic_partition.buckets" = "3", "dynamic_partition.enable" = "true", "replication_num" = "3" );
(可選)驗證安裝并查詢審計日志。
連接StarRocks實例,詳情請參見通過客戶端方式連接StarRocks實例。
在SQL Editor中執行以下語句,檢查插件是否安裝成功。
SHOW PLUGINS;
當返回信息中AuditLoader的Status為INSTALLED時,即代表安裝成功。
執行任意SQL語句以生成審計日志,并等待60秒以允許AuditLoader將審計日志批量導入至StarRocks。
執行以下命令,查看表中是否有數據,有數據則說明讀取操作成功。
SELECT * FROM _starrocks_audit_db_.starrocks_audit_tbl;
關閉審計日志
由于審計日志需要占用StarRocks實例的存儲空間,如果您希望節省存儲空間,可以關閉該功能。
- 進入EMR Serverless StarRocks實例詳情頁面。
- 登錄EMR Serverless控制臺。
- 在頂部菜單欄處,根據實際情況選擇地域。
- 單擊目標實例的實例名稱。
單擊右上角的關閉審計日志。
在關閉審計日志對話框中,單擊確定。
即可一鍵卸載AuditLoader插件。關閉審計日志后,數據庫_starrocks_audit_db_和數據表starrocks_audit_tbl不會被刪除,只會停止記錄數據訪問信息。如有必要,您可以手動刪除這些庫表以釋放空間。