ubuntu

Ubuntu中PostgreSQL的日志管理技巧

小樊
40
2025-08-24 00:01:42
栏目: 云计算

一、日志配置基础

  1. 修改配置文件
    通过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:记录锁等待信息。
  2. 动态调整参数
    使用ALTER SYSTEM命令无需重启即可修改部分参数,如:

    ALTER SYSTEM SET log_min_duration_statement = '500ms';
    

二、日志轮转与清理

  1. 使用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:压缩旧日志。
  2. 手动触发轮转
    执行以下命令手动轮转日志:

    sudo logrotate -f /etc/logrotate.d/postgresql
    

三、日志分析与监控

  1. 实时查看日志

    sudo tail -f /var/log/postgresql/postgresql-*.log  # 实时查看最新日志
    sudo grep 'ERROR' /var/log/postgresql/*.log       # 筛选错误日志
    
  2. 生成分析报告
    使用pgBadger工具解析日志并生成可视化报告:

    sudo apt-get install pgbadger
    pgbadger /var/log/postgresql/postgresql-*.log -o report.html  # 生成HTML报告
    

    报告可展示慢查询、锁等待等关键信息。

  3. 设置定时任务
    通过crontab每天凌晨生成前一天日志报告:

    0 2 * * * pgbadger /var/log/postgresql/postgresql-$(date -d "yesterday" +%Y-%m-%d).log -o /var/www/html/report.html
    

四、安全与优化建议

0
看了该问题的人还看了