扫码阅读
手机扫码阅读

云原生丨 pgCluu 的安装、使用与实践

298 2023-09-21



Cloud Native

ESG服务BU云原生交付中心、云基地

在云原生上的尝试、调研与分享



本期内容

pgCluu安装使用及实践

PostgreSQL 的监控方法很多,数量越来越多的 PG 的监控再通过手工的方法来操作已经不切实际,所以应允而生的就是各种的工具。本期跟大家分享一个性能监控和审计的实用工具——pgCluu 。

什么是 pgCluu

pgCluu 是一个用于对 PostgreSQL 集群的性能进行全面审计的工具

它分为两部分,一个用于使用 psql 和 sar 获取 PostgreSQL 服务器上的统计信息的 collector;以及一个 reports builder,用于生成所有 HTML 和图表输出。

它的优点是开源免费,使用灵活,适合定期数据库信息分析,适合二次开发;缺点是非实时监控,不支持慢查询。

pgCluu的安装流程

pgCluu报告生成器基本操作默认输出静态html及图表,动态模式需配合Apache服务器。

静态模式

1、前置依赖

perl环境 perl -v查看当前是否有perl环境。

yum install perl-ExtUtils-MakeMakerwget https://github.com/darold/pgcluu/archive/refs/heads/master.zipunzip master.zipcd pgcluu-master/perl Makefile.PLmakesudo make installcp -f cgi-bin/pgcluu.cgi /var/www/cgi-bin/

动态模式

如需启用动态模式,需配置Web服务器官方样例提供 Apache的cgi 模式。

1、前置依赖

yum install perl-CGI

2、apache 安装部署过程:

yum install httpdsystemctl enable httpdservice httpd start

3、修改 /etc/httpd/conf/httpd.conf

LoadModule cgid_module modules/mod_cgid.so"/var/www/cgi-bin"> AllowOverride None Options ExecCGI Require all granted Allow from allAddHandler cgi-script .cgiScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
//加入pgcluu相关配置,当前目录为项目根目录sudo mkdir  /var/www/html/pgcluu/sudo cp cgi-bin/pgcluu.cgi /var/www/cgi-bin/sudo cp -rf cgi-bin/rsc/ /var/www/html/pgcluu/sudo chown -R apache: /var/www/html/pgcluu/  //修改文件权限/bin/chown -R postgres:apache /var/lib/pgcluu/data//bin/chmod -R u=rwX,g=rsX,o= /var/lib/pgcluu/data/  //创建定时任务crontab -e*/5 * * * * /usr/local/bin/pgcluu --cache /var/lib/pgcluu/data  // 修改pgcluu.cgi文件17行,将此行注释(否则会报错cgi-error)// no warnings 'redundant';

pgCluu的用法

pgCluu 用法

用法:pgcluu [options] -o report_dir input_dir

input_dir:存放 pgcluu_collect d或 pgstats 和 sar 数据文件的目录。

注:sar 为 Linux 系统性能分析工具

pgstats 为由 pg_statistic 系统表扩展而来的系统视图,记录的是每个表每个字段的统计信息,用于 PostgreSQL 优化器做执行计划选择的时候提供参考。

可选项较多,这边只说明常用项:

更多可选项,可执行 pgcluu --help 查看。

# 使用示范

1. 以存储的数据生成静态报告:

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

2. 只想要指定数据库的报告,可使用以下方式:

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

3. 从sar输出文件导出报告,可使用以下方式:

sar -p -A 10 60 > /root/my_sar_file.txtpgcluu -o /tmp/report_sar/ -i /root/my_sar_file.txt

4. 从 pgstats 生成的 sa 二进制文件导出报告:

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

5. 报告以增量模式运行,可限制报告保留天数:

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

pgCluu_collectd 用法:

用法:pgcluu_collectd [options] output_dir

output_dir:pgcluu_collectd 存储统计信息的目录的完整路径

可选项较多,这边只说明常用项:

更多可选项,可执行 pgcluu_collectd --help 查看。

# 使用示范

1. 作为 postgres 用户在本地监控完整的 PostgreSQL 集群;

mkdir /tmp/stat_db1/pgcluu_collectd -D -i 60 /tmp/stat_db1/

2. 排除指定时间段(22:30到第二天06:30)内的数据收集;

pgcluu_collectd -D -i 60 /tmp/stat_db1/ --exclude-time "22:30-06:30"

3. 从远程服务器收集数据:

pgcluu_collectd -D -i 60 /tmp/statdb1/ -h 10.0.0.1 -U postgres --disable-sar

经过以上-D后台监控数据库一段时间后,通过一下方式终止程序:

pgcluu_collectd -k

可以每日或每小时,统计轮换以增量模式运行收集器:

pgcluu_collectd -D -i 60 /tmp/stat_db1/ --rotate-daily

在有大量活动的数据服务上,可使用:

--compress 选项的压缩模式

--rotate-hourly 强制每小时轮换数据文件

如果磁盘空间有限,可使用:

--retention 存储天数限制,来限制统计文件的保留时间

收集完成后的统计数据如下图:

接下来,使用pgCluu根据数据生成报告。

pgCluu的实操分享

实操示例一:

使用 GaussDB 用户监控 10.3.70.206 数据库服务的指定数据库 Postgres,监控200秒,30秒获取一次数据。

Mkdir -p /tmp/stat_postgres/pgcluu_collectd -E 200 -i 30 /tmp/stat_postgres/ -h 10.3.70.206 -U gaussdb -W Enmo@123 -p15432 -d postgres

效果如下,会生成一系列监控数据 csv 文件 ⬇

# 将监控数据转换为html格式输出到指定目录pgcluu -o /tmp/stat_postgres/ /tmp/stat_postgres/

效果如下,会根据 pgcluu_collectd 生成的 csv 数据文件,将数据转换为 html 静态文件  ⬇

通过入口文件 index.html 进入,可以查看到一系列监控指标数据。

数据库统计数据  ⬇

上述方法是针对 PostgreSQL 中收集信息,也就是说我们可以建立一个监控服务器,然后收集是所有的PG的信息到一台机器,然后开始分析,做成全面自动化的方案,具体可依据个人的需求来操作。

实操示例二:

动态CGI模式监控 10.11.xxx.xx 机器的PostgreSQL ,5432端口,并开启ssh获取机器系统信息。

/usr/local/bin/pgcluu_collectd -D -i 30 -I /var/lib/pgcluu/data/  -h 10.11.xxx.xx -U postgres -W 123456 -p5432  --enable-ssh --ssh-user postgres --ssh-identity /var/lib/pgsql/.ssh/id_rsa /var/lib/pgcluu/data   crontab -e*/5 * * * * /usr/local/bin/pgcluu --cache /var/lib/pgcluu/data

最终效果如下  ⬇

# 注意事项

采集远程系统信息,需配置 ssh 认证免密登录,且为 Postgres 用户,参数如下:

--enable-ssh --ssh-user postgres --ssh-identity /var/lib/pgsql/.ssh/id_rsa

注意 ssh-identity 传递的是 id_rsa ,不是 id_rsa.pub 。

最终效果如下 ⬇

以上就是本期的全部内容。我们很详细的跟大家讲解了 pgCluu 的安装过程,使用方法和实际应用,有机会可以尝试操作体验一次。

数据监控的一个新工具

大家可以下载安装体验~

如果你有更好的办法

欢迎加入社群一起讨论哦⬇

本期作者

李冠军


原文链接: http://mp.weixin.qq.com/s?__biz=Mzg5MzUyOTgwMQ==&mid=2247517828&idx=1&sn=16fe0e671c05c19a5c94a4a4beaa4faa&chksm=c02fbd22f758343463c0ad3b598b71948f3c840c57f2a5a31d8705cff5c9fcd6063da72ea5ea#rd