Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

人生可能如同塑料袋,轻薄,毫无意义,但装满东西,就可以变成任意的形态,可大可小,可软可硬,取决于他的,是里面的东西,而不是塑料袋。

事情的开始是由一个 叫 贾森的同学开始的,所以开始准备一些关于POSTGRESQL 监控相关的东西,目前一共 四期 (已经完成,通过各种监控软件,达到360 度的监控 postgresql, 以下是第一期)

Postgresql 的监控方法很多,数量越来越多的PG 的监控在通过手工的方法估计是不赶趟了,所以应允而生的就是各种的工具,当然有收费的也有免费的,所以不说说总结一下总是不妥。不知道会说几期,另外有一个明确的规则的就是收费的都不说。

至于监控,也不能直接上来就说,PG的监控也是可以从内到外,有层次的,我们可以看一下,下面的这个图。

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

所以监控来说我们需要评判一个监控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 环境后的情况。

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

pgcluu 有两种安装方式一种是yum的安装方式,一种是下载包然后解压后就可以使用,但你要自己设置一些变量环境,这里采用压缩包的方式,然后将压缩包的文件放到了 /usr/local/pgcluu 目录中然后在系统变量环境中指定这个环境,同时你要安装 yum install sysstat    ,在做完这一切后,我们可以运行一下,至于怎么运行,后面说,我们不看过程,看疗效。

在运行了其中的一个命令后,我得到了这些

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

由于信息量比较大,这里挑挑拣拣的说说,其他的没有说到不见得没有用,大家可以自己看看,或许能有更多的收获。

在做完上面的事情,你在运行一个命令后,就可以得到下面的这张图

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

大致说一下这个软件的监控( 实际上我认为这不是一个监控这是一个融合了,整体的  postgresql cluster 的信息综合体,并且包含了一些大部分DBA 关注的信息)

其中有德哥在 GITHUB 中安装POSTGRESQL 提到的一些关于 LINUX核心参数的调整里面的东西,这里可以通过这个PGCLUU 来看看你调整了没有,当前的参数是什么。

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

以及内存的信息,包含甄别shmmax 等配置是否存在瓶颈(具体请参见德哥的GITHUB)

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

同时也包含,一些日报,周报或者分析问题时需要的系统级别的信息,其实我倒是觉得这个放到写周报里面倒是蛮方便的。(不过是英文)

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

另外还有一些关于当前数据库的基本信息,例如到底数据库中有多少extension或者数据库的总体大小

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

下面是统计数据库的增长幅度,这也是周报中的常客,当然也能发现一些问题,例如表膨胀导致数据库SIZE 忽高忽低。

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

根据表空间来进行分析

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

当然死锁的次数也能进行统计和展示

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

cache hit 的情况

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

关心临时表的SIZE 的情况也有项目可以体现

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

check point 有没有写等待的问题,也有迹可循

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

对于一段时间的 DML  与 select 比率也可以进行统计和展示

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

我们关心的TPS

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

当然如果老板问,对每一个数据库的分项指标进行统计,PGCLUU 也是可以满足的,绝对是问到哪里都顺访顺水

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

再有一些统计信息,关于表, tuple , index 等等

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

说到这里,估计想试试的人会不少,那上面的那些东西是怎么生成的,才是重要的。

这里我们说说pgcluu 里面的东西

操作的过程主要是依靠两个命令来完成的,pgcluu_coollected + pgcluu 来完成的。估计从名字就可以看出,信息的输出分为两个步骤   1 信息的收集,2 信息的格式变化,及输出。

下面我们举例,我们想一个小时进行一次统计,PG的数据库的信息,并且间隔为10秒一次。

首先我们来进行数据的收集

1 我们可以给pgcluu 建立一个用户 readlonly

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

ALTER DEFAULT PRIVILEGES IN SCHEMA public grant select on tables to readonly;

这样操作完毕后,会有报错,但目前使用下来,暂未影响使用,另外也有其它的方法可以解决,但想写一篇关于权限的,这里就不写了

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

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 

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)

Postgresql 监控你说了不算,谁说了算? (1 pgcluu)