1.介绍

pgbadgerpostgresql 三大神器之一:pg_profilepg_badgerpgfouine
其中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    ---因为我下载的是zipcd ./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.安装libtextcsvperl,

因为我的pg dblogfilecsv,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设置创建存放报告的目录,访问这个目录可以看到产生的报告明细点击即可查看
在这里插入图片描述
在这里插入图片描述

原文地址:https://blog.csdn.net/weixin_43230594/article/details/129791345

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_28368.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注