ITPub博客

首页 > 数据库 > > PostgreSQL-开启PG审计日志(六)

PostgreSQL-开启PG审计日志(六)

作者:哎呀我的天呐 时间:2019-08-21 12:30:37 0 删除 编辑

PG安装完成后默认不会记录日志,必须修改对应的 ${PGDATA}/postgresql.conf 配置才可以,这里只介绍常用的日志配置。



logging_collector = on/off:

是否将日志重定向至文件中,默认是off(该配置修改后,需要重启DB服务),然后会看到多了logger进程。

postgres=# show logging_collector;
 logging_collector 
-------------------
 on
(1 row)
postgres=# show log_directory;
 log_directory 
---------------
 log
(1 row)
postgres=# show log_filename;
          log_filename          
--------------------------------
 postgresql-%Y-%m-%d_%H%M%S.log
(1 row)
postgres=# show log_destination;
 log_destination 
-----------------
 csvlog
(1 row)


log_destination:

log_destination 日志记录类型,默认是stderr,只记录错误输出,但还包含csvlog和syslog。如果log_destination设置为 csvlog,则日志条目以逗号分隔CSV格式输出,这样便于将日志加载到程序中。当设置为stderr或csvlog时,将在log_directory下创建文件。 

log_rotation_age:

保留单个文件的最大时长,默认是1d,也有1h,1min,1s,个人觉得不实用保留单个文件的最大时长,默认是1d

postgres=# show log_rotation_age;
 log_rotation_age 
------------------
 1d
(1 row)

log_rotation_size:保留单个文件的最大尺寸,默认是10MB

log_file_mode:日志在文件系统中的权限,默认0600

log_truncate_on_rotation:

默认为off,设置为on的话,如果新建了一个同名的日志文件,则会清空原来的文件,再写入日志,而不是在后面附加。

log_statement:

一般的OLTP系统审计级别设置为ddl就够了,因为记录输出各种SQL对性能的影响还是蛮大的,安全级别高一点的也可以设置mod模式,有条件也可以不在数据库层面做,而是购买设备放在网络层监控解析。有四种值,none,ddl,mod,all。mod记录所有ddl语句,以及INSERT,UPDATE,DELETE,TRUNCATE和COPY FROM等数据修改语句。 如果包含的命令属于适当的类型,也会记录PREPARE,EXECUTE和EXPLAIN ANALYZE语句。

log_connections: 用户session登陆时是否写入日志,默认off

log_disconnections: 用户session退出时是否写入日志,默认off

log_checkpoints: 监控数据库的checkpoint,当数据库进行一项大更新操作时,如果参数设置不当,会在日志里留下大量的告警信息,频繁的做checkpoint会导致系统变慢,不用设置都会有。但是不会记录系统正常的checkpoint,如果你想看系统一天之类发生了多少次checkpoint,以及每次checkpoint的一些详细信息,比如buffer,sync等,就可以通过设置log_checkpoints,该参数默认值是off。

log_lock_waits和deadlock_timeout:数据库的锁通常可以在pg_locks这个系统表里找,但这只是当前的锁表/行信息,如果你想看一天内有多少个超过死锁时间的锁发生,可以在日志里设置并查看,log_lock_waits 默认是off,可以设置开启。这个可以区分SQL慢是资源紧张还是锁等待的问题。deadlock_timeout表示超过的死锁时间便记录日志。

log_duration: 记录每条SQL语句执行完成消耗的时间,将此配置设置为on,用于统计哪些SQL语句耗时较长。

log_min_duration_statement: 定位慢查询的SQL,记录超过该时长的所有SQL,对找出当前数据库的慢查询很有效。 比如log_min_duration_statement = 2s,记录超过2秒的SQL,改完需要reload 



其他参数,用时再查:

log_hostname:

application_name:


log_error_verbosity:

log_line_prefix:  

log_replication_commands:

log_temp_files: 

log_timezone:


syslog_facility:

syslog_ident:

syslog_sequence_numbers:

syslog_split_messages:

log_min_messages:

log_min_error_statement: 

event_source:


debug_print_parse:

debug_print_rewritten:

debug_print_plan:

debug_pretty_print:


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29990276/viewspace-3131774/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
https://cloud.tencent.com/developer/inventory/14362

注册时间:2014-10-30

  • 博文量
    403
  • 访问量
    2528717