pgcluu 集群性能监控和审计工具

最近线上pg 频繁出现性能问题,而zabbix和grafana 上的监控又不够详细。最后结合前期自己写了很多监控脚本,把问题解决了。虽然自己用起来没问题,但是只能在出问题的时候现场抓。抓到后研发又一种不信任的表情。但是还是感觉缺点什么。于是在网上搜索了一下有没有更好的解决方法(研发喜欢曲线。哈哈)。于是发现 pgcluu。

http://pgcluu.darold.net/

source安装

wget https://github.com/darold/pgcluu/archive/v2.9.zip

unzip v2.9.zip

[root@vlnx107002 ~]# cd pgcluu-2.9/

[root@vlnx107002 ~]#perl Makefile.PL

[root@vlnx107002 ~]#make &&  make install

 

 

用 postgres账号安装如下:

[zhaowz@vlnx000129 ~]$ pgcluu_collectd -D -Q  -i 60 /tmp/stat_db1/ -h vlnx050001.xxxx.cn -Uzhaowz -d postgres 

pgcluu_collectd -D  -i 60 /tmp/stat_db1/ -h vlnx050001.xxxx.cn -Uzhaowz -d postgres  --disable-sar --exclude-time "10:00-11:00"

mkdir /tmp/stat_db1/

pgcluu_collectd -D -i 10 /tmp/stat_db1/

pgcluu_collectd -k

mkdir /tmp/report_db1/

pgcluu -o /tmp/report_db1/ /tmp/stat_db1/

====================================================================================

如果安装时报错

-bash-4.2$ perl Makefile.PL

Can't locate ExtUtils/MakeMaker.pm in @INC (@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.

解决方法

yum install perl-ExtUtils-MakeMaker -y

 

 

pgcluu_collectd用法

    用法:pgcluu_collectd [options] output_dir

            output_dir:pgcluu_collectd所在目录的完整路径统计。

    选项:

      -B, -  enable-buffercache启用buffakache统计信息,如果pg_buffercache扩展已安装。

      -c, -  capture创建PostgreSQL安装的快照进入tmp / pgcluu_capture.tar.gz。

      -C, -  end-counter = NUM??报告后终止程序。

      -d, -  dbname =要连接的DATABASE数据库名称。默认为当前用户。

      -D, -  damonmonize从控制台分离并进入守护进程模式。

      -E, -  end-after =在给定的秒数后自动终止程序。

                               可以写成:7200或120M或2H,连续几天使用7D七天后停止收集数据的示例。

      -f, -  pid-file = pid文件的FILE路径。默认值:/tmp/pgcluu_collectd.pid。

      -h, -  host = HOSTNAME数据库服务器主机或套接字目录

      -i, -  interval =运行之间等待的NUM次

      -k, -  kill停止当前运行守护进程的pgcluu_collectd。

      -m, -  metric = METRIC设置要执行的指定的逗号分隔列表。

      -M, -  max-size = SIZE自动终止程序时输出dir的大小超过给定的大小。可写:2GB或2000MB。

      -p, -  port =要连接的PORT数据库端口。默认为5432。

      -P, -  psql = psql命令的BIN路径。默认值:psql。

      -Q, -  no-statement 不从pg_stat_statements收集查询统计信息。

      -r, -  rotate-daily 强制数据文件的每日轮换。

      -R, -  rotate-hourly强制每小时旋转数据文件。

      -s, -  sar = sar sysstat命令的BIN路径。默认值:sar。

      -S, -  disable-sar禁用使用sar收集系统统计信息。

      -T, -  notablespace禁用在连接用户时在表空间查找不是超级用户,以避免打印错误消息。

      -U, -  dbser = USERNAME数据库用户连接为。默认为当前用户。

      -v, -  verbose打印出调试信息。

      -V, -  version显示pgcluu_collectd版本并退出。

      -W, -  password =传递数据库密码。

      -z, - 压缩旋转数据文件的压缩。

      --included-db = DATABASE仅收集存在的数据库的统计信息在逗号分隔的数据库名称列表中。

      --list-metric列表可以执行的度量标准操作。

      --sysinfo获取操作系统信息并退出(sysinfo.txt)。

      --no-sysinfo根本不收集操作系统信息。

      --no-database根本不收集数据库统计信息。

      --pgbouncer-args = OPTIONS用于连接到pgbouncer系统的选项

                               数据库。例如:-p 6432 -U postgres -h 192.168.1.100

                               您必须至少提供一个参数才能启用pgbouncer监控。

      --sar-file = sysstat stats的sar输出数据文件的FILE路径默认为output_dir / sar_stats.dat。

      --stat-type all | user设置要读取的统计表。值:'all'或'user'to看看pg_stat_(所有用户)表。默认值:用户。

      --pgversion XY强制PostgreSQL版本为给定值。

      --pgservice NAME pg_service.conf文件中的服务名称。

      --exclude-time RANGE通过给出开始和结束排除一段时间小时。

      --package-list = CMD命令列出PostgreSQL包。默认是

                               自动检测包类型并使用命令'rpm -qa'或'dpkg -l'。如果你有其他系统,你可以

                               设置自定义命令。关键字'postgres'的过滤器附加到命令:'| grep postgres'。

      - 保留NDAYS保存在数据目录中的滚动天数增量模式。默认是无限期存储。

    使用这些选项在-h定义的远程主机上执行sar选项,否则将在本地执行:

      --enable-ssh激活使用ssh远程运行sysstat。

      --ssh-program ssh要使用的ssh程序的路径。默认值:ssh。

      --ssh-user用户名连接登录名。默认为运行用户。

      --ssh-identity要使用的标识文件的文件路径。

      --ssh-timeout ssh连接失败的第二次超时。默认10秒。

      --ssh-options选项用于ssh连接的-o选项列表。选项

                               总是使用:

                                     -o ConnectTimeout = $ ssh_timeout

                                     -o PreferredAuthentications = hostbased,publickey

pgcluu

  旋转和压缩

    使用--rotate-daily或--rotate-hourly命令行选项时将强制pgcluu_collectd每天或每小时轮换所有统计信息文件。在这种情况下,统计文件将在子目录中创建基于旋转频率,output_dir /年/月/日[/小时]。这是称为增量模式。

    为了节省文件系统空间,可以启用所有压缩在旋转过程中旋转文件。只需激活-z或-compress命令行选项。您还可以使用--retention选项以天为单位设置存储时间限制。

  增量模式

    当--rotate-daily或--rotate-hourly命令行启用此模式使用选项。它允许pgcluu按天递增地构建报告或小时。在此模式下,您无需每天或每小时构建报告pgcluu会自动完成工作,只需给它顶级统计数据目录。

           pgcluu -o / var / www / pgcluu / reports / / var / lib / pgcluu / data /

    pgcluu将检测到--rotate-daily或--rotate-hourly已被使用 收集数据并生成存储的每一天或每小时的报告。已处理的先前目录不会再次处理除非这是最后一个。

    每日或每小时的统计存储也允许使用CGI脚本pgcluu.cgi具有动态报告和时间搜索。看到“使用动态模式”一章。

    使用--rotate-daily或--rotate-hourly命令行选项时将强制pgcluu_collectd每天或每小时轮换所有统计信息文件。在这种情况下,统计文件将在子目录中创建基于旋转频率,output_dir /年/月/日[/小时]。这是称为增量模式。

为了节省文件系统空间,可以启用所有压缩在旋转过程中旋转文件。只需激活-z或--compress命令行选项。您还可以使用--retention选项以天为单位设置存储时间限制。

  捕捉模式

    此模式的目标是能够获得有关的简单报告PostgreSQL安装没有收集其他指标而不是数据库和表空间大小。IT可以使用此报告来更好地理解配置和需要调整的事情。

    要启用此模式,只需使用单个选项-c运行pgcluu_collectd或 - 捕获。其他命令行选项将不会被考虑在内。pgcluu_collectd将创建一个临时目录/ tmp / pgcluu_capture存储临时数据,如果构建压缩tar后将被删除

    存档:/tmp/pgcluu_capture.tar.gz。这可以是这个档案与pgcluu一起使用来构建实例的快照报告。pgcluu会自动检测此模式。

生成报告

  静态HTML报告

    要生成有关PostgreSQL群集的pgCluu报告,您必须在至少,有一个包含生成的所有数据文件的目录pgcluu_collectd或pgstats。在此目录中,如果您有一个名为的文件sar_stats.dat或sadc_stats.dat用于二进制sadc数据文件,它将是用于构建有关系统利用率的报告。如果你只是想做来自sar文件的报告使用-i或-I选项。

    用法:pgcluu [options] [-i sar_file | -I sadc_file] [input_dir]

 

            input_dir:pgcluu_collectd或pgstats和sar数据的目录文件存储。

 

 options:

  -b, --begin  datetime      start date/time for the data to be parsed.   

                                    开始日期/时间,用于解析数据。

  -C, --cache                generate cache files only (.bin), no html output. 

                                    只生成缓存文件(.bin),没有html输出。

  -d, --db-only dbname       only report for the whole cluster and the given  database name. You can use it multiple time orgive a comma separated list of database name.

                                        only报告整个群集和给定的数据库名称。您可以多次使用它或分隔逗号数据库名称列表。

                             

  -D, --device-only dev      only report I/O stats for a particular device You can use it multiple time or give a commaseparated list of device name, ex: sda,sdc.

                                        仅报告的I / O统计信息特定设备您可以多次使用它或分隔逗号设备名称列表,例如:sda,sdc

  -e, --end    datetime      end date/time for the data to be parsed. 

                                    结束日期/时间 要解析的数据。

  -i, --sar-file=FILE        path to the sar text data file to read to generate  system reports. Default to input_dir/sar_stats.dat.

                                        sar文本数据的FILE路径要读取的文件以生成系统报告。默认为input_dir / sar_stats.dat。

  -I, --sadc-file=FILE       sadc binary data file to read to generate system reports. Default to input_dir/sadc_stats.dat.

                                    sadc二进制数据文件到读取以生成系统报告。默认为input_dir / sadc_stats.dat。

  -n, --top-number           Top number of tables or indexes I/O stats to show.  Default is set to top 10. Set it to 0 to show all.

                                    要显示的表或索引I / O统计信息的最大数量。默认设置为顶部10.将其设置为0以显示全部。

  -N, --network-only iface   only report stats for a particular network interface. You can use it multiple times or give a comma separatedlist of network interfaces, ex: eth0,eth1.

                                        仅限网络iface仅报告特定网络接口的统计信息。您可以使用它多次或给出逗号分隔的网络接口列表, 例如:eth0,eth1。

  -o, --output=DIR           output directory

                                        DIR输出目录

  -r, --reverse-date         By default pgcluu look at mm/dd/yy format in sar file.When enabled pgcluu will look at dd/mm/yy format.

                                        By默认pgcluu在sar文件中查看mm / dd / yy格式。启用pgcluu时将看dd / mm / yy格式。

  -s, --sadf=BIN             path to the sadf sysstat command used to read the sadc binary data file. Default: /usr/bin/sadf.

                                        sadf sysstat的BIN路径用于读取sadc二进制数据文件的命令。默认值:/ usr / bin / sadf。

  -S, --disable-sar          disable collect of system statistics with sar.

                                        禁用使用sar收集系统统计信息

  -t, --with-table table     Only report for the whole tables and the giventable name. You can use it multiple time orgive a comma separa ted list of database name.

                                    仅报告整个表和给定的表名称。您可以多次使用它或者以逗号分隔列表数据库名称。

  -T, --no-table             Do not report statistics related to tables.

                                        不报告与之相关的统计信息表

  -z, --timezone +/-XX       Set the number of hour(s) from GMT of the timezone. Use this to adjust date/time from the sar output,pgcluu use GMT time to draw charts.

                                            设定小时数来自时区的GMT。用它来调整sar的日期/时间输出,pgcluu使用GMT时间绘制图表。

  -Z, --stats-timezone +/-XX Set the number of hour(s) from GMT of the timezone. Use this to adjust date/time from the cluster andsystem stats output, pgcluu use GMT time.

                                        设置时区GMT的小时数。用它来调整 从集群和系统统计信息输出的日期/时间,pgcluu使用GMT时间

  --from-sa-file             instruct pgcluu that file specified by the -i optionuses the standard system activity daily data file.

                                        设置时区GMT的小时数。用它来调整 从集群和系统统计信息输出的日期/时间,pgcluu使用GMT时间

  --charset                  used to set the HTML charset to be used.Default: utf-8.

                                    用于设置要使用的HTML字符集。默认值:utf-8

    例如,您可以从存储的数据文件生成所有HTML报告 使用以下命令进入/ tmp / stat_db1 /:

            mkdir / tmp / report_db1 /

            pgcluu -o / tmp / report_db1 // tmp / stat_db1 /

    如果您只想要某些数据库的报告,请使用以下命令:

            pgcluu -o / tmp / report_db1 // tmp / stat_db1 / --db-only“db1,db2,db3”

    如果您只想从sar输出文件创建报告:

            sar -p -A 10 60> /root/my_sar_file.txt

            pgcluu -o / tmp / report_sar / -i /root/my_sar_file.txt

    或者来自每日sa文件:

            sar -p -A -f / var / log / sa / sa18> /root/my_sar_file.txt

            pgcluu -o / tmp / report_sar / -i /root/my_sar_file.txt --from-sa-file

    从一个二进制文件:

            pgcluu -o / tmp / report_sar / -i / var / log / sysstat / sa22

    如果您没有相同版本的sysstat,请使用sa文本文件:

            pgcluu -o / tmp / report_sar / -i / var / log / sysstat / sar23 --from-sa-file

    如果pgcluu_collectd已在增量模式下运行,则可以限制报告使用的保留天数:

            pgcluu -o / tmp / report_sar / / tmp / stat_db1 / --retention 30

    将在每天或每小时之后构建静态报告与pgcluu_collectd一起使用的旋转。

  动态报告(CGI)

    动态报告由名为pgcluu.cgi的CGI脚本构建,可以是在源代码的cgi-bin存储库中找到。它允许你选择构建报告的时间段并查看所有不同的时间段与静态HTML报告一样,报告此期间。后

    从源代码或二进制包安装CGI可能会找到/usr/lib/cgi-bin/pgcluu.cgi或/var/www/cgi-bin/pgcluu.cgi以下你的发行。

    要在CGI模式下使用pgCluu,您需要一个Web服务器(这里我们使用Apache)以及定期构建缓存的cron任务。

    首先启用CGI模式。

            sudo a2enmod cgi

            sudo service apache2 restart

    然后CGI需要找到pgcluu_collectd所在的统计目录主要是/ var / lib / pgcluu / data /。该存储库的内容必须是可由Apache用户读取(www-data)。

    注意限制对服务器和CGI的访问作为信息关于您的数据库和服务器在报告中公开。

    CGI脚本pgcluu.cgi使用资源文件(CSS和javascript)。它们存储在源的cgi-bin / rsc /目录中分配。将此存储库安装到Web的DocumentRoot上服务器,例如:

            sudo mkdir / var / www / pgcluu /

            sudo cp -rf cgi-bin / rsc / var / www / pgcluu /

    然后编辑/etc/pgcluu.conf,从cgi-bin / pgcluu.conf来源复制它它不存在。更改RSC_BASE和INPUT_DIR配置指令以匹配您的安装。在我们的示例中:

            RSC_BASE / pgcluu / rsc /

            INPUT_DIR / var / lib / pgcluu / data

    现在我们可以开始数据收集了。目前pgcluu.conf只是由CGI pgcluu.cgi阅读,但这可能在将来发生变化。

    要让pgCluu开始收集数据,您可以使用以下命令(你可以随意更改它)。我们需要postgres用户这个。

            sudo su  -  postgres

            / usr / local / bin / pgcluu_collectd -D -i 60 --rotate-daily / var / lib / pgcluu / data

    这将每天轮换您的数据。这也是systemd中的默认值服务文件。

    将CGI直接插入CSV统计文件将导致非常缓慢的一代报道。为了提高速度,必须使用缓存必须在缓存模式下定期执行pgcluu。手动运行它第一次

           / usr / local / bin / pgcluu --cache / var / lib / pgcluu / data

    然后添加一个cron任务,每隔五或十分钟执行一次命令:

            * / 5 * * * * / usr / local / bin / pgcluu --cache / var / lib / pgcluu / data

    如果您使用的是systemd pgcluu.timer服务,则可以使用缓存使用STATS_REPORT_CACHING指令启用。启用此模式在statistics目录中生成缓存文件(* .bin)并禁用静态HTML报告生成。

    要查看报告,请转到以下网址:

            HTTP://localhost/cgi-bin/pgcluu.cgi

    或者使用您的fqdn服务器名称更改localhost。请注意,这里有pgcluu_collectd和pgcluu脚本 / usr / local / bin /这是源安装的默认设置但是从二进制包安装后你可能会发现它们在/ usr / bin /中。

    CGI模式允许您选择用于生成的时间段统计报告。使用默认的pgcluu_collectd 60秒间隔,a每日图表将有1440点。有太多的时间序列来渲染对于表演不是一个好点,所以我们限制第一个

    选定期限的七天。这意味着最多10080点一个星期,这似乎是一个安全的限制。随意增加或减少服务器和客户端资源之后的限制。这是受控制的通过

            MAX_RENDERED_DAYS 7

    pgcluu.conf中的配置指令

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值