![5c7c32c0aaa7eaed68482ccb6459e728.png](https://i-blog.csdnimg.cn/blog_migrate/b78bc129c9d849bde4957144f5116f5e.jpeg)
人生可能如同塑料袋,轻薄,毫无意义,但装满东西,就可以变成任意的形态,可大可小,可软可硬,取决于他的,是里面的东西,而不是塑料袋。
事情的开始是由一个 叫 贾森的同学开始的,所以开始准备一些关于POSTGRESQL 监控相关的东西,目前一共 四期 (已经完成,通过各种监控软件,达到360 度的监控 postgresql, 以下是第一期)
Postgresql 的监控方法很多,数量越来越多的PG 的监控在通过手工的方法估计是不赶趟了,所以应允而生的就是各种的工具,当然有收费的也有免费的,所以不说说总结一下总是不妥。不知道会说几期,另外有一个明确的规则的就是收费的都不说。
至于监控,也不能直接上来就说,PG的监控也是可以从内到外,有层次的,我们可以看一下,下面的这个图。
![808dc22493984124aa55e99fab140cc8.png](https://i-blog.csdnimg.cn/blog_migrate/2b4c416d9302f7f318dbb05cc08b6a65.jpeg)
所以监控来说我们需要评判一个监控TOOLS是否OK,可以看看上面的那个表,是否都能覆盖到。
其中可以监控PG的方式很多,PG_WATCH, PGCLUU,PGBADGER, PGHERO,PMM for postgresql 等等,可能还有更多,没有列出来。
今天要开始说的是PGCLUU 这个软件,首先这个软件是免费的,另外要说一点,为什么要上边那个图,大部分免费的软件可能都不能做到上面所有的选项,所以必须的联合使用。
我们看看pgcluu 的卖点是什么:
pgCluu is a PostgreSQL performances monitoring and auditing tool.
OK 定位已经有了,性能监控和审计工具。以下以最新的的3.1为例
pgCluu 是通过perl语言编写的,所以系统中必须有perl的环境,所以你的确认你的环境中是否有perl -v 如果没有反应或报错,那就的安装一下 perl 的环境了。
下面是假设你已经安装了perl 环境后的情况。
![2768eaebf786af304b57479a77dc0d10.png](https://i-blog.csdnimg.cn/blog_migrate/4f22c962dd0db09d772384e2cfdda1cb.jpeg)
pgcluu 有两种安装方式一种是yum的安装方式,一种是下载包然后解压后就可以使用,但你要自己设置一些变量环境,这里采用压缩包的方式,然后将压缩包的文件放到了 /usr/local/pgcluu 目录中然后在系统变量环境中指定这个环境,同时你要安装 yum install sysstat ,在做完这一切后,我们可以运行一下,至于怎么运行,后面说,我们不看过程,看疗效。
在运行了其中的一个命令后,我得到了这些
![aad957fb372ec4a56ec4a92be29118e2.png](https://i-blog.csdnimg.cn/blog_migrate/af90f28197735b2241740c64c1001a9f.jpeg)
由于信息量比较大,这里挑挑拣拣的说说,其他的没有说到不见得没有用,大家可以自己看看,或许能有更多的收获。
在做完上面的事情,你在运行一个命令后,就可以得到下面的这张图
![1d639ce4eae65b8d44e11b2eb88aec6a.png](https://i-blog.csdnimg.cn/blog_migrate/d8b673636d375ebad4083904e828f6d8.jpeg)
大致说一下这个软件的监控( 实际上我认为这不是一个监控这是一个融合了,整体的 postgresql cluster 的信息综合体,并且包含了一些大部分DBA 关注的信息)
其中有德哥在 GITHUB 中安装POSTGRESQL 提到的一些关于 LINUX核心参数的调整里面的东西,这里可以通过这个PGCLUU 来看看你调整了没有,当前的参数是什么。
![a3ce5331e981ea2957c47a9ac979fee1.png](https://i-blog.csdnimg.cn/blog_migrate/5141e5dcee2b12542e3e02fc5b136020.jpeg)
以及内存的信息,包含甄别shmmax 等配置是否存在瓶颈(具体请参见德哥的GITHUB)
![a0d029236a06000c14036b7b0779cbb2.png](https://i-blog.csdnimg.cn/blog_migrate/8cf46d0e19f54bc70e397212d07eadfd.jpeg)
同时也包含,一些日报,周报或者分析问题时需要的系统级别的信息,其实我倒是觉得这个放到写周报里面倒是蛮方便的。(不过是英文)
![a388540e937108487925fcb279440fa4.png](https://i-blog.csdnimg.cn/blog_migrate/9291f0c0b433cbfa55ad537b2c674a13.jpeg)
另外还有一些关于当前数据库的基本信息,例如到底数据库中有多少extension或者数据库的总体大小
![867a14c1453ff0928c1d2af3bb5ed335.png](https://i-blog.csdnimg.cn/blog_migrate/b52f711c8e7f811922ac2dcfd10570b3.jpeg)
下面是统计数据库的增长幅度,这也是周报中的常客,当然也能发现一些问题,例如表膨胀导致数据库SIZE 忽高忽低。
![bb1edcc92c332c065999d7e0de8dfd5c.png](https://i-blog.csdnimg.cn/blog_migrate/b2d9e45cab95bf8fa1dde4a959a528fb.jpeg)
根据表空间来进行分析
![455c647a11d7c61ad499dc566eb916a4.png](https://i-blog.csdnimg.cn/blog_migrate/c331ae20140be163e98799f13b16c115.jpeg)
当然死锁的次数也能进行统计和展示
![341393ab1ceb38626f6ae83c59bf9bb3.png](https://i-blog.csdnimg.cn/blog_migrate/3352cc9d40d6d3ffa2d125381af94c4d.jpeg)
cache hit 的情况
![2bb10061d87e046e234a01bbb1638a17.png](https://i-blog.csdnimg.cn/blog_migrate/3ea7fdae4c6e658396fe475fb51969db.jpeg)
关心临时表的SIZE 的情况也有项目可以体现
![d83efd476af15008b189086375effa9d.png](https://i-blog.csdnimg.cn/blog_migrate/f37b1bef040c9a78b726f524964b27f8.jpeg)
check point 有没有写等待的问题,也有迹可循
![205a6b523932ecd43438be341672805c.png](https://i-blog.csdnimg.cn/blog_migrate/f3dfbf8573ed882a23370064adc66638.jpeg)
对于一段时间的 DML 与 select 比率也可以进行统计和展示
![f11700bf90bf3fa9ea5eeba02c11804d.png](https://i-blog.csdnimg.cn/blog_migrate/cc7b07fd9ecf4e51df78e4e092be9217.jpeg)
我们关心的TPS
![c9b6c4e06d444e26ec7cf27b18f08913.png](https://i-blog.csdnimg.cn/blog_migrate/d295d438e243701fe0d46695a175b5ed.jpeg)
当然如果老板问,对每一个数据库的分项指标进行统计,PGCLUU 也是可以满足的,绝对是问到哪里都顺访顺水
![e8351e1654215a7002531ec7bf50fd63.png](https://i-blog.csdnimg.cn/blog_migrate/c7d02408a3d62e54c28f1253c3a745a3.jpeg)
再有一些统计信息,关于表, tuple , index 等等
![3cb9d623e6ae4d1a508418895361774d.png](https://i-blog.csdnimg.cn/blog_migrate/a144689c8ef65b14300ced94b4802339.jpeg)
说到这里,估计想试试的人会不少,那上面的那些东西是怎么生成的,才是重要的。
这里我们说说pgcluu 里面的东西
操作的过程主要是依靠两个命令来完成的,pgcluu_coollected + pgcluu 来完成的。估计从名字就可以看出,信息的输出分为两个步骤 1 信息的收集,2 信息的格式变化,及输出。
下面我们举例,我们想一个小时进行一次统计,PG的数据库的信息,并且间隔为10秒一次。
首先我们来进行数据的收集
1 我们可以给pgcluu 建立一个用户 readlonly
![a570f0f3fd6d6f2b49fbc09e4c993a54.png](https://i-blog.csdnimg.cn/blog_migrate/62bd0303a0a0c0a717a52022795addd5.jpeg)
ALTER DEFAULT PRIVILEGES IN SCHEMA public grant select on tables to readonly;
这样操作完毕后,会有报错,但目前使用下来,暂未影响使用,另外也有其它的方法可以解决,但想写一篇关于权限的,这里就不写了
![33959050ee4190614ad49821ce01924b.png](https://i-blog.csdnimg.cn/blog_migrate/3ff045e368901f060f731b5bcfd2109e.jpeg)
2 我们开始通过这个readonly用户使用
pgcluu_collectd -E 200 -i 30 /pgdata/pgcluu -h 192.168.198.80 -U readonly -W pgcluu -p5432 -d postgres
我们先收集信息到目录 /pgdata/pgcluu 中 上面的方法是针对众多POSTGRESQL 中收集信息使用的并不是本地收集,也就是说我们可以建立一个监控服务器,然后收集是所有的pG的信息 到一台机器,然后开始分析,做成全面自动化的方案,具体请依据个人的需求来。
3 在我们收集完这些信息后我们需要生成网页信息
pgcluu -o /pgdata/pgcluu/ /pgdata/pgcluu/
生成网页信息后,就可以进行阅读了,默认的文件是index.html, 建立一个网站就可以进行阅读了,当然也可以rsync 同步到 一个服务器,进行留存。
总结一下,PGCLUU 是一个目前比较好的适合进行定期数据库信息分析,或查找问题的方法,这个工具比较灵活适合二次开发,但缺点也是显而易见的,他不是实时的显示,所以解决问题的面是有限制的,同时也没有能显示慢查询的东西,所以我们还得继续找合适来弥补他缺失的监控。
待.. 2
![8c7132d64bf690349247b72f0d459024.png](https://i-blog.csdnimg.cn/blog_migrate/48b2556ef44a15f74201123013894ec8.jpeg)
![9cddd17bf166804d3e83e329e4958dbc.png](https://i-blog.csdnimg.cn/blog_migrate/1b37630572f0369f7509286b3a7b937c.jpeg)