3.2 PoWA 插件使用
3.2.3 PoWA 工作模式
PoWA的工作模式分为本地模式和远程模式,出于云上环境的安全性考虑,RDS for PostgreSQL不支持PoWA的本地模式,仅支持远程模式部署。
由于云上架构安全性考虑,RDS for PostgreSQL暂不支持本地模式的部署。
图3-10 本地模式架构图
远程模式
使用第4版PoWA,可以将一台或多台服务器的数据存储在外部 PostgreSQL 数据库 上,当前RDS for PostgreSQL支持的PoWA版本为4.1.2。
相对于本地模式来说,远程模式主要变化在于设置了一个专门用于存储性能指标数据 的数据库(Powa repository),通过PoWA-collector来完成这项工作。
RDS for PostgreSQL支持远程模式的部署。
远程模式架构如下图所示:
图3-11 远程模式架构图
3.2.3.1 远程模式部署
华为云上进行远程模式部署,需要一台ECS,并在ECS上安装PostgreSQL数据库以及 PoWA-archivist、PoWA-collector、PoWA-web。
安装PostgreSQL数据库不在此处赘述,本章节主要讲解PoWA-archivist、PoWA-collector、PoWA-web的安装过程。
架构如下图所示:
图3-12 远程模式架构图
准备 ECS
通过华为云购买ECS并配置弹性公网IP,本次演示所购买的ECS系统镜像为:CentOS 8.2 64bit,并提前安装好PostgreSQL12.6。
Python3 的安装部署
安装PoWA-collecotor、PoWA-web依赖Pytho3n环境,且使用pip3安装可以减少很多 依赖环境安装的工作量。当前ECS以默认安装了 Python 3.6.8版本,由于版本偏低,安 装最新版本的PoWA失败,建议安装最新的python版本,详情请参见安装Python 3.9.9。
安装 PoWA-archivis
1. 安装PostgreSQL12.6以后,通过wget命令获取PoWA-archivist源码:
wget https://github.com/powa-team/powa-archivist/archive/refs/tags/
REL_4_1_2.tar.gz
2. 将下载好的REL_4_1_2.tar.gz进行解压。
3. 进入解压后的目录,执行命令完成安装。
make && make install
安装 PoWA-collector、PoWA-web
1. 切换到PostgreSQL数据库安装用户下,本次演示使用的是postgres。
su - postgres
/home/postgres/.local/bin
├── powa-collector.py
├── powa-web
└── __pycache__
常见问题
Q:在执行pip install psycopg2时可能会遇到报错python setup.py build_ext --pg-config /path/to/pg_--pg-config build。
A:配置 PostgreSQL的bin、lib路径到环境变量中,重新执行 pip install psycopg2 即 可完成安装。
3.2.3.2 配置远程模式
性能指标采集目标实例配置
步骤1 使用root用户登录目标实例的powa数据库。(若不存在,请先自行创建powa数据 库)
步骤2 在powa数据库中创建插件powa。
select control_extension('create', 'pg_stat_statements');
select control_extension('create', 'btree_gist');
select control_extension('create', 'powa');
----结束
本地 PostgreSQL 配置
本次演示ECS自建PostgreSQL(powa-repository)信息:
● 版本: PostgreSQL 12.6
● superuser: postgres
● data路径:/home/postgres/data
步骤1 修改配置文件 /home/postgres/data/postgresql.conf,添加 pg_stat_statements 至参 数 shared_preload_libraries,如下图所示:
步骤2 执行命令重启数据库。
pg_ctl restart -D /home/postgres/data/
步骤3 使用超级用户登录数据库,并创建database: powa,以及安装相关插件。
You are now connected to database "powa" as user "postgres".
powa=# create extension pg_stat_statements ; CREATE EXTENSION
powa=# create extension btree_gist ; CREATE EXTENSION
powa=# create extension powa;
CREATE EXTENSION
步骤4 配置需要采集性能指标的实例信息。
1. 执行SQL,添加目标实例信息。
powa=# select powa_register_server(
hostname => 'xxx.xxx.xxx.xxx', alias => 'myInstance', port => xxxx, username => 'xxxx', password => '**********', frequency => 300);
powa_register_server t
(1 row)
2. 通过查看 powa_servers 表来获取当前采集指标信息实例的信息
powa=# select * from powa_servers;
id | hostname | alias | port | username | password | dbname | frequency | powa_coalesce | retention | allow_ui_connection |version
PoWA-collector 配置
PoWA-collector启动时,将按以下顺序搜索配置文件作为其配置:
1. /etc/powa-collector.conf 2. ~/.config/powa-collector.conf 3. ~/.powa-collector.conf
4. ./powa-collector.conf 配置文件中需要包含以下选项:
"dsn": "postgresql://postgres@localhost:5432/powa"
},
"debug": true }
PoWA-collector 的配置中并没有密码的配置,所以powa-repository数据库的 pg_hba.conf中需要配置对应的连接策略为trust免密连接。
启动 powa-collector
cd /home/postgres/.local/bin ./powa-collector.py &
PoWA-web 配置
PoWA-collector启动时,将按以下顺序搜索配置文件作为其配置:
1. /etc/powa-web.conf 2. ~/.config/powa-web.conf 3. ~/.powa-web.conf
4. ./powa-web.conf
本次实例中需要将配置内容写入文件./powa-web.conf中。
# cd /home/postgres/.local/bin
# vim ./powa-web.conf
# 写入配置内容,并保存
}cookie_secret="SECRET_STRING"
本次演示,powa-repository数据库pg_hab.conf中配置为trust,免密连接,因此未配 置password。
启动 powa-web
cd /home/postgres/.local/bin ./powa-web &