一.功能介绍
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,在表中即可发现审计数据。