PostgreSQL的监控一(pgsnap & pgstatspack)
监控postgresql的方法很多,本文做个简单的比较。
大的方面,监控方法可以分为以下几种
1 直接利用PG提供的性能统计数据
PG的很多性能数据可以通过查询pg_stat_或pg_statio_开头的系统表获取。
比如:
- postgres=#\x
- Expanded display is on.
- postgres#select*from pg_stat_database where datname='postgres';
- -[RECORD1]+-
- datid|12896
- datname|postgres
- numbackends|1
- xact_commit|5692
- xact_rollback|3
- blks_read|155
- blks_hit|157853
- tup_returned|2566687
- tup_fetched|32370
- tup_inserted|0
- tup_updated|7
- tup_deleted|0
- conflicts|0
- temp_files|0
- temp_bytes|0
- deadlocks|0
- blk_read_time|0
- blk_write_time|0
- stats_reset|2014-09-23 01:23:12.123612+08
http://www.postgresql.org/docs/current/static/monitoring-stats.html
2 PG专用的监控工具
pgsnap,pgstatspack,pgwatch,pg_statsinfo等
。这些工具主要做PG的性能分析,状态查看的。不能做故障通知。
2.1pgsnap
http://pgsnap.projects.pgfoundry.org/
pgsnap是个Postgresql报告工具,不需要在数据库上安装任何东西,可以远程连接到数据库,然后通过PG已有的系统表查询统计数据并生成HTML报告。
使用例:
[root@zabbix ~
#tar xfz pgsnap
-0
.8
.0
.tar
.gz
#cd pgsnap.0
[root@zabbix pgsnap#./pgsnap.PHP-h localhost-p 5432-U postgres postgres
Connecting to postgres database.
Adding some HTML files.
Getting Misc @R_383_4045@ions.
Getting General @R_383_4045@ions.
sh:pg_config:commandnotfound
sh:pg_controldatanotfound
Getting Global @R_383_4045@ions.
pg_buffercache
Getting Database @R_383_4045@ions.
pg_buffercache
pgstattuple
pgstattuple on indexes
Getting Current Activities @R_383_4045@ions.
Getting Statistical @R_383_4045@ions.
Getting Tools @R_383_4045@ions.
pgPool
生成的结果,可参考下面的demo
http://pgsnap.projects.pgfoundry.org/pgbench_snap_20120930/
2.2 pgstatspack
http://pgfoundry.org/projects/pgstatspack/
前面介绍的pgsnap真的只是个某一时间点的snap采集工具,不能对一段时间内的变化做分析。
pgstatspack稍微进了一步,它把每次采集的snap信息存在
数据库里,然后可以对2个snap信息进行比较
生成文本的
性能报告。
下面是使用的例子:
1)安装pgstatspack
#tar xfz /root/pgstatspack_version_2
.3
.1
#cd pgstatspack
[root@zabbix pgstatspack#su postgres/install_pgstats.sh
Resultsfordatabase template1
Installing Statistics Packagefordatabase template1
Resultsfordatabase zabbix
Installing Statistics Packagefordatabase zabbix