如何设置 PMM 来监控PostgreSQL或Percona Distribution for PostgreSQL数据库实例。
概括
创建 PMM 帐户并设置权限。
选择、安装和配置扩展:
pg_stat_statements, 或者,pg_stat_monitor.
添加服务。
检查服务。
在你开始之前
检查:
PMM 服务器安装并运行,具有可从客户端节点访问的已知 IP 地址。
您在客户端主机上拥有超级用户 (root) 访问权限。
您拥有对要监视的任何数据库服务器的超级用户访问权限。
(PMM 遵循PostgreSQL 的生命周期终止政策。有关支持的平台和版本的具体详细信息,请参阅Percona 的软件平台生命周期页面。)
为 PMM 创建一个数据库帐户
我们建议创建一个可以postgres使用SUPERUSER角色连接到数据库的 PMM 数据库帐户。
创建用户。本示例使用
pmm. (替换******为您选择的强密码。)CREATE USER pmm WITH SUPERUSER ENCRYPTED PASSWORD '******';
如果您的数据库在 Amazon RDS 上运行:
CREATE USER pmm WITH rds_superuser ENCRYPTED PASSWORD '******';
PMM 必须能够以该用户身份在本地登录 PostgreSQL 实例。要启用此功能,请编辑
pg_hba.conf文件。如果现有规则尚未启用,请添加:local all pmm md5
# TYPE DATABASE USER ADDRESS METHOD(忽略第二行。这是显示字段对齐的注释。)
重新加载配置:
su - postgres
psql -c "select pg_reload_conf()"检查本地登录。
psql postgres pmm -c "\conninfo"
pmm出现提示时输入用户的密码。
选择和配置扩展
决定使用哪个数据库扩展,并为其配置数据库服务器。选择是:
pg_stat_statements,由 PostgreSQL 创建的原始扩展,是postgresql-contribLinux 上可用包的一部分。pg_stat_monitor是 Percona 创建的一个新扩展。它基于并兼容pg_stat_statements.pg_stat_monitor具有 的所有功能pg_stat_statements,但增加了基于桶的数据聚合。
我们建议只选择其中之一。如果您同时使用两者,您将获得重复的指标。
警告
虽然我们建议使用较新的pg_stat_monitor扩展,但请注意,它目前处于测试阶段且不受支持。
以下是每种方法的优点和缺点。
| 好处 | 缺点 | |
|---|---|---|
pg_stat_statements | 1. 官方postgresql-contrib包的一部分。 | 1. 没有聚合统计数据或直方图。 2. 没有查询示例。 |
pg_stat_monitor | 1. 以pg_stat_monitor功能为基础。 2. 基于桶的聚合。 | 1. 测试版软件。 |
基于桶的数据聚合
pg_stat_monitor在称为存储桶的数据收集单元中收集统计信息并聚合数据。这些连接在一起形成一个桶链。
您可以指定:
桶的数量(链的长度);
所有存储桶有多少可用空间;
每个桶的数据收集的时间限制(桶到期)。
当一个桶的过期时间到达时,累积的统计数据被重置,数据存储在链中下一个可用的桶中。
当链中的所有桶都被使用后,第一个桶被重用并覆盖其内容。
如果桶在其到期时间之前被填满,则数据将被丢弃。
pg_stat_statements
安装
Debian/Ubuntu
根权限
apt install -y postgresql-contrib
红帽/CentOS
根权限
yum install -y postgresql-contrib
配置
将这些行添加到您的
postgresql.conf文件中:shared_preload_libraries = 'pg_stat_statements'
track_activity_query_size = 2048 # Increase tracked query string size
pg_stat_statements.track = all # Track all statements including nested
track_io_timing = on # Capture read/write stats重新启动数据库服务器。
安装扩展。
psql postgres postgres -c "CREATE EXTENSION pg_stat_statements SCHEMA public"
您现在可以添加服务。
pg_stat_monitor
警告
pg_stat_monitor 目前处于测试阶段,不受支持。
pg_stat_monitor 已经过测试:
PostgreSQL 版本 11、12、13。
PostgreSQL 版本 11、12、13 的 Percona 发行版。
安装
如果您使用Percona Distribution for PostgreSQL,则可以使用 Linux 包管理器安装扩展。请参阅为 PostgreSQL 安装 Percona 发行版。
如果您使用PostgreSQL,您可以通过下载和编译源代码来安装。请参阅安装
pg_stat_monitor。
配置
设置或更改 的值
shared_preload_library。在您的
postgresql.conf文件中:shared_preload_libraries = 'pg_stat_monitor'
设置配置值。
在您的
postgresql.conf文件中:pg_stat_monitor.pgsm_query_max_len = 2048
警告
将查询的最大长度设置为 2048 个字符或更多是很重要的,这样 PMM 才能正常工作。
您可以使用 获取其他可用设置的列表
SELECT * FROM pg_stat_monitor_settings;。有关可用参数的详细信息,请参阅
pg_stat_monitorGitHub 存储库。启动或重启您的 PostgreSQL 实例。
在一个
psql会话中:CREATE EXTENSION pg_stat_monitor;
检查版本。
SELECT pg_stat_monitor_version();
添加服务
配置数据库服务器后,您可以使用用户界面或命令行添加 PostgreSQL 服务。
使用用户界面
选择 配置→ PMM 库存→添加实例。
选择PostgreSQL – 添加远程实例。
输入或选择字段的值。
单击添加服务。
如果您的 PostgreSQL 实例配置为使用 TLS,请单击将TLS 用于数据库连接复选框并填写您的 TLS 证书和密钥。
笔记
要使 TLS 连接正常工作,需要在您的 PostgreSQL 实例中配置 SSL。确保在服务器配置文件中启用了 SSL postgresql.conf,并且在客户端身份验证配置文件中允许主机连接pg_hba.conf。(请参阅有关使用 SSL进行安全 TCP/IP 连接的PostgreSQL 文档。)
在命令行上
使用以下示例命令之一将数据库服务器添加为服务。如果成功,PMM 客户端将打印PostgreSQL Service added服务的 ID 和名称。使用--environment和-custom-labels选项为服务设置标签以帮助识别它们。
例子
添加具有默认节点 ( <node>-postgresql) 和服务名称的实例。
pmm-admin add postgresql \
--username=pmm \
--password=password \
--server-url=https://admin:admin@X.X.X.X:443 \
--server-insecure-tls
<user name>: PostgreSQL PMM 用户<password>:PostgreSQL 用户凭据。
服务名称和服务 ID 将被自动选择。
添加具有指定节点和服务名称的实例。
pmm-admin add postgresql \
--username=pmm \
--password=password \
--server-url=https://admin:admin@X.X.X.X:443 \
--server-insecure-tls \
添加实例以连接 UNIX 套接字。
pmm-admin add postgresql --socket=/var/run/postgresql
通过 SSL/TLS 连接
pmm-admin add postgresql --tls \
--tls-cert-file=PATHTOCERT \
--tls-ca-file=PATHTOCACERT \
--tls-key-file=PATHTOKEY \
--host=HOST \
--port=PORT \
--username=USER \
--service-name=SERVICE
在哪里:
PATHTOCERT: 客户端证书文件的路径。PATHTOCACERT: 证书颁发机构文件的路径。PATHTOKEY: 客户端密钥文件的路径。HOST: 实例主机名或 IP。PORT: PostgreSQL 服务端口号。USER: 允许通过 TLS 连接的数据库用户。应与客户端证书中使用的通用名称 (CN) 匹配。SERVICE: 在 PMM 中为服务提供的名称。
检查服务
检查服务 - PMM 用户界面
选择 配置→ PMM 库存→库存清单。
在“服务”选项卡中查找匹配的服务类型(PostgreSQL)、服务名称、地址以及在表单中输入的任何其他详细信息。
查看“代理”选项卡以检查正在使用的所需数据源。
检查服务 - 命令行
在此命令的输出中查找您的服务。
pmm-admin inventory list services
如果使用 Docker,请使用 docker exec pmm-client pmm-admin inventory list services
检查数据
打开PostgreSQL 实例摘要仪表板。
将服务名称设置为新添加的服务。
也可以看看
页面更新 2021-10-11






