1.修改postgresql.conf
1.1 一般默认在这个目录下
/var/lib/postsql
2.审计清单说明
- logging_collector --是否开启日志收集开关,默认off,推荐on
- log_destination --日志记录类型,默认是stderr,只记录错误输出,推荐csvlog,
总共包含:stderr, csvlog, syslog, and eventlog
- log_directory --日志路径,默认是$PGDATA/pg_log,
- log_filename --日志名称,默认是postgresql-%Y-%m-%d_%H%M%S.log
- log_file_mode --日志文件类型,默认为0600
- log_truncate_on_rotation --默认为off,设置为on的话,文件内容覆盖方式:off后面附加,on:清空再加
- log_rotation_age --保留单个文件的最大时长,默认是1d,也有1h,1min,1s
- log_rotation_size --保留单个文件的最大尺寸,默认是10MB
- log_error_verbosity --默认为default,verbose表示冗长的
- log_connections --用户session登陆时是否写入日志,默认off,推荐为on
- log_disconnections --用户session退出时是否写入日志,默认off,推荐为on
- log_statement --记录用户登陆数据库后的各种操作。总共包含以下几个值
none,表示不记录。 ddl (记录create,drop和alter) 记录所有数据定义命令,比如CREATE,ALTER,和DROP语句。(生产环境) mod (记录ddl+insert,delete,update和truncate) 记录所有ddl语句,加上数据修改语句INSERT,UPDATE等。 all (mod+select) 记录所有执行的语句,将此配置设置为all可跟踪整个数据库执行的SQL语句,但会对数据库性能产生较大影响,生产环境不建议配置此值。 ,
3.推荐以下配置
logging_collector = on log_destination = ‘csvlog’ log_truncate_on_rotation = on log_connections = on log_disconnections = on log_error_verbosity = verbose log_statement = ddl log_min_duration_statement = 60s log_checkpoints = on log_lock_waits = on deadlock_timeout = 1s
加粗部分是postgresql.conf文件中没有的
4.验证pgsql审计是否开启
进入pgsql命令窗口执行以下
##查看审计规则
show log_statement;
##修改审计日志规则
alter system set log_statement = ddl;
##配置热加载
select pg_reload_conf();
或者pg_ctl触发 sighup信号
pg_ctl reload
##查日志存储路径
show log_directory;
##修改日志路径
alter system set log_directory ='/data/postgresql/log/';
|