一、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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。







