人生可能如同塑料袋,轻薄,毫无意义,但装满东西,就可以变成任意的形态,可大可小,可软可硬,取决于他的,是里面的东西,而不是塑料袋。
事情的开始是由一个 叫 贾森的同学开始的,所以开始准备一些关于POSTGRESQL 监控相关的东西,目前一共 四期 (已经完成,通过各种监控软件,达到360 度的监控 postgresql, 以下是第一期)
Postgresql 的监控方法很多,数量越来越多的PG 的监控在通过手工的方法估计是不赶趟了,所以应允而生的就是各种的工具,当然有收费的也有免费的,所以不说说总结一下总是不妥。不知道会说几期,另外有一个明确的规则的就是收费的都不说。
至于监控,也不能直接上来就说,PG的监控也是可以从内到外,有层次的,我们可以看一下,下面的这个图。
所以监控来说我们需要评判一个监控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 环境后的情况。
pgcluu 有两种安装方式一种是yum的安装方式,一种是下载包然后解压后就可以使用,但你要自己设置一些变量环境,这里采用压缩包的方式,然后将压缩包的文件放到了 /usr/local/pgcluu 目录中然后在系统变量环境中指定这个环境,同时你要安装 yum install sysstat ,在做完这一切后,我们可以运行一下,至于怎么运行,后面说,我们不看过程,看疗效。
在运行了其中的一个命令后,我得到了这些
由于信息量比较大,这里挑挑拣拣的说说,其他的没有说到不见得没有用,大家可以自己看看,或许能有更多的收获。
在做完上面的事情,你在运行一个命令后,就可以得到下面的这张图
大致说一下这个软件的监控( 实际上我认为这不是一个监控这是一个融合了,整体的 postgresql cluster 的信息综合体,并且包含了一些大部分DBA 关注的信息)
其中有德哥在 GITHUB 中安装POSTGRESQL 提到的一些关于 LINUX核心参数的调整里面的东西,这里可以通过这个PGCLUU 来看看你调整了没有,当前的参数是什么。
以及内存的信息,包含甄别shmmax 等配置是否存在瓶颈(具体请参见德哥的GITHUB)
同时也包含,一些日报,周报或者分析问题时需要的系统级别的信息,其实我倒是觉得这个放到写周报里面倒是蛮方便的。(不过是英文)
另外还有一些关于当前数据库的基本信息,例如到底数据库中有多少extension或者数据库的总体大小
下面是统计数据库的增长幅度,这也是周报中的常客,当然也能发现一些问题,例如表膨胀导致数据库SIZE 忽高忽低。
根据表空间来进行分析
当然死锁的次数也能进行统计和展示
cache hit 的情况
关心临时表的SIZE 的情况也有项目可以体现
check point 有没有写等待的问题,也有迹可循
对于一段时间的 DML 与 select 比率也可以进行统计和展示
我们关心的TPS
当然如果老板问,对每一个数据库的分项指标进行统计,PGCLUU 也是可以满足的,绝对是问到哪里都顺访顺水
再有一些统计信息,关于表, tuple , index 等等
说到这里,估计想试试的人会不少,那上面的那些东西是怎么生成的,才是重要的。
这里我们说说pgcluu 里面的东西
操作的过程主要是依靠两个命令来完成的,pgcluu_coollected pgcluu 来完成的。估计从名字就可以看出,信息的输出分为两个步骤 1 信息的收集,2 信息的格式变化,及输出。
下面我们举例,我们想一个小时进行一次统计,PG的数据库的信息,并且间隔为10秒一次。
首先我们来进行数据的收集
1 我们可以给pgcluu 建立一个用户 readlonly
ALTER DEFAULT PRIVILEGES IN SCHEMA public grant select on tables to readonly;
这样操作完毕后,会有报错,但目前使用下来,暂未影响使用,另外也有其它的方法可以解决,但想写一篇关于权限的,这里就不写了
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