【Apache Doris】审计日志插件 | 快速体验

【Apache Doris】审计日志插件 | 快速体验

  • [一、 环境信息](#一、 环境信息)
    • [1.1 硬件信息](#1.1 硬件信息)
    • [1.2 软件信息](#1.2 软件信息)
  • [二、 审计日志插件介绍](#二、 审计日志插件介绍)
  • [三、 快速 体验](#三、 快速 体验)
    • [3.1 AuditLoader 配置](#3.1 AuditLoader 配置)
      • [3.1.1 下载 Audit Loader 插件](#3.1.1 下载 Audit Loader 插件)
      • [3.1.2 解压安装包](#3.1.2 解压安装包)
      • [3.1.3 修改 plugin.conf](#3.1.3 修改 plugin.conf)
    • [3.2 创建库表](#3.2 创建库表)
    • [3.3 初始化](#3.3 初始化)
    • [3.4 验证](#3.4 验证)

一、 环境信息

1.1 硬件信息

  1. CPU :48C
  2. CPU型号:x86_64
  3. 内存 :185GB

1.2 软件信息

  1. 系统 :CentOS
  2. Apahce Doris版本 :2.0.2
  3. JAVA版本:1.8.0

二、 审计日志插件介绍

Doris默认装了是审计日志,即会将执行的SQL都记录到fe/log/fe.audit.log日志里,但如果需要映射到表、通过SQL的方式去查询解析这些日志的话,则需要安装配置审计日志插件。

Doris 的审计日志插件是在 FE 的插件框架基础上开发的,是一个可选插件。用户可以在运行时安装或卸载这个插件。

审计日志插件可以将 FE 的审计日志定期的导入到指定 Doris 集群中,以方便用户通过 SQL 对审计日志进行查看和分析。

三、 快速 体验

3.1 AuditLoader 配置

3.1.1 下载 Audit Loader 插件

Audit Loader 插件在 Doris 的发行版中默认提供,通过官网下载 Doris 安装包解压并进入目录后即可在 extensions/audit_loader 子目录下找到 auditloader.zip 文件。

3.1.2 解压安装包

shell 复制代码
unzip auditloader.zip

解压生成如下3个文件:

  • auditloader.jar:插件代码包。
  • plugin.properties:插件属性文件。
  • plugin.conf:插件配置文件。

3.1.3 修改 plugin.conf

以下配置可供修改:

  • frontend_host_port:FE 节点 IP 地址和 HTTP 端口,格式为 <fe_ip>:<fe_http_port>。 默认值为 127.0.0.1:8030。
  • database:审计日志库名,默认即可、需要与上一步的【创建库表】一致。
  • audit_log_table:审计日志表名,默认即可、需要与上一步的【创建库表】一致。
  • slow_log_table:慢查询日志表名,默认即可、需要与上一步的【创建库表】一致。
  • enable_slow_log:是否开启慢查询日志导入功能。默认值为 false。
  • user:集群用户名。该用户必须具有对应表的 INSERT 权限。
  • password:集群用户密码。

3.2 创建库表

在 Doris 中,需要创建审计日志的库和表,表结构如下:

若需开启慢查询日志导入功能,还需要额外创建慢表 doris_slow_log_tbl__,其表结构与 doris_audit_log_tbl__ 一致。

其中 dynamic_partition 属性根据自己的需要,选择审计日志保留的天数。

sql 复制代码
create database doris_audit_db__;

create table doris_audit_db__.doris_audit_log_tbl__
(
    query_id varchar(48) comment "Unique query id",
    `time` datetime not null comment "Query start time",
    client_ip varchar(32) comment "Client IP",
    user varchar(64) comment "User name",
    catalog varchar(128) comment "Catalog of this query",
    db varchar(96) comment "Database of this query",
    state varchar(8) comment "Query result state. EOF, ERR, OK",
    error_code int comment "Error code of failing query.",
    error_message string comment "Error message of failing query.",
    query_time bigint comment "Query execution time in millisecond",
    scan_bytes bigint comment "Total scan bytes of this query",
    scan_rows bigint comment "Total scan rows of this query",
    return_rows bigint comment "Returned rows of this query",
    stmt_id int comment "An incremental id of statement",
    is_query tinyint comment "Is this statemt a query. 1 or 0",
    frontend_ip varchar(32) comment "Frontend ip of executing this statement",
    cpu_time_ms bigint comment "Total scan cpu time in millisecond of this query",
    sql_hash varchar(48) comment "Hash value for this query",
    sql_digest varchar(48) comment "Sql digest for this query",
    peak_memory_bytes bigint comment "Peak memory bytes used on all backends of this query",
    stmt string comment "The original statement, trimed if longer than 2G"
) 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"
);

create table doris_audit_db__.doris_slow_log_tbl__
(
    query_id varchar(48) comment "Unique query id",
    `time` datetime not null comment "Query start time",
    client_ip varchar(32) comment "Client IP",
    user varchar(64) comment "User name",
    catalog varchar(128) comment "Catalog of this query",
    db varchar(96) comment "Database of this query",
    state varchar(8) comment "Query result state. EOF, ERR, OK",
    error_code int comment "Error code of failing query.",
    error_message string comment "Error message of failing query.",
    query_time bigint comment "Query execution time in millisecond",
    scan_bytes bigint comment "Total scan bytes of this query",
    scan_rows bigint comment "Total scan rows of this query",
    return_rows bigint comment "Returned rows of this query",
    stmt_id int comment "An incremental id of statement",
    is_query tinyint comment "Is this statemt a query. 1 or 0",
    frontend_ip varchar(32) comment "Frontend ip of executing this statement",
    cpu_time_ms bigint comment "Total scan cpu time in millisecond of this query",
    sql_hash varchar(48) comment "Hash value for this query",
    sql_digest varchar(48) comment "Sql digest for this query",
    peak_memory_bytes bigint comment "Peak memory bytes used on all backends of this query",
    stmt string comment "The original statement, trimed if longer than 2G "
) 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"
);

3.3 初始化

sql 复制代码
INSTALL PLUGIN FROM [source] [PROPERTIES ("key"="value", ...)]

source 支持三种类型:

  • 指向一个 zip 文件的绝对路径。
  • 指向一个插件目录的绝对路径。
  • 指向一个 http 或 https 协议的 zip 文件下载路径

Example:

  1. 安装一个本地 zip 文件插件:
sql 复制代码
INSTALL PLUGIN FROM "/home/users/doris/auditdemo.zip";
  1. 安装一个本地目录中的插件:
sql 复制代码
INSTALL PLUGIN FROM "/home/users/doris/auditdemo/";
  1. 下载并安装一个插件:注意需要放置一个和 .zip 文件同名的 md5 文件, 如 http://mywebsite.com/plugin.zip.md5 。其中内容为 .zip 文件的 MD5 值。
sql 复制代码
INSTALL PLUGIN FROM "http://mywebsite.com/plugin.zip";
  1. 下载并安装一个插件,同时设置了zip文件的md5sum的值:
sql 复制代码
INSTALL PLUGIN FROM "http://mywebsite.com/plugin.zip" PROPERTIES("md5sum" = "73877f6029216f4314d712086a146570");

执行install成功后会在fe/plugins/目录下自动生成AuditLoader目录

3.4 验证

执行如下sql验证是否安装注册成功,Status为INSTALLED则说明安装成功

直接通过sql查询审计日志,快速体验。

sql 复制代码
select
	*
from
	doris_audit_db__.doris_audit_log_tbl__
where
	time > '2023-11-11 00:00:00'
	and stmt like '%ssb_test.part%'
order by
	time desc
limit 10;

【Apache Doris】审计日志插件 | 快速体验 分享至此结束,体验过程中若遇到问题欢迎留言交流

相关推荐
点赋科技1 分钟前
沙市区举办资本市场赋能培训会 点赋科技分享智能消费新实践
大数据·人工智能
杨过姑父11 分钟前
部署开源版禅道,修改apache端口无效解决
bug·apache·软件工程·issue
未来之窗软件服务21 分钟前
JAVASCRIPT 前端数据库-V1--仙盟数据库架构-—-—仙盟创梦IDE
数据库·数据库架构·仙盟创梦ide·东方仙盟数据库
YSGZJJ22 分钟前
股指期货技术分析与短线操作方法介绍
大数据·人工智能
Doker 多克27 分钟前
Flink CDC —部署模式
大数据·flink
LjQ204029 分钟前
网络爬虫一课一得
开发语言·数据库·python·网络爬虫
Guheyunyi31 分钟前
监测预警系统重塑隧道安全新范式
大数据·运维·人工智能·科技·安全
烙印60134 分钟前
MyBatis原理剖析(二)
java·数据库·mybatis
RestCloud35 分钟前
如何通过ETLCloud实现跨系统数据同步?
数据库·数据仓库·mysql·etl·数据处理·数据同步·集成平台
你是狒狒吗36 分钟前
TM中,return new TransactionManagerImpl(raf, fc);为什么返回是new了一个新的实例
java·开发语言·数据库