sequoiasql-mysql 部署审计插件
Posted chenfool
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sequoiasql-mysql 部署审计插件相关的知识,希望对你有一定的参考价值。
本部署动作,均是在sdbadmin 用户下执行
增加审计功能
首先拷贝审计的 plugin 插件
cp /opt/sequoiasql/mysql/tools/lib/server_audit.so /opt/sequoiasql/mysql/lib/plugin/
获取当前的环境信息
获取当前机器的 sequoiasql-mysql 实例,并且确定其具体路径,例如
> sdb_sql_ctl listinst
NAME SQLDATA SQLLOG
my1 /data/ssd/sdb/mysql/inst/3309 /opt/sequoiasql/mysql/my1.log
这台服务器的sequoiasql-mysql 实例的具体路径就是 /data/ssd/sdb/mysql/inst/3309,对应这个实例的配置文件为 /data/ssd/sdb/mysql/inst/3309/auto.cnf。
Note:
my1 是作者当前服务器的sequoiasql-mysql 实例的名字,大家记住这个名字,后续启动、停止、重启都需要使用到这个 my1 名字
为sequoiasql-mysql 配置审计日志
在实例的数据目录下增加一个保存审计日志的目录
mkdir -p /opt/sequoiasql/mysql/database/auditlog/
打开 auto.cnf 配置文件,在 [mysqld] 参数下增加以下内容
# 加载审计插件
plugin-load=server_audit=server_audit.so
# 审计记录的审计,建议只记录需要同步的DCL和DDL操作
server_audit_events=CONNECT,QUERY_DDL,QUERY_DCL
# 开启审计
server_audit_logging=ON
# 审计日志路径及文件名
server_audit_file_path=/opt/sequoiasql/mysql/database/auditlog/server_audit.log
# 强制切分审计日志文件
server_audit_file_rotate_now=OFF
# 审计日志文件大小10MB,超过该大小进行切割,单位为byte
server_audit_file_rotate_size=10485760
# 审计日志保留个数,超过后会丢弃最旧的
server_audit_file_rotations=999
# 输出类型为文件
server_audit_output_type=file
# 限制每行查询日志的大小为100kb,若表比较复杂,对应的操作语句比较长,建议增大该值
server_audit_query_log_limit=102400
重启 sequoiasql-mysql 实例
sdb_sql_ctl restart my1
检查 /opt/sequoiasql/mysql/database/auditlog/ 路径是否生成了新的审计日志。如果没有生成 server_audit.log 审计日志,大家自己仔细梳理前面步骤。
配置解析审计日志及同步程序
本解析审计日志及同步程序,由Python 语言编写,兼容 Python 2.* 版本,暂时不支持Python 3.* 版本。
切换到工具所在路径 /opt/sequoiasql/mysql/tools/metaSync
cd /opt/sequoiasql/mysql/tools/metaSync
拷贝一个配置文件
cp config.sample config
修改config 配置文件里面的内容
[mysql]
# mysql节点主机名,只能填主机名
hosts = sdb1,sdb2,sdb3
# mysql服务端口
port = 3306
# 密码类型,0代表密码为明文,1代表密码为密文,初次使用配置为 0,密码使用明文,工具启动后会自动加密并更新此处配置
mysql_password_type = 0
# mysql用户
mysql_user = root
# mysql密码
mysql_password = mysql
# mysql安装目录
install_dir = /opt/sequoiasql/mysql
# 审计日志存储目录
audit_log_directory = /opt/sequoiasql/mysql/database/auditlog
# 审计日志文件名
audit_log_file_name = server_audit.log
[execute]
# 同步间隔,取值范围:[1-3600]
interval_time = 2
# 出错时是否忽略,如为 false,会一直重试
ignore_error = true
# 出错的情况下,忽略前的重试次数,取值范围:[1-1000]
max_retry_times = 5
直接拷贝程序 log 输出配置文件
cp log.config.sample log.config
启动程序
/usr/bin/python /opt/sequoiasql/mysql/tools/metaSync/meta_sync.py >/dev/null 2>&1 &
为系统设置一个周期性定时执行的任务,以防止程序宕机,或者服务器重启后审计日志解析及同步程序无法自动启动。
crontab -e
在里面增加以下内容
*/1 * * * * /usr/bin/python /opt/sequoiasql/mysql/tools/metaSync/meta_sync.py >/dev/null 2>&1 &
重置 metaSync 同步程序
如果因为一些特殊原因,例如通过连接 Keepalived + nginx 虚拟IP 地址,然后再建表,会导致 metaSync 程序无法正常同步,并且会造成 metaSync 程序一直处于 ERROR 状态。
此时就需要对 metaSync 程序进行重置。
重置方式如下
1 暂时关闭系统的 crontab 定时任务
直接执行 crontab -e 命令,然后把启动 metaSync 程序的命令删除即可。
2 暂停 metaSync 程序
快速删除 metaSync 进程,可以使用以下命令
ps -ef | grep python | grep meta_sync.py | awk -F ' ' '{print $2}' | xargs kill -15
3 停止各个服务器上的 MySQL 实例,例如
sdb_sql_ctl stop my1
4 删除各个服务器上的 MySQL 实例上的审计日志,例如
rm -rf /opt/sequoiasql/mysql/database/auditlog/server_audit.log
5 删除各个服务器上的 metaSync 程序的状态文件,例如
rm -rf /opt/sequoiasql/mysql/tools/metaSync/sync.stat
6 删除metaSync 原来的运行日志
rm -rf /opt/sequoiasql/mysql/tools/metaSync/logs/run.log
7 以上步骤全部执行完毕后,就可以重新启动MySQL 实例,重启metaSync 程序。大家千万别忘记了设置 crontab -e 定时任务。
更多的详细信息,可以参考 /opt/sequoiasql/mysql/tools/metaSync/README.md 介绍文件。
以上是关于sequoiasql-mysql 部署审计插件的主要内容,如果未能解决你的问题,请参考以下文章
如何从 JBoss Drools Eclipse 插件获取审计窗口的日志文件?