【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 硬件信息

  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 解压安装包

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:

  1. 安装一个本地 zip 文件插件:
INSTALL PLUGIN FROM "/home/users/doris/auditdemo.zip";
  1. 安装一个本地目录中的插件:
INSTALL PLUGIN FROM "/home/users/doris/auditdemo/";
  1. 下载并安装一个插件:注意需要放置一个和 .zip 文件同名的 md5 文件, 如 http://mywebsite.com/plugin.zip.md5 。其中内容为 .zip 文件的 MD5 值。
INSTALL PLUGIN FROM "http://mywebsite.com/plugin.zip";
  1. 下载并安装一个插件,同时设置了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】审计日志插件 | 快速体验 分享至此结束,体验过程中若遇到问题欢迎留言交流

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/144619.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vscode文件夹折叠问题

今天发现一个vscode的文件夹显示的问题&#xff0c;首先是这样的&#xff0c;就是我的文件夹里又一个子文件夹&#xff0c;子文件夹里有一些文件&#xff0c;但是我发现无法折叠起这个子文件夹&#xff0c;总是显示全部的文件&#xff0c;这让我备份很难&#xff0c;具体参考 h…

C51--PC通过串口(中断)点亮LED

B4中的&#xff1a;REN允许 / 禁止串行接收控制位 REN 1为允许串行接收状态。 接收数据必须开启。所以SCON&#xff1a;0101 0000 &#xff1b;即0x50 如何知道数据已经接收 RI位&#xff1a;当收到数据后 RI 1&#xff08;由硬件置一&#xff09; 硬件置一后必须用软件…

【广州华锐互动】VR居家防火逃生模拟演练增强训练的真实性

VR软件开发公司广州华锐互动在消防培训领域已开发了多款VR产品&#xff0c;今天为大家介绍VR居家防火逃生模拟演练系统&#xff0c;这是一种基于虚拟现实技术的消防教育训练设备&#xff0c;通过模拟真实的火灾场景&#xff0c;让使用者身临其境地体验火灾逃生过程&#xff0c;…

搭建成功simulink-stm32硬件在环开发环境

本次实验所使用的软件版本和硬件平台参数如下&#xff1a; Matlab版本: 2021b STM32硬件平台&#xff1a;YF_STM32_Alpha 1R4(参考自STM32 Nucleo F103RB官方开发板) YF_STM32_Alpha开发板 STM32 Nucleo F103RB 开发板 2.1 STM32硬件支持包下载 读者朋友平时使用的是和谐版M…

在vue项目里面使用index.ts进行统一导出

目录 一、概述 二、具体实践 2.1创建目录 2.2index.ts文件内容展示 2.2在需要的vue文件里面import 2.3vue全代码 三、实际效果 一、概述 一般我们在做项目的时候会发现vue文件里面没有export default 转而替代的是使用同目录下index.ts进行统一导出 好处&#xff1a;能…

Flutter有状态组件StatefulWidget生命周期

StatefulWidget是Flutter中的一个有状态的组件&#xff0c;它的生命周期相对复杂一些。下面是StatefulWidget的生命周期方法及其调用顺序&#xff1a; 1. createState(): 当StatefulWidget被插入到Widget树中时&#xff0c;会调用createState()方法来创建与之关联的State对象。…

【开源】基于Vue.js的校园二手交易系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目详细录屏 二、功能模块2.1 数据中心模块2.2 二手商品档案管理模块2.3 商品预约管理模块2.4 商品预定管理模块2.5 商品留言板管理模块2.6 商品资讯管理模块 三、实体类设计3.1 用户表3.2 二手商品表3.3 商品预约表3.4 商品预定表3.5 留言表3.6…

如何正确使用GPT工具

引言 在快速发展的数字时代&#xff0c;人工智能&#xff08;AI&#xff09;已成为科研领域的一个不可或缺的工具。特别是像ChatGPT这样的AI聊天机器人&#xff0c;它通过高效的语言模型和深度学习算法&#xff0c;为科研工作者提供了前所未有的辅助。从文献搜索到数据分析&…

sqlmap requires ‘python-pymysql‘ third-party library

使用sqlmap进行udf提权报错&#xff1a; [14:06:04] [CRITICAL] sqlmap requires python-pymysql third-party library in order to directly connect to the DBMS MySQL. You can download it from https://github.com/PyMySQL/PyMySQL. Alternative is to use a package pyt…

asp.net core mvc之 过滤器

过滤器允许我们在Action执行之前和执行之后去执行一下业务代码 一、过滤器的作用域 1、全局过滤器&#xff0c; 在Startup.cs文件中注册 2、控制器过滤器&#xff0c; 在控制器类上面使用标注 3、action过滤器 二、全局过滤器使用 1、在 core 目录&#xff0c;添加 TestA…

MySQL(18):MySQL8.0的其它新特性

MySQL从5.7版本直接跳跃发布了8.0版本。 MySQL8.0 新增特征 1.更简便的NoSQL支持。 NoSQL泛指非关系型数据库和数据存储。随着互联网平台的规模飞速发展&#xff0c;传统的关系型数据库已经越来越不能满足需求。从5.6版本开始&#xff0c;MySQL就开始支持简单的NoSQL存储功能…

Servlet 常见的API

文章目录 写在前面Smart Tomcat 插件Servlet 中常见的API1. HttpServletinit 方法destroy 方法service 方法Servlet 的生命周期 使用 postman 构造请求使用 ajax 构造请求2. HttpServletRequest3. 前端给后端传参1). GET, query string2). POST, form3). json 4. HttpServletRe…

11_聚类算法

文章目录 1 聚类1.1 什么是聚类1.2 相似度/距离公式1.3 聚类的思想 2 K-means算法2.1 K-means算法步骤2.2 K-means算法思考2.3 K-means算法优缺点 3 解决K-Means算法对初始簇心比较敏感的问题3.1 二分K-Means算法3.2 K-Means算法3.3 K-Means||算法3.4 Canopy算法3.4.1 Canopy算…

Postman实现接口的加密和解密

近期在复习Postman的基础知识&#xff0c;在小破站上跟着百里老师系统复习了一遍&#xff0c;也做了一些笔记&#xff0c;希望可以给大家一点点启发。 1、目前市面上的加密的方式 对称式加密&#xff1a;DES&#xff0c;AES&#xff0c;Base64加密算法 非对称加密&#xff1a…

elasticsearch+canal增量、全量同步

目录 一、搭建环境&#xff1a; 1.1 下载软件上传到linux目录/data/soft下 1.2 把所有软件解压到/data/es-cluster 二、单节点&#xff08;多节点同理&#xff09;集群部署elasticsearch 2.1 创建es用户 2.2 准备节点通讯证书 2.3 配置elasticsearch&#xff0c;编辑/d…

城市内涝对策,万宾科技内涝积水监测仪使用效果

随着城市化进程的加速&#xff0c;城市道路积水问题明显越来越多&#xff0c;给人们的出行和生活带来更多的不便。内涝积水监测仪作为高科技产品能够实时监测道路积水情况&#xff0c;为城市排水系统的管理和维护提供重要的帮助。 在城市生命线的基础设施规划之中&#xff0c;地…

【Spring】Spring中的DI(依赖注入)Dependence Import

由之前的IoC可以知道&#xff0c;我们写在具体对象后面的new方法肯定不能要了&#xff0c;这时候就要通过依赖注入的形式将Dao配置到Service中 Dependence Import的步骤如下&#xff1a; 1. 在Service类中给Dao提供setter方法 原本我们是直接给bookDao new了一个对象 public …

【AI视野·今日Sound 声学论文速览 第三十四期】Thu, 26 Oct 2023

AI视野今日CS.Sound 声学论文速览 Thu, 26 Oct 2023 Totally 9 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers Dynamic Processing Neural Network Architecture For Hearing Loss Compensation Authors Szymon Drgas, Lars Bramsl w, Archontis Poli…

AW2013芯片讲解

文章目录 前言一、AW2013芯片介绍二、AW2013从机地址三、AW2013读写时序AW2013写时序AW2013读时序 四、AW2013的INT引脚五、LED作用和配置描述LED控制PWM控制模式简短编程模式 六、AW2013寄存器讲解总结 前言 本篇文章将带大家学习AW2013芯片的使用。 一、AW2013芯片介绍 AW…

websocket学习笔记【springboot+websocket聊天室demo】

文章目录 WebSocket是什么&#xff1f;为什么需要WebSocket?WebSocket和Http连接的区别WebSocket的工作原理基本交互过程&#xff1a; Java中的WebSocket支持WebSocket的优势springboot websocket themlef 一个聊天室demopom.xmlWebSocketConfigChatControllerWebController…