Postgersql神器之pgbadger安装配置

文章目录

  • 1.介绍
  • 2.安装pgbager
  • 3.参数调整
    • 3.1相关参数内容
    • 3.2 重启db
    • 4.配置apache
    • 5.安装libtext-csv-perl,
    • 6.手动产生报告
  • 7.排程自动产生分析报告
    • 7.2脚本授权:
    • 7.3设定crontab
    • 7.4检视pgbadger日志分析报告

1.介绍

pgbadger是postgresql 三大神器之一:pg_profile、pg_badger、pgfouine
其中pgbadger用分析postgresql的警告日誌,可以帮助使用者去寻找有关性能的蛛丝马迹,分析系统瓶颈
下载地址:https://github.com/darold/pgbadger/blob/master/ChangeLog
因为我的环境是postgresql 10.16,所以这个链接是基于postgresql 10.16的下载地址,如果postgresql是其他版本,需要去寻找对应版本的pgbadger.

postgres=# select version();
                                                               version                                                                
--------------------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 10.16 (Ubuntu 10.16-0ubuntu0.18.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0, 64-bit

2.安装pgbager

下载后,放入目标主机

unzip pgbadger-master.zip    ---因为我下载的是zip档
cd ./pgbadger-master        ---进入解压缩后的目录
perl Makefile.PL            ---会产生makefile文件
make && make install        ---安装

3.参数调整

3.1相关参数内容

log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
log_autovacuum_min_duration = 0
log_min_duration_statement = 1000
log_error_verbosity = default
log_statement = none
lc_messages='en_US.UTF-8'
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h'
log_rotation_size = 10240
log_rotation_size = 1440
log_truncate_on_rotation = off  

3.2 重启db

pg_ctl -D /etc/postgresql/10/main restart

4.配置apache

apt install apache2*
其他具体细节省略,可以参考apache的配置
sudo mkdir /var/www/html/pgbadger_reports     ---在apache默认的home目录下创建一个folder用于存放pgbadger产生的报告
sudo chown postgres /var/www/html/pgbadger_reports

5.安装libtext-csv-perl,

因为我的pg db的logfile是csv,pgbadger需要这个模组,否则它将无法解析csv格式的log

apt install libtext-csv-perl

6.手动产生报告

(适用于按需求产生,这个时间范围取决于rotation参数设定)

postgres=# select name,setting,unit from pg_settings where name like '%rotation%';
           name           | setting | unit 
--------------------------+---------+------
 log_rotation_age         | 1440    | min
 log_rotation_size        | 10240   | kB
 log_truncate_on_rotation | off     |    ----log轮转时会保留旧的logfile

这个时间范围可以按照需求调整,这儿是分析当天的所有日志(使用了$CURRDATE*)

export CURRDATE=`date +%Y-%m-%d`
/usr/local/bin/pgbadger -q /data/pg_log/postgresql-$CURRDATE*.csv -o $REPTDIR/reports_$CURRDATE.html -j 8 -f csv --prefix '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h'
---注意:
1.如果logifle格式是csv,指定-f csv,如果是stderr指定-f stderr
2.--prefix,指定与log_line_prefix参数一致

7.排程自动产生分析报告

##7.1脚本内容:

#脚本位置及名称:#/backup/script/pg_logrpt.sh,
CURRDATE=`date +%Y-%m-%d`
PGDATA=/data
REPTDIR=/var/www/html/pgbadger_reports
if  [ ! -d $REPTDIR ]; then
    mkdir -p $REPTDIR
fi
/usr/local/bin/pgbadger -q $PGDATA/pg_log/postgresql-$CURRDATE*.csv -o $REPTDIR/reports_$CURRDATE.html -j 8 -f csv --prefix '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h'
echo "$PGDATA/pg_log/postgresql-$CURRDATE"
find $REPTDIR -name reports_*.html -mtime +8 -exec rm -rf {} \;

7.2脚本授权:

sudo chmod +755 /backup/script/pg_logrpt.sh  

7.3设定crontab

我设定每天夜间23:00开始分析并产生一份报告,当然可以根据主机负载状况自行调整

00 23 * * * /backup/script/pg_logrpt.sh

7.4检视pgbadger日志分析报告

下图链接中的pgbadger_reports就是前面apache设置中创建的存放报告的目录,访问这个目录可以看到产生的报告明细,点击即可查看
Postgersql神器之pgbadger安装配置_第1张图片
Postgersql神器之pgbadger安装配置_第2张图片

你可能感兴趣的:(Postgresql,perl,apache,ubuntu)