zoukankan      html  css  js  c++  java
  • postgres:日志监控

    使用一款开源工具pgbadger可以自动分析pgsql日志。

    具体使用:

    1.下载pgbadger-10.0.tar.gz

    2.解压,执行perl Makefile.PL,再执行 make && make install。默认安装在/usr/local/bin/pgbadger

    3.配置psql配置文件,配置文件在/path/pgsql/data/postgres.conf,修改内容包括以下:

     1 log_destination = 'stderr'
     2 # 日志记录类型,默认是stderr,只记录错误输出
     3 log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,client=%h '
     4 # log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '
     5 log_checkpoints = on
     6 # 系统一天之类发生了多少次checkpoint,以及每次checkpoint的一些详细信息,频繁的checkpoint影响系统性能
     7 log_connections = on
     8 # log_connections    --用户session登陆时是否写入日志,默认off
     9 log_disconnections = on
    10 # 用户session退出时是否写入日志,默认off
    11 log_lock_waits = on
    12 # 一天内有多少个超过死锁时间的锁发生,默认是off,可以设置开启。这个可以区分SQL慢是资源紧张还是锁等待的问题
    13 log_temp_files = 0
    14 log_autovacuum_min_duration = 0
    15 log_error_verbosity = default
    16 log_statement = off
    17 lc_messages='C'
    18 Log_min_duration_statement = 1000
    19 # 单位ms,超过1s为慢查询
    20 # 其他日志
    21 logging_collector      --是否开启日志收集开关,默认off,开启要重启DB
    22 log_directory      --日志路径,默认是$PGDATA/pg_log
    23 log_filename       --日志名称,默认是postgresql-%Y-%m-%d_%H%M%S.log
    24 log_rotation_age   --保留单个文件的最大时长,默认是1d,也有1h,1min,1s,个人觉得不实用
    25 log_rotation_size  --保留单个文件的最大尺寸,默认是10MB
    26 pg_statement  = log_statement
    27 # 参数值是none,即不记录,可以设置ddl(记录create,drop和alter)、mod(记录ddl+insert,delete,update和truncate)和all(mod+select)

    4.执行一条命令试一下:/usr/local/bin/badger /path/pg_log/xxx.log -o /path/xx.html -f stderr

    >>>生成一个.html的报告文件,打开即可看到数据库的日志分析信息

    5.自动化执行:

    先写一个shell脚本(xx.sh)如下:

     1 #!/bin/bash
     2 CURRDATE=`date +%Y-%m-%d`
     3 PGDATA=/var/log/imoslog/pg_log
     4 REPTDIR=/home/yxb/pgtool/rep
     5 
     6 if [ -d $REPTDIR ]; then
     7     mkdir -p $REPTDIR
     8 fi
     9 
    10 /usr/local/bin/pgbadger -q $PGDATA/postgresql-$CURRDATE_* -o $REPTDIR/reports_$CURRDATE.html -j 8 -f stderr
    11 
    12 find $REPTDIR -name reports_*.html -mtime +8 -exec rm -rf {} ;

    再添加一个定时任务:

    crontab -e

    00 03 * * * sh xx.sh,保存后通过crontab -l查看

  • 相关阅读:
    团队项目总结
    第二阶段团队绩效评分
    “转赚”------使用说明
    团队站立会议14
    团队站立会议13
    团队站立会议12
    团队站立会议11
    团队站立会议10
    LocalDate 今天是一年中的第几天?
    MAC系统Java环境搭建
  • 原文地址:https://www.cnblogs.com/jinziguang/p/13954177.html
Copyright © 2011-2022 走看看