暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL 日志分析工具——PgBadger


一、PostgreSQL PgBadger概述

pgBadger是一款开源的PostgreSQL日志分析工具,它能够快速解析PostgreSQL的日志文件,并生成包含详细统计信息的HTML报告。这些报告通常包括慢查询、最频繁执行查询、错误统计、Top SQL等关键数据,帮助数据库管理员和开发者理解数据库的运行状况,快速定位性能瓶颈。 pgBadger的设计目的是为了替代早期的pgFouine脚本,它具有高速解析、详尽报告、易用性、自定义分析以及图形化展示等特点,支持多种输入和输出格式,安装简单,配置灵活。

二、PgBadger部署流程

2.1、环境准备

说明:

  • 安装必备插件,由于pgbadger是使用Perl实现的,所以在您使用pgBadger之前,需要安装Perl相关插件 :

代码如下:

yum -y install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
yum -y install perl-CPAN
yum -y install httpd
cpan Text :  : CSV
cpan JSON :  : XS

2.2、下载pgbadger

代码如下:

[postgres@Server install]$ wget https : //github.com/darold/pgbadger/archive/refs/tags/v12.4.tar.gz
--2024-07-01 20 : 27 : 09--  https : //github.com/darold/pgbadger/archive/refs/tags/v12.4.tar.gz
正在解析主机 github.com (github.com)... 20.205.243.166
正在连接 github.com (github.com) | 20.205.243.166 |  : 443... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Found
位置:https : //codeload.github.com/darold/pgbadger/tar.gz/refs/tags/v12.4 [跟随至新的 URL]
--2024-07-01 20 : 27 : 10--  https : //codeload.github.com/darold/pgbadger/tar.gz/refs/tags/v12.4
正在解析主机 codeload.github.com (codeload.github.com)... 20.205.243.165
正在连接 codeload.github.com (codeload.github.com) | 20.205.243.165 |  : 443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:未指定 [application/x-gzip]
正在保存至 :  “v12.4.tar.gz”

v12.4.tar.gz                      [     <=>                                          ]   3.87M  56.7KB/s  用时 45s

2024-07-01 20 : 27 : 56 (88.4 KB/s) - “v12.4.tar.gz” 已保存 [4062907]

2.3、查看下载的pgbadger

代码如下:

[postgres@Server install]$ ls
dzq-full-install-pack.zip                   pg_profile--4.6.tar.gz  postgresql-16.3.tar.gz     v12.4.tar.gz
mysql-8.0.37-linux-glibc2.28-x86_64.tar.xz  pg_rman-1.3.16          postgresql-17beta1
mysql-boost-8.0.37.tar.gz                   pg_rman-1.3.16.tar.gz   postgresql-17beta1.tar.gz
[postgres@Server install]$

2.4、解压pgbadger

代码如下:

[postgres@Server install]$
[postgres@Server install]$ tar xvf v12.4.tar.gz
pgbadger-12.4/
pgbadger-12.4/.editorconfig
pgbadger-12.4/.gitignore
pgbadger-12.4/CONTRIBUTING.md
pgbadger-12.4/ChangeLog
pgbadger-12.4/HACKING.md
pgbadger-12.4/LICENSE
..............................................
pgbadger-12.4/t/fixtures/weeknumber.log
pgbadger-12.4/tools/
pgbadger-12.4/tools/README.pgbadger_tools
pgbadger-12.4/tools/README.updt_embedded_rsc
pgbadger-12.4/tools/pgbadger_tools
pgbadger-12.4/tools/updt_embedded_rsc.pl
[postgres@Server install]$

2.5、切换到pgbadger所在目录,运行Makefile PL创建Makefile文件

代码如下:

[postgres@Server install]$ cd pgbadger-12.4/
[postgres@Server pgbadger-12.4]$ perl Makefile.PL
Checking if your kit is complete...
Looks good
Generating a Unix-style Makefile
Writing Makefile for pgBadger
Writing MYMETA.yml and MYMETA.json
[postgres@Server pgbadger-12.4]$

2.6、执行安装pgbadger

代码如下:

[postgres@Server pgbadger-12.4]$
[postgres@Server pgbadger-12.4]$ make && sudo make install
which :  no pod2markdown in (/postgres/server/bin : /home/postgres/.local/bin : /home/postgres/bin : /usr/local/bin : /usr/bin : /usr/local/sbin : /usr/sbin)
Makefile : 922 :  You must install pod2markdown to generate README.md from doc/pgBadger.pod
echo "=head1 SYNOPSIS" > doc/synopsis.pod
./pgbadger --help >> doc/synopsis.pod
echo "=head1 DESCRIPTION" >> doc/synopsis.pod
sed -i.bak 's/ +$//g' doc/synopsis.pod
rm doc/synopsis.pod.bak
sed -i.bak '/^=head1 SYNOPSIS/,/^=head1 DESCRIPTION/d' doc/pgBadger.pod
sed -i.bak '4r doc/synopsis.pod' doc/pgBadger.pod
rm doc/pgBadger.pod.bak
Manifying 1 pod document
rm doc/synopsis.pod
[sudo] postgres 的密码:
which :  no pod2markdown in (/sbin : /bin : /usr/sbin : /usr/bin)
Makefile : 922 :  You must install pod2markdown to generate README.md from doc/pgBadger.pod
echo "=head1 SYNOPSIS" > doc/synopsis.pod
./pgbadger --help >> doc/synopsis.pod
echo "=head1 DESCRIPTION" >> doc/synopsis.pod
sed -i.bak 's/ +$//g' doc/synopsis.pod
rm doc/synopsis.pod.bak
sed -i.bak '/^=head1 SYNOPSIS/,/^=head1 DESCRIPTION/d' doc/pgBadger.pod
sed -i.bak '4r doc/synopsis.pod' doc/pgBadger.pod
rm doc/pgBadger.pod.bak
Manifying 1 pod document
Installing /usr/local/share/man/man1/pgbadger.1p
Installing /usr/local/bin/pgbadger
Appending installation info to /usr/lib64/perl5/perllocal.pod
rm doc/synopsis.pod
[postgres@Server pgbadger-12.4]$

2.7、启动httpd

  • 说明:切换到root用户,启动httpd

代码如下:

[root@Server ~]# service httpd start
Redirecting to /bin/systemctl start httpd.service
[root@Server ~]#

2.8、查看pgbadger安装路径

代码如下:

[postgres@Server pgbadger-12.4]$ whereis pgbadger
pgbadger :  /usr/local/bin/pgbadger
[postgres@Server pgbadger-12.4]$

2.8、在html目录下创建目录pgbadger,用于存放文件

代码如下:

[root@Server postgres]# mkdir -p /var/www/html/pgbadger
[root@Server postgres]#
[root@Server postgres]#
[root@Server postgres]# chmod -R 777 /var/www/html/pgbadger
[root@Server postgres]# chown -R postgres : postgres /var/www/html/pgbadger
[root@Server postgres]#

2.9、修改postgresql.conf配置项

  • 说明:要使用pgbadger监控postgresql日志,需开启postgresql.conf相关配置项

代码如下:

vi $PGDATA/postgresql.conf


log_min_duration_statement = 0

---日志行前缀可以添加用户、数据库名、应用程序名和客户端IP地址如下 : 
log_line_prefix = '%t [%p] :  user=%u,db=%d,app=%a,client=%h '

---对于"STDER"日志格式,日志的前缀必须至少 : 

---日志的前缀必须至少 : 
    log_line_prefix = '%t [%p] :  '
---日志行前缀可以添加用户、数据库名、应用程序名和客户端IP地址如下 : 
    log_line_prefix = '%t [%p] :  user=%u,db=%d,app=%a,client=%h '
---或用于系统日志日志格式 : 
    log_line_prefix = 'user=%u,db=%d,app=%a,client=%h '
---STDER输出的日志行前缀也可以是 : 
    log_line_prefix = '%t [%p] :  db=%d,user=%u,app=%a,client=%h '
---或用于系统日志输出 : 
    log_line_prefix = 'db=%d,user=%u,app=%a,client=%h '


---要从日志文件中获取更多信息,您需要在"之后"中启用其他参数 : 
    log_checkpoints = on
    log_connections = on
    log_disconnections = on
    log_lock_waits = on
    log_temp_files = 0
    log_autovacuum_min_duration = 0
    log_error_verbosity = default
---不要启用日志语句,因为它的日志格式将不会被PGBARG解析。
---当然,您的日志信息应该是英文的,有或没有本地支持 : 
    lc_messages='en_US.UTF-8'
    lc_messages='C'





---其他日志配置项:

log_destination = 'csvlog' 
logging_collector = on 
log_directory = 'log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_statement = 'all'
log_duration = on

三、使用流程

3.1、预览HTML日志地址

代码如下:

[postgres@Server ~]$ pgbadger --help

Usage :  pgbadger [options] logfile [...]

 用法:pgbager[选项]日志文件[…]
PostgreSQL日志分析器,具有完全详细的报告和图表。
论据:
日志文件可以是单个日志文件、文件列表或shell命令
返回文件列表。如果要从stdin传递日志内容
使用-as文件名。请注意,来自stdin的输入将不适用于csvlog。
选项:
-a  |  --average minutes  : 构建的平均图的分钟数
查询和连接。默认为5分钟。
-A  |  --histo-average min :  构建直方图的分钟数
的查询。默认为60分钟。
-b  |  --begin datetime  :  日志中要解析的数据的开始日期/时间
(时间戳或时间)
-c  |  --dbclient host  :  仅报告给定客户端主机的条目。
-C  |  --nocomment  :  删除像/*…*/这样的注释来自查询。
-d  |  --dbname database  :  仅报告给定数据库的条目。
-D  |  --dns-resolv  :  客户端ip地址由其dns名称替换。
请注意,这确实会减慢pgBadger的速度。
-e  |  --end datetime  :  日志中要解析的数据的结束日期/时间
(时间戳或时间)
-E  |  --explode  :  通过生成一个报告来爆炸主报告
每个数据库。与无关的全局信息
数据库被添加到postgres数据库报告中。
-f  |  --format logtype  : 可能值:syslog、syslog2、stderr、jsonlog,
csv、pgbouncer、logplex、rds和红移。使用此pgBadger无法检测日志时的选项。
-G | --nograph : 禁用HTML输出上的图形。默认情况下已启用。
-h | --help : 显示此消息并退出。
-H | --html outdir路径:必须写入html报告的目录的路径
在增量模式下,二进制文件保留在目录中
使用-O,--outdir选项定义。
-i | --ident-name:用作系统日志ident的程序名。默认值:postgres
-I | --incremental:使用增量模式,报告将由生成
天,必须设置-outdir。
-j | --作业数:单个日志同时运行的作业数
文件默认情况下或使用时以单个运行
csvlog格式。
-J | --作业数:要并行解析的日志文件数。过程
默认情况下一次一个文件。
-l  | --最后解析的文件:通过注册
最后解析的日期时间和行。如果你想的话很有用
查看自上次运行以来的错误,或者如果需要
每天报告,每周轮换一次日志。
-L | --日志文件列表文件:包含要解析的日志文件列表的文件。
-m | --maxlength size:查询的最大长度,限制为
给定的大小。默认截断大小为100000。
-M | --no multiline:不收集多行语句以避免垃圾
尤其是在生成大量报告的错误上。
-N | --appname名称:仅报告给定应用程序名称的条目
-o | --outfile filename:定义输出的文件名。默认取决于
关于输出格式:out.html、out.txt、out.bin,
或者out.json。此选项可以多次使用
以输出多种格式。要使用json输出
必须安装Perl模块JSON::XS才能转储
输出到stdout,使用-as-filename。
-O  |  --outdir path      :必须保存输出文件的目录。
 -p  |  --prefix string    :您的自定义log_line_prefix的值为
在postgresql.conf中定义。只有在
没有使用指定的标准前缀之一
在pgBadger文档中,例如如果
前缀包括其他变量,如客户端IP
或应用程序名称。必须包含转义序列
对于时间(%t、%m或%n)和进程(%p或%c)。
请参阅以下示例。
-P  |  --no-prettify      :禁用SQL查询pretify格式化程序。
-q  |  --quiet            :不要向stdout打印任何内容,甚至不要打印进度
-Q  |  --query-numbering  :使用时将查询编号添加到输出中
选项--转储所有查询或--仅规范化。
-r  |  --remote-host ip   :设置执行cat命令的主机
远程日志文件以在本地解析该文件。
-R  |  --retention N      :以增量模式保留的周数。默认值
到0,已禁用。用于将周数设置为
保存在输出目录中。较旧的周数和天数
目录会自动删除。
-s  |  --sample number    :要存储的查询样本数。默认值:3。
-S  |  --select-only      :仅报告select查询。
-t  |  --top number       :要存储/显示的查询数。默认值:20。
-T  |  --title string     :更改HTML页面报表的标题。
-u  |  --dbuser username  : 仅报告给定用户的条目。
-U  |  --exclude-user username  : 从中排除指定用户的条目
汇报可以多次使用。
-v  |  --verbose          : 启用verbose或调试模式。默认情况下已禁用。
-V  |  --version          :显示pgBadger版本并退出。

-w  |  --watch-mode       :只能像logwatch那样报告错误。
-W  |  --wide-char        : 将查询的html输出编码为UTF8以避免
Perl消息“打印中的宽字符”。
-x  |  --extension        : 输出格式。值:text、html、bin或json。
默认值:html
 -X  |  --extra-files      :在增量模式下,允许pgBadger编写CSS和
输出目录中的JS文件作为单独的文件。
-z  |  --zcat exec_path   :设置zcat程序的完整路径。如果
zcat、bzcat或unzip不在您的路径上。
-Z  |  --timezone +/-XX   :设置时区从GMT开始的小时数。
使用此选项可以调整JavaScript图形中的日期/时间。
该值可以是整数,例如:2,也可以是浮点值,
例如:2.5。
---pie-limit num         :低于num%的饼图数据将显示总和。
--include-query regex   : 任何与给定正则表达式匹配的查询都将被排除
来自报告。例如:“^(VACUUM | COMMIT)”
您可以多次使用此选项。
--exclude file filename:包含要使用的每个正则表达式的文件的路径
以从报告中排除查询。每个一个正则表达式线
--include-file filename : 任何与给定正则表达式不匹配的查询都将
被排除在报告之外。你可以使用这个
选项多次。例如:“(tbl1 | tbl2)”。
--include file filename:包含每个regex的文件的路径
要从报告中包括的查询。每个一个正则表达式线
 --disable-error         : 不生成错误报告。
--disable-hourly        : 不生成小时报告。
--disable-type          : 不按类型、数据库生成查询报告或用户。
 --disable-query         :不生成查询报告(最慢、最多
频繁、按用户、按数据库查询…)。
--disable-session       :不生成会话报告。
--disable-connection    : 不生成连接报告。
--disable-lock          :不生成锁定报告。
--disable-temporary    : 不生成临时报告。
--disable-checkpoint    : 不生成检查点/restartpoint报告。
--disable-autovacuum    :不生成自动真空报告。
--charset               : 用于设置要使用的HTML字符集。
默认值:utf-8。
--csv-separator         :用于设置csv字段分隔符,默认值:,
 --exclude-time  regex   :任何与给定正则表达式匹配的时间戳都将是
排除在报告之外。示例:“2013-04-12.*”
您可以多次使用此选项。

--include-time  regex   : 只有与给定正则表达式匹配的时间戳才会
包括在报告中。示例:“2013-04-12.*”
您可以多次使用此选项。
--exclude-db name       :从中排除指定数据库的条目
汇报示例:“pg_dump”。可以多次使用时间。
--exclude-appname name  :排除指定应用程序名称的条目来自报告。
示例:“pg_dump”。可以使用多次。
--exclude-line regex    : 排除与给定匹配的任何日志条目
正则表达式。可以多次使用。
--exclude-client name   :排除指定客户端ip的日志条目。
可以多次使用。
--anonymize             :模糊查询中的所有文字,用于隐藏
机密数据。
--noreport              : 在增量模式下不会创建任何报告。
---log-duration          : 强制pgBadger关联生成的日志条目
通过log_duration=on和log_statement='all'
--enable-checksum       : 用于在每个查询报表下添加一个md5 sum。
--journalctl command    :用于替换PostgreSQL日志文件的命令
对journalctl的调用。基本上可能是:日志ctl-u postgresql-9.5
--pid-dir path        :设置必须存储pid文件的路径。默认/tmp
--pid-file file         :设置pid文件的名称以管理并发
执行pgBadger。默认值:pgbadger.pid
 --rebuild               :用于以增量方式重新生成所有html报表
有二进制数据文件的输出目录。
--pgbouncer-only        :仅在标题中显示与pgbouncer相关的菜单。
--start-monday          : 在增量模式下,日历周从开始
星期日使用此选项可在周一开始。
--iso-week-number       : 在增量模式下,日历周开始于
星期一和尊重ISO 8601周数,范围
01到53,其中第1周是具有
新年至少4天。
  --normalized-only       : 仅将所有规范化查询转储到out.txt
  --log-timezone +/-XX     : 设置时区从GMT开始的小时数
必须用于调整读取的日期/时间
分析之前的日志文件。使用此选项
使得使用日期/时间进行日志搜索更加困难。
该值可以是整数,例如:2,也可以是浮点值,
例如:2.5。

    --prettify-json         :  如果您想对json输出进行pretify,请使用它。
   --month-report YYYY-MM  : 在指定的时间内创建累积HTML报告
月需要增量输出目录和
所有必要的二进制数据文件的存在
--include-session ID    :  在指定的一天创建一个HTML报告。
需要增量输出目录和
存在所有必要的二进制数据文件
 --noexplain             : 不处理auto_explain生成的行。
--命令CMD:要执行以检索上的日志项的命令
stdin。pgBadger将打开一个到命令的管道
并解析由该命令生成的日志条目。
   --no-week               :  通知pgbadger不要在中构建周报
增量模式。如果花费太多时间,会很有用。
--explain-url URL       : 使用它来覆盖图形解释的url
工具默认值:https://explain.depesz.com/
 --tempdir DIR           : 设置写入临时文件的目录
--no-process-info       :  Spec->tmpdir()||'/tmp'
--no-process-info       :  禁止更改进程标题以帮助识别
pgbadger进程,有些系统不支持它。
--dump-all-queries      : 转储在日志文件中找到的所有查询替换
将查询中包含的参数绑定到
相应的占位符位置。
--keep-comments       : 不要从规范化查询中删除注释。它
如果你想区分
相同的规范化查询。
--no-progressbar        : 禁用进度条。
--dump raw csv        : 解析日志并将信息转储到csv中
总体安排没有进行进一步的处理,也没有报告。
--include-pid PID       :仅报告与会话pid(%p)相关的事件。
可以多次使用。
--include-session ID        : 仅报告与会话ID(%c)相关的事件。
可以多次使用。

pgBadger能够使用无密码ssh连接解析远程日志文件。
使用-r或--remote host设置主机IP地址或主机名。还有一些额外的选项来完全控制ssh连接。

--ssh程序要使用的ssh程序的ssh路径。默认值:ssh。
--ssh端口用于连接的ssh端口。默认值:22。
--ssh用户用户名连接登录名。默认为正在运行的用户。
--ssh标识文件要使用的标识文件的路径。
--ssh超时ssh连接失败的第二次超时。默认值:10秒。
--ssh选项选项用于ssh连接的-o选项列表。
始终使用的选项:
-o ConnectTimeout=$ssh_timeout
-o PreferredAuthentications=基于主机的公钥


也可以使用URI指定要解析的日志文件,支持的协议有
http[s]和[s]ftp。curl命令将用于下载该文件
文件将在下载过程中进行解析。ssh协议也受支持,并且将
使用ssh命令就像使用远程主机一样。请参阅以下示例。
返回代码:
0:成功时
1:出现错误时死亡
2:例如使用ctr+c中断
3:pid文件已存在或无法创建
4:在命令行没有给出日志文件

Examples : 
pgbadger/var/log/postgresql.log
pgbadger/var/log/postgres.log.2.gz/var/log/postgres.log.1gz/var/log/postgres.log
pgbadger/var/log/postgresql/postgresql-2012-05-*
pgbadger--exclude query=“^(COPY|COMMIT)”/var/log/postgresql.log
pgbadger-b“2012-06-25 10:56:11”-e“2012-06.25 10:59:11”/var/log/postgresql.log
cat/var/log/postgres.log | pgbager-
#带有stderr日志输出的日志行前缀
pgbager--前缀“%t[%p]:用户=%u,数据库=%d,客户端=%h”/pglog/postgresql-2012-08-21*
pgbager--前缀“%m%u@%d%p%r%a:”/pglog/postgresql.log
#带有syslog日志输出的日志行前缀
pgbager--前缀“user=%u,db=%d,client=%h,appname=%a”/pglog/postgresql-2012-08-21*
#使用我的8个CPU更快地解析我的10GB文件
pgbadger-j 8/pglog/postgresql-10.1-main.log

对远程日志文件使用URI表示法:
    pgbadger http : //172.12.110.1//var/log/postgresql/postgresql-10.1-main.log
    pgbadger ftp : //username@172.12.110.14/postgresql-10.1-main.log
    pgbadger ssh : //username@172.12.110.14 : 2222//var/log/postgresql/postgresql-10.1-main.log*

You can use together a local PostgreSQL log and a remote pgbouncer log file to parse : 

    pgbadger /var/log/postgresql/postgresql-10.1-main.log ssh : //username@172.12.110.14/pgbouncer.log

每周按cron作业报告错误:
30 23**1/usr/bin/pgbager-q-w/var/log/postgresql.log-o/var/reports/pg_errors.html
每周使用增量行为生成报告:
0 4**1/usr/bin/pgbager-q`find/var/log/-mtime-7-name“postgresql.log*”`-o/var/reports/pg_errors-`date+\%F`.html-l/var/reports/pgbadger_incremental_file.dat
这假设您的日志文件和HTML报告也每周轮换一次。
或者更好的方法是使用自动生成的增量报告:
0 4***/usr/bin/pgbager-I-q/var/log/postgresql/postgresql.log.1-O/var/www/pg_reports/
将每天和每周生成一份报告。
在增量模式中,您还可以指定要在
报告:
/usr/bin/pgbager--保留2-I-q/var/log/postgresql/postgresql.log.1-O/var/www/pg_reports/
如果你在每天23点和13点的半小时内有一个pg_dump,你可以
按如下所示使用pgBadger从报告中排除这些时段:
pgbadger--排除时间“2013-09-.*(23|13):.*”postgresql.log
这将有助于避免在
最慢查询的列表。您也可以使用--exclude-appname“pg_dump”来
用更简单的方法解决这个问题。
您还可以像解析日志文件一样解析journalctl输出:
pgbadger--journalctl'journalcl-u postgresql-9.5'
或者最坏的情况是,从远程主机调用它:
pgbadger-r 192.168.1.159--日志'journalctl-u postgresql-9.5'
您不需要在命令行中指定任何日志文件,但如果您有其他日志文件
要解析PostgreSQL日志文件,您可以像往常一样添加它们。
要在之后重新生成所有增量html报告,请按以下步骤进行:
rm/path/to/reports/*.js
rm/path/to/reports/*.css
pgbadger-X-I-O/path/to/reports/--重建
它还将更新所有资源文件(JS和CSS)。使用-E或--explose
如果报告是使用此选项生成的。
pgBadger还支持使用logplex格式的Heroku PostgreSQL日志:
heroku日志-p postgres|pgbager-f logplex-o heroku.html-
这将通过stdin将Heroku PostgreSQL日志流式传输到pgbager。
pgBadger可以使用自动检测RDS和cloudwatchPostgreSQL日志
rds格式:
pgbager-f rds-o rds_out.html rds.log
每个CloudSQL Postgresql日志都是一个相当普通的Postgresql日志,但经过封装
JSON格式。它是由pgBadger自动检测到的,但如果您需要强制
日志格式使用`jsonlog`:
pgbager-f jsonlog-o cloudsql_out.html cloudsql.log
这与jsonlog扩展相同,json格式不同
但是pgBadger可以解析这两种格式。
pgBadger还支持CloudNativePG Postgres运营商为Kubernetes生成的日志:
pgbager-f jsonlog-o cnpg_out.html cnpg.log
要创建一个月内的累积报告,请使用命令:
pgbadger--月报告2919-05/path/to/incremental/reports/
这将在中的日历视图中添加一个指向月份名称的链接
增量报告查看2019年5月的报告。
如果报告是使用此选项生成的,请使用-E或--burst。
[postgres@Server ~]$

3.2、使用*.log格式生成HTML日志

说明:浏览器登录地址:http : //127.0.0.1/pgbadger/index.html

代码如下:

[postgres@Server ~]$ pgbadger -a 5  $PGDATA/log/postgresql-2024-07-02_180808.log -o /var/www/html/pgbadger/out.html
[========================>] Parsed 4849 bytes of 4849 (100.00%), queries :  12, events :  1
LOG :  Ok, generating html report...
[postgres@Server ~]$

HTML界面日志查看效果:


3.3、查看增量模式查看生成HTML日志

  • 说明:浏览器登录地址:http : //127.0.0.1/pgbadger/index.html

代码如下:

[postgres@Server ~]$ pgbadger --incremental  $PGDATA/log/postgresql-2024-07-02_210054.log -o /var/www/html/pgbadger/out.html
[========================>] Parsed 12370 bytes of 12370 (100.00%), queries :  0, events :  0
LOG :  Ok, generating HTML daily report into /var/www/html/pgbadger//2024/07/02/...
LOG :  Ok, generating HTML weekly report into /var/www/html/pgbadger//2024/week-27/...
LOG :  Ok, generating global index to access incremental reports...
[postgres@Server ~]$

HTML界面日志查看效果:


3.4、使用*.csv格式生成HTML日志

  • 说明:浏览器登录地址:http : //127.0.0.1/pgbadger/out.html

代码如下:

[postgres@Server ~]$ pgbadger -a 5  /postgres/data/log/postgresql-2024-07-02_174936.csv -o /var/www/html/pgbadger/out.html
LOG :  Ok, generating html report... 6322190 bytes of 6322190 (100.00%), queries :  8067, events :  8062

[postgres@Server ~]$

HTML界面日志查看效果:


3.5、更多参数请参考帮助信息

四、问题

4.1、问题1:

错误代码如下:

[postgres@Server pgbadger-12.4]$ perl Makefile.PL
Can't locate ExtUtils/MakeMaker.pm in @INC (you may need to install the ExtUtils :  : MakeMaker module) (@INC contains :  /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at Makefile.PL line 1.
BEGIN failed--compilation aborted at Makefile.PL line 1.
  • 解决方案:
[root@Server ~]# yum -y install perl-CPAN

4.2、问题1:

错误代码如下:

我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

    #1) 尊重别人的隐私。
    #2) 输入前要先考虑(后果和风险)。
    #3) 权力越大,责任越大。
  • 解决方案:
[sudo] postgres 的密码:
postgres 不在 sudoers 文件中。此事将被报告。
[postgres@Server pgbadger-12.4]$

[root@Server ~]# vi /etc/sudoers

-- Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
postgres    ALL=(ALL)       ALL

五、总结

pgBadger能够处理多种日志文件格式,并且支持对压缩文件的解析,这使得它能够有效地处理大量的日志数据。此外,它还提供了灵活的配置选项,允许用户根据需要定制日志分析的细节,如指定日志文件的前缀、过滤特定时间段的日志、限制报告的错误或删除报告的任何部分等。通过定期使用pgBadger分析日志,数据库管理员可以更好地理解数据库的行为模式,及时发现和解决性能问题,从而提高数据库的响应速度和稳定性。


图片

PGFans社区主页

https://pgfans.cn/user/home?userId=5710

最后修改时间:2024-07-11 17:16:13
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论