PostgreSQL的日志分析工具——Pgbadger的安装和使用
pgBagder 是 PostgreSQL 的新一代日志分析器, 由 Darold (也是 ora2pg 的作者, 强大的迁移工具) 创建的。pgBadger 是一种快速、简便的工具, 用于分析 SQL 通信量, 并使用动态图来创建 HTML5 报告。pgBadger 是了解 PostgreSQL 服务器的行为并确定需要优化哪些 SQL 查询的完美工具。pgBagder 是在linux操...
1 前言
pgBagder 是 PostgreSQL 的新一代日志分析器, 由 Darold (也是 ora2pg 的作者, 强大的迁移工具) 创建的。pgBadger 是一种快速、简便的工具, 用于分析 SQL 通信量, 并使用动态图来创建 HTML5 报告。pgBadger 是了解 PostgreSQL 服务器的行为并确定需要优化哪些 SQL 查询的完美工具。
pgBagder 是在linux操作系统中运行的程序。
2 安装环境
操作系统:Linux。本文操作系统版本为 Redhat,CentOS 6.9,64位 。
数据库:PostgreSQL 10.0
依赖程序: perl,php , httpd以及它们的依赖。
本文的Httpd的版本是httpd.x86_64 2.2.15,perl的版本perl.x86_64 5.10,php.x86_64 5.3.3。
3 安装和使用
- 使用yum 安装各项依赖
安装Perl:
[root@node01 ~]# yum install -y perl perl-devel
安装php:
[root@node01 ~]# yum install -y php php-devel
安装httpd:
[root@node01 ~]# yum install -y httpd httpd-devel
2. 下载 pgbadger的安装包。
在浏览器中访问官方地址https://github.com/darold/pgbadger/releases,选择一个版本来下载。
或者在linux命令行界面,运行下载命令。例如如果希望下载pgbadge v10.0,可以执行命令:
wget https://github.com/darold/pgbadger/archive/v10.0.tar.gz
3. 下载完成后。在安装包所在目录里解压,编译并安装。
[root@node01 ~]# tar -zxvf pgbadger-10.0.tar.gz
[root@node01 ~]# cd pgbadger-10.0
[root@node01 pgbadger-10.0]# perl Makefile.PL
[root@node01 pgbadger-10.0]# make && make install
检测是否安装成功:
[root@node01 pgbadger-10.0]# which pgbadger
/usr/local/bin/pgbadger
[root@node01 pgbadger-10.0]# pgbadger -V
pgBadger version 10.0
4. 在“/var/www/html”下创建一个叫作pgbadger的目录。
[root@node01 pgbadger-10.0]# mkdir /var/www/html/pgbadger
5. 启动httpd,并验证httpd能否正常工作。
[root@node01 pgbadger-10.0]# service httpd start
正在启动 httpd:httpd: Could not reliably determine the server's fully qualified domain name, using 10.33.47.114 for ServerName
[确定]
在/var/www/html/pgbadger/下创建一个php文件,名为test.php:
[root@node01 pgbadger]# vi /var/www/html/pgbadger/test.php
内容为:
<?php
echo "This is a test .";
?>
然后再浏览器中打开查看该网页:
http://10.33.47.114/pgbadger/test.php
这里10.33.47.114是本文计算机的ip地址,这里你要将它替换为自己的ip地址。
如图所示,http可以正常工作。
6. 修改PostgreSQL的配置文件postgresql.conf 中的一些与日志有关的参数。
log_line_prefix,顾名思义是日志行的前缀
# special values:
# %a = application name
# %u = user name
# %d = database name
# %r = remote host and port
# %h = remote host
# %p = process ID
# %t = timestamp without milliseconds
# %m = timestamp with milliseconds
# %n = timestamp with milliseconds (as a Unix epoch)
# %i = command tag
# %e = SQL state
# %c = session ID
# %l = session line number
# %s = session start timestamp
# %v = virtual transaction ID
# %x = transaction ID (0 if none)
# %q = stop here in non-session
我们将log_line_prefix设置如下并保存:
log_line_prefix = '%t [%p] %r %d %u '
其中,%t表示时间戳;%p表示进程号;%r表示客户端的主机和端口;%d表示数据库名;而%u 表示用户名。
log_min_duration_statement = 5000
表示大于5s的sql语句会被记录
log_connections = on
表示将连接的创建和断开记录到日志中。
log_lock_waits = on
表示将锁等待记录到日志中。
log_checkpoints
表示将检查点记录到日志中。
下面的参数的值是默认的。你需要了解这些参数的含义。
log_destination = 'stderr' # Valid values are combinations of
# stderr, csvlog, syslog, and eventlog,
# depending on platform. csvlog
# requires logging_collector to be on.
表示采用标准文本格式(stderr)输出日志。
# This is used when logging to stderr:
logging_collector = on # Enable capturing of stderr and csvlog
# into log files. Required to be on for
# csvlogs.
# (change requires restart)
表示将日志收集到日志目录中。
# These are only used if logging_collector is on:
#log_directory = 'pg_log' # directory where log files are written,
# can be absolute or relative to PGDATA
表示日志目录是 pg_log。
7. 使用pgBadger来分析pg_log目录中的日志。
在postgresql产生的一段时间(例如几个小时或者几天)的日志后。我们可以就用pgBadger来分析它了。执行命令:
[root@node01~]# pgbadger --prefix '%t [%p] %r %d %u ' /opt/postgresql10/data/pg_log/postgresql-*.log -o /var/www/html/pgbadger/out.html -f stderr -s 10
这里你需要将 “/opt/postgresql10/data/pg_log/postgresql-*.log” 是替换为你本地的postgresql日志文件的文件路径。
如果没有其他问题,pgBadger会马不停蹄地读取和分析这些日志,并最终生成一个全面的网页报表,名为out.html。你可以在浏览其中查看其中丰富的指标:http://10.33.47.114/pgbadger/out.html
参考文献
[1] 转身泪倾城.pgbadger监控安装和使用. 2016-05-13
更多推荐
所有评论(0)