PostgreSQL性能监控-pgWatch2

PostgreSQL性能监控-pgWatch2

pgwatch2由到组件构成:
- pgwatch2 metrics gathering daemon written in Go 使用go语言编写的性能搜集
- A PostgreSQL database for holding the configuration about which databases and metrics to gather 使用postgres存储性能收集的配置
- InfluxDB Time Series Database for storing metrics 使用influx
- db时序数据库存储指标
- Grafana for
dashboarding (point-and-click, a set of predefined dashboards is provided) 使用Grafana作为展示报表
- A Web UI for administering the monitored DBs and metrics
and for showing some custom metric overviews 使用webpy开发的后台管理和配置界面

1.根据github上的readme,通过docker启动项目 https://github.com/cybertec-postgresql/pgwatch2.git

#检查docker是否启动
docker service start
#搜索pgwatch2
docker search pgwatch2
NAME                DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
cybertec/pgwatch2   Flexible self-contained PostgreSQL metrics...   3
#下载pgwatch2代码
docker pull cybertec/pgwatch2
#注意:这里下载比较慢,一般需要重复尝试接近十遍才能下完
#在docker上打开一个容器运行pgwatch2
#-p IP:host_port:container_port,前者是host上的端口,后者是容器中暴露的端口
docker run -d -p 3000:3000 -p 5432:5432 -p 8083:8083 -p 8086:8086 -p 8080:8080 -p 8088:8088 --name pw2 cybertec/pgwatch2

2.打开127.0.0.1:8080/dbs对要监控的信息进行配置
PostgreSQL性能监控-pgWatch2_第1张图片
选择红圈中的exhaustive可以自定义CPU的默认监控区间,默认是一分钟一次,可以改成1s一次
PostgreSQL性能监控-pgWatch2_第2张图片
3.添加pg_stat_statement和plpythonu拓展,监控CPU,内存,IO和磁盘

#创建一个测试的角色
create role pgwatch2 with login password 'secret';
#添加pg_stat_statements 到 postgresql.conf 然后重启
#pg_stat_statements模块提供了一种跟踪执行的所有SQL语句的统计信息的方法。
#这个模块必须改写配置文件postgresql.conf中的shared_preload_libraries变量
找到postgresql.conf并在末尾追加
shared_preload_libraries = 'pg_stat_statements'
#切换postgres用户
[@97tools zhouguanglong]$ su postgres
bash-4.1$ psql -p 5432
#创建pg_stat_statements扩展, 可以查看sql的执行时的性能、
#创建plpython扩展,通过python操作数据库
postgres=# CREATE EXTENSION pg_stat_statements;
postgres=# CREATE EXTENSION plpythonu;
#注意,执行CREATE EXTENSION plpythonu;可能会出现如下错误
ERROR:  could not access file "$libdir/plpython2": No such file or directory
解决方法见下一步。

4.解决create extension plpythonu;出异常的思路

#在一个临时文件夹下重新安装编译postgres
wget  https://ftp.postgresql.org/pub/source/v9.6.2/postgresql-9.6.2.tar.bz2
tar -jxvf  postgresql-9.6.2.tar.bz2
cd  postgresql-9.6.2
./configure --prefix=/usr/local/pgsql9.6.2 --enable-cassert --with-python
make world -j 64
make install-world
#编译安装完,把以上SQL文件拷贝到老的$PGHOME/share/extension目录下. 将lib下的plpython2.so拷贝到$PGHOME/lib下
root@db-172-16-3-150-> cd postgresql-9.6.2/
root@db-172-16-3-150-> cd share/extension/
root@db-172-16-3-150-> ll|grep python
-rw-r--r-- 1 ocz  ocz   351 Jan  7 14:13 plpython2u--1.0.sql
-rw-r--r-- 1 ocz  ocz   196 Jan  7 14:13 plpython2u.control
-rw-r--r-- 1 ocz  ocz   402 Jan  7 14:13 plpython2u--unpackaged--1.0.sql
-rw-r--r-- 1 ocz  ocz   347 Jan  7 14:13 plpythonu--1.0.sql
-rw-r--r-- 1 ocz  ocz   194 Jan  7 14:13 plpythonu.control
-rw-r--r-- 1 ocz  ocz   393 Jan  7 14:13 plpythonu--unpackaged--1.0.sql

#创建成功
postgres=# create extension plpythonu;
CREATE EXTENSION
#这里可以参考http://blog.csdn.net/hewy0526/article/details/8576024
#创建plpython过程语言
#服务器上的PGSQL的端口是5432,增加-p 5432 是为了指定PGSQL的端口,以免系统按照默认的编译端口去寻找,默认编译端口可能不是5432
createlang -p 5432 plpythonu GEMPILE_DATA

psql -p 5432 -h 192.168.6.97 -U postgres -f /var/lib/pgsql/cpu_load_plpythonu.sql GEMPILE_DATA
#提示以下信息:
BEGIN
psql:/var/lib/pgsql/cpu_load_plpythonu.sql:11: NOTICE:  type "public.load_average" does not exist, skipping
DROP TYPE
CREATE TYPE
CREATE FUNCTION
GRANT
COMMENT
COMMIT

5.登录
http://127.0.0.1:3000/dashboard/db/db-overview相应的监控的ip进行查看各项监控信息
PostgreSQL性能监控-pgWatch2_第3张图片

PostgreSQL性能监控-pgWatch2_第4张图片
可以监控单独的queryid对应的查询状态:
PostgreSQL性能监控-pgWatch2_第5张图片

你可能感兴趣的:(PostgreSQL,postgresql,pgwatch2)