Scanner 使用说明
一、简介
Scanner 是审核任务管理中负责解析并上传 SQL 的组件。 不同场景下的 Scanner 会有不同的解析行为,但它们最终都需要通过统一的 API 接口将 SQL 上传到 SQLE。由于 Scanner 是 审核任务功能对应的组件,所以在使用前需要创建审核任务,具体操作步骤见审核任务管理。
二、Scanner 存放位置
Scanner 打包在 SQLE RPM 中。在部署完 SQLE Server后(部署方式见安装部署), Scanner 的二进制放在 ${SQLE的工作目录}/bin
目录下。如下:
[root@sqle-server bin]# pwd
/opt/sqle/bin
[root@sqle-server bin]# ll
total 62816
-rwxr-x--- 1 actiontech-universe actiontech 25064378 Sep 27 13:16 scannerd
-rwxr-x--- 1 actiontech-universe actiontech 39254854 Sep 27 13:16 sqled
三、Scanner 介绍
1. MyBatis Scanner
概述
MyBatis Scanner 通过指定代码目录,扫描并解析目录中的 MyBatis XML 文件得到 SQL 语句。MyBatis Scanner 将解析出的 SQL 上传至 SQLE Server 后,触发审核并得到审核结果。如果审核结果中包含 Error 级别的错误(指触发了 Error 级别的审核规则),则将退出码(Exit Code)置为非 0。
参数说明
[root@sqle-server bin]# ./scannerd mybatis --help
Parse MyBatis XML file
Usage:
SQLE mybatis [flags]
Flags:
-D, --dir string xml directory
-h, --help help for mybatis
-S, --skip-error-query skip the statement that the scanner failed to parse from within the xml file
Global Flags:
-H, --host string sqle host (default "127.0.0.1")
-N, --name string audit plan name
-P, --port string sqle port (default "10000")
-A, --token string sqle token
- host:SQLE Server 所在的主机 IP 地址(默认是当前主机)
- port:SQLE Server 提供 HTTP 服务的端口(默认是 10000)
- name:审核任务名(表示 Scanner 将 SQL 上传至哪个审核任务的 SQL 池)
- token:审核任务上传凭证(具体值可到审核任务列表页中访问凭证列中获取)
- dir: Mybatis XML 对应的文件夹
- skip-error-query: 如果scanner从xml中获取的SQL无法解析将会忽略这条SQL
常见场景
通过集成到 CI/CD 进行开发阶段 SQL 审核, 通过持续的审核代码仓库中的 SQL 以及变更,可以提早发现问题。
2. SlowQuery Scanner(企业版功能)
概述
SlowQuery Scanner 通过指定慢日志文件,扫描并解析文件中的慢 SQL 语句,并定时将解析出的 SQL 上传至 SQLe Server。在 SQLe Server 侧,通过审核任务中配置的 Cron 定时(或人工)触发审核。 SlowQuery Scanner 是一个常驻进程,它会持续的监控 Scanner 启动时指定的慢日志文件,一旦产生新的慢 SQL,它会增量解析并上传这些 SQL,可以将scanner启动为后台进程。
参数说明
[root@sqle-server bin]# ./scannerd slowquery --help
Parse slow query
Usage:
SQLE slowquery [flags]
Flags:
-h, --help help for slowquery
--log-file string log file absolute path
Global Flags:
-H, --host string sqle host (default "127.0.0.1")
-N, --name string audit plan name
-P, --port string sqle port (default "10000")
-A, --token string sqle token
- host:SQLE Server 所在的主机 IP 地址(默认是当前主机)
- port:SQLE Server 提供 HTTP 服务的端口(默认是 10000)
- name:审核任务名(表示 Scanner 将 SQL 上传至哪个审核任务的 SQL 池)
- token:审核任务上传凭证(具体值可到审核任务列表页中访问凭证列中获取)
- log-file:慢日志文件的绝对路径