修改配置文件
通过postgresql.conf
设置日志参数(路径:/etc/postgresql/<版本>/main/
):
logging_collector = on
:启用日志收集。log_directory = '/var/log/postgresql'
:指定日志目录。log_filename = 'postgresql-%Y-%m-%d.log'
:按日期命名日志文件。log_min_duration_statement = 1000
:记录执行超1秒的慢查询。log_lock_waits = on
:记录锁等待信息。动态调整参数
使用ALTER SYSTEM
命令无需重启即可修改部分参数,如:
ALTER SYSTEM SET log_min_duration_statement = '500ms';
使用logrotate工具
创建配置文件/etc/logrotate.d/postgresql
,内容示例:
/var/log/postgresql/postgresql-*.log {
daily
rotate 7
compress
missingok
postrotate
/bin/kill -HUP `cat /var/run/postgresql/*.pid` 2>/dev/null || true
endscript
}
daily
:每日轮转;rotate 7
:保留7天日志;compress
:压缩旧日志。手动触发轮转
执行以下命令手动轮转日志:
sudo logrotate -f /etc/logrotate.d/postgresql
实时查看日志
sudo tail -f /var/log/postgresql/postgresql-*.log # 实时查看最新日志
sudo grep 'ERROR' /var/log/postgresql/*.log # 筛选错误日志
生成分析报告
使用pgBadger
工具解析日志并生成可视化报告:
sudo apt-get install pgbadger
pgbadger /var/log/postgresql/postgresql-*.log -o report.html # 生成HTML报告
报告可展示慢查询、锁等待等关键信息。
设置定时任务
通过crontab
每天凌晨生成前一天日志报告:
0 2 * * * pgbadger /var/log/postgresql/postgresql-$(date -d "yesterday" +%Y-%m-%d).log -o /var/www/html/report.html
postgres
用户读写,避免敏感信息泄露。log_statement
建议设为ddl
或mod
,避免记录所有SELECT
语句影响性能。