FAIRYFAR-INTERNAL
 
  FAIRYFAR-INTERNAL  |  SITEMAP  |  ABOUT-ME  |  HOME  
PostgreSQL监控工具之pgwatch2

转自:https://www.modb.pro/db/377615

pgwatch2是一款灵活的自包含PostgreSQL指标监控/仪表板的数据库监控软件。目前支持监控PG 9.0到13版本。

下面简单介绍Grafana+pgwatch2架构的PG数据库监控的安装方法。

软件版本信息及下载地址

操作系统版本:Centos7.6
监控数据库版本:PG13.4
https://www.postgresql.org/ftp/source/
pgwatch2版本:1.8.5
https://github.com/cybertec-postgresql/pgwatch2/releases
Grafana版本:8.4.3
https://grafana.com/grafana/download?pg=get&plcmt=selfmanaged-box1-cta1

安装数据库

安装场景中需要如下用途数据库:

  • 存储pgwatch2监控数据的数据库。可以是postgreSQL,InfluxDB等等。这里使用postgreSQL数据库。
  • 被监控的postgreSQL数据库。为了测试方便,这里将被监控的PG数据库和存储pgwatch2监控数据的数据库创建在相同数据库集簇下。
  • 存储grafana配置信息的数据库。可以是postgreSQL,InfluxDB等等。这里使用默认的sqlite3。

安装单机版PG13.4

安装单机版PG数据库(过程略)。

安装配置pgwatch2

RPM方式安装pgwatch2

安装pgwatch2方式有很多种,这里采用RPM方式安装:

# wget https://github.com/cybertec-postgresql/pgwatch2/releases/download/v1.8.5/pgwatch2_v1.8.5-SNAPSHOT-b39dfdf_linux_64-bit.rpm
# rpm -ivh pgwatch2_v1.8.5-SNAPSHOT-b39dfdf_linux_64-bit.rpm

配置pgwatch2数据存储数据库

这里我们使用PG数据库存储pgwatch2的监控数据。(也可以使用InfluxDB等)

由于是在虚机环境安装,为了方便测试,将监控数据存储数据库与需要监控的数据库创建在了同一个数据库集簇下。

创建config DB

$ psql -c "create user pgwatch2 password 'XXXXXX'"
$ psql -c "create database pgwatch2 owner pgwatch2"
$ psql -f /etc/pgwatch2/sql/config_store/config_store.sql pgwatch2
$ psql -f /etc/pgwatch2/sql/config_store/metric_definitions.sql pgwatch2

创建metrics storage DB

$ psql -c "create database pgwatch2_metrics owner pgwatch2"
$ cd /etc/pgwatch2/sql/metric_store
$ psql -f roll_out_metric_time.psql pgwatch2_metrics

修改数据库白名单,允许pgwatch2工具访问数据库:

$ vi pg_hba.conf
host    all             all             0.0.0.0/0            md5
$ pg_ctl reload -D $PGDATA

安装python3

# yum install python3 python3-pip
# su - postgres
# wget https://bootstrap.pypa.io/pip/3.6/get-pip.py
# python3 get-pip.py

启动WebUI测试

这里使用pg数据库安装用户启动pgwatch2:

$ python3 web.py --datastore=postgres --pg-metric-store-conn-str="dbname=pgwatch2_metrics user=pgwatch2"

看到下面的日志,就代表WebUI启动成功:

image.png

配置pgwatch2开机自启动

# cd /usr/lib/systemd/system/
# cp  /etc/pgwatch2/webpy/startup-scripts/pgwatch2-webui.service ./

按照实际配置,修改pgwatch2-webui.service文件中,红框中内容:

image.png

# systemctl daemon-reload
# systemctl enable pgwatch2-webui
# systemctl start pgwatch2-webui

配置监控数据库

数据库中创建监控用户:

##创建监控数据库使用的用户m_pgwatch2,监控数据库为db1:
CREATE ROLE m_pgwatch2 WITH LOGIN PASSWORD 'secret@341';
ALTER ROLE m_pgwatch2 CONNECTION LIMIT 3;
GRANT pg_monitor TO m_pgwatch2;   
GRANT CONNECT ON DATABASE db1 TO m_pgwatch2;
GRANT USAGE ON SCHEMA public TO m_pgwatch2; 
GRANT EXECUTE ON FUNCTION pg_stat_file(text) to m_pgwatch2; 

数据库安装pgstatstatements扩展:

修改数据库参数:(postgres.conf文件)
shared_preload_libraries = 'pg_stat_statements'
重启数据库后,为监控数据库创建pg_stat_statements扩展:
CREATE EXTENSION pg_stat_statements;

登录WebUI,向pgwatch中添加监控数据库信息:

WebUI地址:http://<安装pgwatch2主机IP>:WebUI端口号

默认端口号8080,可在启动webUI是设置,见webUI的开机自启动脚本

在WebUI中点击DBs,然后在下面的红框里新增监控数据库信息

image.png

填写完成后点击New:

image.png

添加db1数据库后的例子:

image.png

启动 pgwatch2 指标收集agent

测试agent是否能正常启动

$ pgwatch2-daemon   --host=localhost --user=pgwatch2 --dbname=pgwatch2   --datastore=postgres --pg-metric-store-conn-str=postgresql://pgwatch2@localhost:5432/pgwatch2_metrics   --verbose=info

设置agent进程开机自启动

[root@mogdb1 ~]# cd /usr/lib/systemd/system/
# vi pgwatch2-daemon.service

按实际情况设置红框中的内容:

image.png

# systemctl daemon-reload
# systemctl enable pgwatch2-daemon
# systemctl start pgwatch2-daemon

安装配置grafana

rpm方式安装grafana

配置yum源:

# cat /etc/yum.repos.d/grafana.repo
[grafana]
name=grafana
baseurl=https://packages.grafana.com/enterprise/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
# yum clean all
# yum makecache

安装grafana

安装过程会在操作系统自动创建用户grafana

yum install grafana-enterprise

可以通过修改/etc/grafana/grafana.ini文件来修改grfana端口号等配置,本次安装使用默认值。

设置grafana开机自启动

# systemctl daemon-reload
# systemctl enable grafana-server
# systemctl start grafana-server
# systemctl status grafana-server

安装grafana的插件(可选)

目前,一个预配置的仪表板(最大关系树图)使用这个额外的插件 - 如果计划使用该仪表板,则安装下面插件:

# grafana-cli plugins install savantly-heatmap-panel

grafana添加数据库源

grafana页面访问地址:http://<安装grafana的服务器IP>:grafana端口号

默认端口号:3000

页面登录的默认用户名和密码:admin/admin

登录后选择下面的data source

image.png

选择Add data source

image.png

点击PostgreSQL

image.png

填写如下信息后点击保存:

image.png

grafana导入json文件

jason文件获取地址:https://github.com/cybertec-postgresql/pgwatch2/tree/master/grafana_dashboards/postgres/v8

image.png

这个链接下有多个文件夹,每个文件夹中,都有一个对应的json文件,可以根据想监控的内容复制文件内容,然后粘贴到grafana中进行导入操作。这里选择db-overview文件夹。

image.png

复制json文件内容:

image.png

导入文件内容到grafana

image.png

黏贴json文件内容到Import via panel json框中,点击load

image.png

继续点击import

image.png

这里还可以继续按需导入其他json文件。

查看pgwatch2监控结果

在Search dashboards中可以找到刚才导入的仪表盘

image.png

点击DB overview仪表盘

image.png

就可以看到对应数据库的监控结果了

image.png



打赏作者以资鼓励: