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

Halo数据库—pgbadger介绍和使用

冷狼 2024-08-13
54

pgbadger 是一款使用 Perl 实现的轻量级日志分析工具。通过分析HALO的日志文件,以图表形式展示数据库的各项活动和状态信息。为了提高处理速度,它能高效地分析 HALO日志。作为一个小型的 Perl 脚本,它在性能上优于许多其他HALO日志分析工具。

开源地址:https://github.com/darold/pgbadger

使用样例:

图片

安装

软件包下载链接 从 GitHub 下载 (https://github.com/darold/pgbadger):安装依赖包

yum install -y perl perl-devel php php-devel httpd httpd-devel

解压编译安装

tar -zxvf pgbadger-12.4.tar.gzcd pgbadger-12.4/perl Makefile.PLmake && sudo make install

安装后的检查

[halo@liko pgbadger-12.4]$ which pgbadger/usr/local/bin/pgbadger[halo@liko pgbadger-12.4]$ pgbadger -VpgBadger version 12.4

安装后的检查

[halo@liko pgbadger-12.4]$ which pgbadger/usr/local/bin/pgbadger[halo@liko pgbadger-12.4]$ pgbadger -VpgBadger version 12.4

HALO配置

由于pgbadger读取HALO日志并获取信息,因此有必要对 Postgresql.Conf 文件进行一些更改,以便在 pgbadger 分析的内容足够

第一件也是最重要的事情是启用查询日志记录。在 Postgresql.Conf文件上相应地更改log_min_duration_statement参数值。值“0”表示将记录每个语句,这对于非常繁忙的服务器来说可能不理想。您可以根据您的要求相应地更改该值。假设您想要记录运行时间超过 2 秒的查询,然后将参数值(以毫秒为单位)设置为 2000 。

** 不要同时启用 log_min_duration_statement、log_duration 和 log_statement,这将导致错误的计数器值和过大的日志大小。

** 如果您不需要有关查询的所有详细信息,请将 log_min_duration_statement 设置为 -1 以禁用它并在postgresql.conf 文件中启用 log_duration。它只会报告查询的持续时间和数量。

log_min_duration_statement 应始终是首选(推荐)。

log_min_duration_statement = 0

要查找的下一个重要参数是 log_line_prefix ,其值可以根据另一个参数 log_destination 的值来指定。log_destination 值告诉 HALO以指定的格式生成日志。默认情况下,HALO生成标准错误 (stderr) 格式的日志。在此格式中,每条日志消息都以参数 log_line_prefix 指定的信息为前缀。

对于 stderr 日志格式, log_line_prefix 必须至少具有时间转义序列 %t, %m or %n 和与进程相关的转义序列 %p or %c ,如图所示以下。

log_line_prefix = '%t [%p]: '

它还允许您添加用户、数据库名称、应用程序名称和客户端 IP 地址,如下所示。

 log_line_prefix = '%t [%p]: user=%u,db=%d,app=%a,client=%h '

另一件要记住的事情是,您的日志消息应该是英语,无论是否支持区域设置。以下设置可确保:

lc_messages='en_US.UTF-8'

pgBadger常见 postgresql.conf 配置如下所示:

log_min_duration_statement = 0log_line_prefix = '%t [%p]: user=%u,db=%d,app=%a,client=%h 'log_checkpoints = onlog_connections = onlog_disconnections = onlog_lock_waits = onlog_temp_files = 0log_autovacuum_min_duration = 0log_error_verbosity = defaultlc_messages='en_US.UTF-8'

完成这些更改后,您需要重新启动 Halo 数据库以使设置生效

pg_ctl restart

为了测试 pgbadger 的分析功能,您可以使用 pgbench 工具在 Halo 数据库中创建模拟数据。

pgbench -i halo0rootpgbench -r -P 1 -c 5 -T 3 -j 5 halo0root
一旦配置完成并且有了模拟数据,接下来就可以开始生成 pgbadger 报告了。
$ pgbadger <log file>

例如:

sudo pgbadger /data/halo/diag/haloserver-2024-02-21_113810.log

您还可以在指定日志名称时使用通配符 * 一次性分析所有日志文件。此外,您还可以通过指定适当的开关来指定输出目录和文件名,如下所示。

[halo@liko diag]$ pgbadger haloserver-2024-02-21_113810.log[========================>] Parsed 4275241 bytes of 4275241 (100.00%), queries: 13337, events: 0LOG: Ok, generating html report...[halo@liko diag]$

图片

您可以设置定时任务,以定期生成 pgbadger 报告,从而持续监控 Halo 数据库的性能。这可以通过设置 cron作业来完成。例如,以下 cron作业将在每天凌晨 01:00 生成 pgbadger报告,并将保留期设置为一周。

$ crontab -e0 1 * * * /usr/local/bin/pgbadger --R 1 -I -q /data/halo/diag/haloserver-* -O /var/www/pgbadger/

您可以使用下面提到的帮助命令来获取 pgbadger中选项及其用法的完整列表。

$ pgbadger --help

总结一下,pgbadger 是分析 Halo 数据库日志和识别性能问题的极佳工具,它提供的丰富的 HTML 报告和图表对数据库性能的监控和分享非常有帮助。

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

评论