跳转至

使用审计日志记录资源使用

使用审计日志记录资源使用

如果想分析各条SQL的资源使用情况,需要打开与审计日志有关的参数,并启动审计日志服务。

拓扑图

审计日志是基于日志归档功能,日志归档功能

coordinator(业务主库coordinator,产生SQL的CSV日志)
            \
             \ (sdlog_archve,解析CSV日志,并以csv文件文件为单位加载并插入到审计日志服务中)
              \
               \
               审计日志服务(远端部署seaboxsql单机数据库)
              /
             /
            / (sdlog_archive,解析CSV日志,并插入到审计日志服务中)
           /
coordinator N (其他业务主库..)

如上拓扑显示: 业务主库上一条SQL执行结束,会产生一条CSV日志,CSV记录中包含:起时和结束时间,CPU/内存/磁盘 等资源使用情况。 同时日志扫描(sdlog_archive)程序会监控CSV日志,解析新产生的CSV日志记录, 并加载到远端部署的审计日志服务中,这里的审计日志服务是一个seaboxsql单机数据库实例.

同时,一个审计服务还可以接入多套集群,

                   coordinator 1
                 /
            集群1
           /     \ coordinator N
审计日志服务- ...
           \
            集群N - coordinators
启动步骤

需要启动两个步骤:审计日志服务;日志归档程序配置和启动(sdlog_archive)

启动顺序要求:日志归档程序sdarchive需要在审计日志服务启动后再启动;

审计日志服务使用
审计日志服务的参数推荐配置(以写入性能最优为目标)
  • sd_hdb.conf修改
-- 配置单机的sd_hba.conf文件,允许coordinator的IP地址的用sd_sao_etl和 superuser权限用户或者sd_dba用户访问审计日志使用的库,提前创建需要的审计库(audit),使用其他应进行修改
host     audit            sd_sao_etl            IP/32            trust
host     audit            sd_dba/superuser            IP/32            trust
  • seaboxsql.conf 修改

listen_addresses = '*'          # what IP address(es) to listen on;

-- 修改wal相关的参数,优化insert 性能
wal_level = 'minimal'
-- fsysnc参数,是在写入时不调用sync操作,在服务器异常断电时,可能会丢失部分最近更新数据。根据具体应用需求谨慎选择配置。
fsync = off  
synchronous_commit = off 
max_wal_senders = 0 
checkpoint_timeout=1h
autovacuum=on
wal_compression=off
commit_delay = 20
commit_siblings = 32
审计日志服务是单机形态的seaboxsql数据库,可以在任意节点启动,建议部署到资源不紧张的机器

sd_ctl -D ./data -l./data/sd_log/startup.log start
waiting for server to start.... done
server started
日志归档程序配置和启动(sdlog_archive)
查看历史sql资源使用
审计日志库的缩容操作
-- 提供shrink_audit函数用于缩容审计日志库数据,参数为删除的的最大日期,小于此日期的数据将被全部删除。

seaboxsql=# select sdlog.shrink_audit('2023-4-28');
 shrink_audit 
--------------
 
(1 row)