一.功能介紹
SQL日志審計是一個可插拔的插件,旨在将logs/fe.audit.log中的sql查詢資訊記錄到doris叢集中,友善使用者對sql進行分析。
二.安裝
1)編譯
在doris源碼目錄下,執行
sh build_plugin.sh
編譯完成後會在
fe_plugins/output
目錄下得到
auditloader.zip
檔案。
登入到doris用戶端,執行
INSTALL PLUGIN FROM "/opt/doris/auditloader.zip";
(可解除安裝: SHOW PLUGINS; UNINSTALL PLUGIN AuditLoader;)
此時,你會發現 fe/plugins 目錄下會有安裝成功的檔案。
2)配置檔案以及建表
vim /opt/doris/fe/plugins/AuditLoader
# 批量的最大大小,預設為 50MB
max_batch_size=52428800
# 批量加載的最大間隔,預設為 60 秒
max_batch_interval_sec=60
# 加載審計的 Doris FE 主機,預設為 127.0.0.1:8030。
# 這應該是Stream load 的主機端口
frontend_host_port=127.0.0.1:8030
# 審計表的資料庫
database=doris_audit_db__
# 審計表名,儲存審計資料
table=doris_audit_tbl__
# 用來連接配接doris的使用者. 此使用者必須對審計表具有 LOAD_PRIV 權限.
user=root
# 用來連接配接doris的使用者密碼
password=
建庫建表
create database doris_audit_db__;
use doris_audit_db__;
create table doris_audit_tbl__
(
query_id varchar(48) comment "查詢唯一ID",
time datetime not null comment "查詢開始時間",
client_ip varchar(32) comment "查詢用戶端IP",
user varchar(64) comment "查詢使用者名",
db varchar(96) comment "查詢的資料庫",
state varchar(8) comment "查詢狀态:EOF, ERR, OK",
query_time bigint comment "查詢執行時間(毫秒)",
scan_bytes bigint comment "查詢掃描的位元組數",
scan_rows bigint comment "查詢掃描的記錄行數",
return_rows bigint comment "查詢傳回的結果記錄數",
stmt_id int comment "SQL語句的增量ID",
is_query tinyint comment "這個是否是查詢:1 or 0",
frontend_ip varchar(32) comment "執行這個語句的FE IP",
stmt varchar(65535) comment "原始語句,如果超過 5000 位元組,則進行修剪"
) engine=OLAP
duplicate key(query_id, time, client_ip)
partition by range(time) ()
distributed by hash(query_id) buckets 1
properties(
"dynamic_partition.time_unit" = "DAY",
"dynamic_partition.start" = "-30",
"dynamic_partition.end" = "3",
"dynamic_partition.prefix" = "p",
"dynamic_partition.buckets" = "1",
"dynamic_partition.enable" = "true",
"replication_num" = "3"
);
審計日志預設保留30天("dynamic_partition.start" = "-30")
三.驗證
重新開機doris,在表中即可發現審計資料。