【Apache Doris】审计日志插件 | 快速体验
【Apache Doris】审计日志插件 | 快速体验
- 一、 环境信息
- 1.1 硬件信息
- 1.2 软件信息
- 二、 审计日志插件介绍
- 三、 快速 体验
- 3.1 AuditLoader 配置
- 3.1.1 下载 Audit Loader 插件
- 3.1.2 解压安装包
- 3.1.3 修改 plugin.conf
- 3.2 创建库表
- 3.3 初始化
- 3.4 验证
一、 环境信息
1.1 硬件信息
- CPU :48C
- CPU型号:x86_64
- 内存 :185GB
1.2 软件信息
- 系统 :CentOS
- Apahce Doris版本 :2.0.2
- 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 解压安装包
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 属性根据自己的需要,选择审计日志保留的天数。
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 初始化
INSTALL PLUGIN FROM [source] [PROPERTIES ("key"="value", ...)]
source 支持三种类型:
- 指向一个 zip 文件的绝对路径。
- 指向一个插件目录的绝对路径。
- 指向一个 http 或 https 协议的 zip 文件下载路径
Example:
- 安装一个本地 zip 文件插件:
INSTALL PLUGIN FROM "/home/users/doris/auditdemo.zip";
- 安装一个本地目录中的插件:
INSTALL PLUGIN FROM "/home/users/doris/auditdemo/";
- 下载并安装一个插件:注意需要放置一个和 .zip 文件同名的 md5 文件, 如 http://mywebsite.com/plugin.zip.md5 。其中内容为 .zip 文件的 MD5 值。
INSTALL PLUGIN FROM "http://mywebsite.com/plugin.zip";
- 下载并安装一个插件,同时设置了zip文件的md5sum的值:
INSTALL PLUGIN FROM "http://mywebsite.com/plugin.zip" PROPERTIES("md5sum" = "73877f6029216f4314d712086a146570");
执行install成功后会在fe/plugins/目录下自动生成AuditLoader目录
3.4 验证
执行如下sql验证是否安装注册成功,Status为INSTALLED则说明安装成功
直接通过sql查询审计日志,快速体验。
select*
fromdoris_audit_db__.doris_audit_log_tbl__
wheretime > '2023-11-11 00:00:00'and stmt like '%ssb_test.part%'
order bytime desc
limit 10;
【Apache Doris】审计日志插件 | 快速体验 分享至此结束,体验过程中若遇到问题欢迎留言交流
相关文章:

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

Web安全:Vulfocus 靶场搭建.(漏洞集成平台)
Web安全:Vulfocus 靶场搭建.(漏洞集成平台) Vulfocus 是一个包含了多种漏洞靶场的镜像。每个靶场都有具体的漏洞环境和攻击点。Vulfocus 的靶场包括了 Web 安全漏洞、系统安全漏洞、网络安全漏洞、密码学漏洞等多种类型。通关这个靶场我们可以…...

Go ZIP压缩文件读写操作
创建zip文件 golang提供了archive/zip包来处理zip压缩文件,下面通过一个简单的示例来展示golang如何创建zip压缩文件: func createZip(filename string) {// 缓存压缩文件内容buf : new(bytes.Buffer)// 创建zipwriter : zip.NewWriter(buf)defer writ…...

全堆栈图像生成器专为Multiverse后端Bootcamp设计,结合了React、Firebase和Hugging Face API
目录 1 Full Stack Image Generator 1.1 Features 1.2 Technologies Used 1.3 Setup Instructions 1.4 Contributing 1.5 Acknowledgements Full Stack Image Generator This is a full-stack image generator built as a part of the Multiverse Backend Bootcam…...

【C#学习】button:只显示图片
第一步:设置按钮背景图片,并且图片随按钮大小变化 第二步:设置按钮使之只显示图片 button1.FlatStyle FlatStyle.Flat;//stylebutton1.ForeColor Color.Transparent;//前景button1.BackColor Color.Transparent;//去背景button1.FlatAppe…...

我招基础初级运维实习生的面试题
不考虑对错,只要能答上来60%可面试。 如果出现的“不知道”、“不清楚”、“没用过”太多,就pass。 Linux发行版 说一些知道的Linux系统 centos\ubuntu\redhat\ubuntu\debian\kylin LInux基础命令 在Linux上如何查看IP?说一个用过的。 i…...

vue实现浏览器关闭或刷新弹窗提示(beforeunload/unload)
vue实现浏览器关闭或刷新弹窗提示 一、推荐代码二、错误情况说明1.在beforeunload事件里面加alert2.在一个没有焦点的 iframe 或 frame 浏览器会阻止 beforeunload 弹窗3.无法触发destroyed/beforedestroyed/deactivated4.能触发beforeRouteEnter,但不能触发beforeR…...

Zookeeper学习笔记(1)—— 基础知识
Zookeeper概述 Zookeeper 是一个开源的分布式的,为分布式框架提供协调服务的 Apache 项目 工作机制 Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受…...

mp4视频批量截取!!!
mp4视频批量截取!!! 问题:如果我们想截取一个mp4视频中的多个片段,一个一个截会很麻烦! 可以将想要截取的开始时间和结束时间保存到 excel表 中,进行批量截取。 1、对一个视频,记…...

jQuery - AJAX get() 和 post() 方法
jQuery - AJAX get() 和 post() 方法 jQuery get() 和 post() 方法用于通过 HTTP GET 或 POST 请求从服务器请求数据。 HTTP 请求:GET vs POST 两种在客户端和服务器端进行请求-响应的常用方法是:GET 和 POST。 GET - 从指定的资源请求数据 POST - 向…...

设计模式(4)-行为型模式
行为型模式 行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。 行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间…...

JavaScript概述
一、JavaScript简介: JavaScript是互联网上流行的脚本语言,可用于HTML和web,可广泛应用于服务器、PC、笔记本、平板电脑和智能手机等设备。 JavaScript是一种轻量级的编程语言,可插入HTML页面的编程代码,插入HTML页面后…...

Solidity案例详解(四)投票智能合约
该合约为原创合约,功能要求如下 在⼀定时间能进⾏投票超过时间投票截⽌,并投赞同票超过50%则为通过。 使⽤safeMath库,使⽤Owner 第三⽅库拥有参与投票权的⽤户在创建合约时确定Voter 结构 要有时间戳、投票是否同意等;struct 结构…...

Linux系统编程——进程中vfork函数
函数原型 pid_t vfork(void);//pid_t是无符号整型 所需头文件 #include <sys/types.h> #include <unistd.h> 功能 vfork() 函数和 fork() 函数一样都是在已有的进程中创建一个新的进程,但它们创建的子进程是有区别的。 返回值 成功子进程中返回 …...

敏感数据是什么?包含哪些?如何保障安全?
最近看到不少小伙伴在问,敏感数据是什么?包含哪些?如何保障安全?这里我们小编就给大家一一解答一下,仅供参考哦! 敏感数据是什么? 敏感数据,是指泄漏后可能会给社会或个人带来严重危…...

Leadshop开源商城小程序源码 – 支持公众号H5
Leadshop是一款出色的开源电商系统,具备轻量级、高性能的特点,并提供持续更新和迭代服务。该系统采用前后端分离架构(uniappyii2.0),以实现最佳用户体验为目标。 前端部分采用了uni-app、ES6、Vue、Vuex、Vue Router、…...

Scala---方法与函数
一、Scala方法的定义 有参方法&无参方法 def fun (a: Int , b: Int) : Unit {println(ab) } fun(1,1)def fun1 (a: Int , b: Int) ab println(fun1(1,2)) 注意点: 方法定义语法 用def来定义可以定义传入的参数,要指定传入参数的类型方法可以写返…...

【C++】泛型编程 ④ ( 函数模板 与 普通函数 调用规则 | 类型自动转换 | 类型自动转换 + 显式指定泛型类型 )
文章目录 一、普通函数 与 函数模板 的调用规则 - 类型自动转换1、函数模板和重载函数2、类型自动转换3、代码示例 - 类型自动转换 二、普通函数 与 函数模板 的调用规则 - 类型自动转换 显式指定泛型类型1、类型自动转换 显式指定泛型类型2、代码示例 - 类型自动转换 显式指…...

基于ChatGPT的文本生成艺术框架—WordArt Designer
WordArt Designer是一个基于gpt-3.5 turbo的艺术字生成框架,包含四个关键模块:LLM引擎、SemTypo、Styltypo和TextTypo模块。由gpt-3.5 turbo驱动的LLM引擎可以解释用户输入,从而将抽象概念转化为具体的设计。 SemTypo模块使用语义概念优化字体设计&…...

服务名无效。 请键入 NET HELPMSG 2185以获得更多的帮助
遇到的问题是MySQL服务没有。 因为net start 服务名,启动的是win下注册的服务。此时,我系统中并没有注册mysql到服务中。即下面没有mysql服务。 mysqld --install net start mysql...

UE5——C++编译MSB3073报错
报错: C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Microsoft\VC\v170\Microsoft.MakeFile.Targets(50,5): error MSB3073: 命令“D:\0_Game\EpicGame\UE_5.1\Engine\Build\BatchFiles\Rebuild.bat DigitalVisualizationEditor Win64 Deve…...

自己动手实现一个深度学习算法——六、与学习相关的技巧
文章目录 1.参数的更新1)SGD2)Momentum3)AdaGrad4)Adam5)最优化方法的比较6)基于MNIST数据集的更新方法的比较 2.权重的初始值1)权重初始值不能为02)隐藏层的激活值的分布3ÿ…...

Maven间接依赖
目录 背景 依赖标签 依赖的作用域 Maven仲裁机制 场景示例 多个pom树合并打包...

Java架构师分布式搜索数据准确性解决方案
目录 1 Elasticsearch内置分词器1.1 Standard(标准分词器)1.2 Simple(简单分词器)1.3 Whitespace(空格分词器)1.4 Stop(停止分词器)1.5 Keyword(关键字分词器)1.6 Pattern(模板分词器)1.7 Language(语言分词器)1.8 Fingerprint(指纹分词器)2 Es 模糊查询 match…...

Clickhouse学习笔记
学习内容参考:一套上手ClickHouse-OLAP分析引擎,囊括Prometheus与Grafana_哔哩哔哩_bilibili 下为笔记链接,以及全套笔记pdf版本 Clickhouse学习笔记(1)—— ClickHouse的安装启动_clickhouse后台启动_THE WHY的博客-C…...

vim——“Linux”
各位CSDN的uu们好呀,今天,小雅兰的内容是Linux的开发工具——vim。下面,我们一起进入Linux的世界吧!!! Linux编辑器-vim使用 vim的基本概念 vim的基本操作 vim正常模式命令集 vim末行模式命令集 vim操…...

【QT深入理解】QT中的几种常用的排序函数
第一章:排序函数的概述 排序函数是一种在编程中常用的函数,它可以对一个序列(如数组,列表,向量等)中的元素进行排序,使其按照一定的顺序排列。排序函数可以根据不同的排序算法,如冒…...

自压缩llm 为 超长记忆
自压缩llm 为 超长记忆 解释数据处理实际例子解释 # 自压缩llm 为 超长记忆 # prompt 格式 # <|细颗粒词表|><|粗颗粒词表|><|细颗粒词表|> # 细颗粒词表 = 词1,词2,词3,词4,词5,词6,词7,词8,词9,词10, # 组颗粒词表id1, 组颗粒词表id2, 组颗粒…...

Perl的LWP::UserAgent库爬虫程序怎么写
Perl的LWP::UserAgent库是一个用于发送HTTP请求的Perl模块。它可以用于编写Web爬虫、测试Web应用程序、自动化Web操作等。以下是一个简单的使用LWP::UserAgent库发送HTTP GET请求的Perl脚本的例子: #!/usr/bin/perluse strict; use warnings; use LWP::UserAgent;# …...

【算法】算法题-20231116
这里写目录标题 一、合并两个有序数组(力扣88 )二、剑指 Offer 39. 数组中出现次数超过一半的数字三、移除元素(力扣27)四、找出字符串中第一个匹配项的下标(28) 一、合并两个有序数组(力扣88 &…...