暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何设置 PMM 来监控PostgreSQL

原创 由迪 2021-10-23
1224

如何设置 PMM 来监控PostgreSQLPercona Distribution for PostgreSQL数据库实例。

概括

  • 创建 PMM 帐户并设置权限。

  • 选择、安装和配置扩展:

    • pg_stat_statements, 或者,

    • pg_stat_monitor.

  • 添加服务。

  • 检查服务。

在你开始之前

检查:

(PMM 遵循PostgreSQL 的生命周期终止政策。有关支持的平台和版本的具体详细信息,请参阅Percona 的软件平台生命周期页面。)

为 PMM 创建一个数据库帐户

我们建议创建一个可以postgres使用SUPERUSER角色连接到数据库的 PMM 数据库帐户。

  1. 创建用户。本示例使用pmm. (替换******为您选择的强密码。)

    CREATE USER pmm WITH SUPERUSER ENCRYPTED PASSWORD '******';

    如果您的数据库在 Amazon RDS 上运行:

    CREATE USER pmm WITH rds_superuser ENCRYPTED PASSWORD '******';
  2. PMM 必须能够以该用户身份在本地登录 PostgreSQL 实例。要启用此功能,请编辑pg_hba.conf文件。如果现有规则尚未启用,请添加:

    local   all             pmm                                md5
    # TYPE DATABASE       USER       ADDRESS               METHOD

    (忽略第二行。这是显示字段对齐的注释。)

  3. 重新加载配置:

    su - postgres
    psql -c "select pg_reload_conf()"
  4. 检查本地登录。

    psql postgres pmm -c "\conninfo"
  5. pmm出现提示时输入用户的密码。

选择和配置扩展

决定使用哪个数据库扩展,并为其配置数据库服务器。选择是:

  1. pg_stat_statements,由 PostgreSQL 创建的原始扩展,是postgresql-contribLinux 上可用包的一部分。

  2. pg_stat_monitor是 Percona 创建的一个新扩展。它基于并兼容pg_stat_statements. pg_stat_monitor具有 的所有功能pg_stat_statements,但增加了基于桶的数据聚合

我们建议只选择其中之一。如果您同时使用两者,您将获得重复的指标。

警告

虽然我们建议使用较新的pg_stat_monitor扩展,但请注意,它目前处于测试阶段且不受支持。

以下是每种方法的优点和缺点。

好处 缺点
pg_stat_statements1. 官方postgresql-contrib包的一部分。1. 没有聚合统计数据或直方图。 2. 没有查询示例。
pg_stat_monitor1. 以pg_stat_monitor功能为基础。 2. 基于桶的聚合。1. 测试版软件。

基于桶的数据聚合

pg_stat_monitor在称为存储桶的数据收集单元中收集统计信息并聚合数据。这些连接在一起形成一个桶链

您可以指定:

  • 桶的数量(链的长度);

  • 所有存储桶有多少可用空间;

  • 每个桶的数据收集的时间限制(桶到期)。

当一个桶的过期时间到达时,累积的统计数据被重置,数据存储在链中下一个可用的桶中。

当链中的所有桶都被使用后,第一个桶被重用并覆盖其内容。

如果桶在其到期时间之前被填满,则数据将被丢弃。

pg_stat_statements

安装

  • Debian/Ubuntu

    根权限

    apt install -y postgresql-contrib
  • 红帽/CentOS

    根权限

    yum install -y postgresql-contrib

配置

  1. 将这些行添加到您的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
  2. 重新启动数据库服务器。

  3. 安装扩展。

    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 发行版。

安装

配置

  1. 设置或更改 的值shared_preload_library

    在您的postgresql.conf文件中:

    shared_preload_libraries = 'pg_stat_monitor'
  2. 设置配置值。

    在您的postgresql.conf文件中:

    pg_stat_monitor.pgsm_query_max_len = 2048


    警告

    将查询的最大长度设置为 2048 个字符或更多是很重要的,这样 PMM 才能正常工作。

    您可以使用 获取其他可用设置的列表SELECT * FROM pg_stat_monitor_settings;

    有关可用参数的详细信息,请参阅pg_stat_monitorGitHub 存储库

  3. 启动或重启您的 PostgreSQL 实例。

  4. 在一个psql会话中:

    CREATE EXTENSION pg_stat_monitor;
  5. 检查版本。

    SELECT pg_stat_monitor_version();

添加服务

配置数据库服务器后,您可以使用用户界面或命令行添加 PostgreSQL 服务。

使用用户界面

  1. 选择 配置PMM 库存添加实例

  2. 选择PostgreSQL – 添加远程实例

  3. 输入或选择字段的值。

  4. 单击添加服务


img


如果您的 PostgreSQL 实例配置为使用 TLS,请单击将TLS 用于数据库连接复选框并填写您的 TLS 证书和密钥。


img


笔记

要使 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 用户界面

  1. 选择 配置PMM 库存库存清单

  2. 在“服务”选项卡中查找匹配的服务类型(PostgreSQL)、服务名称地址以及在表单中输入的任何其他详细信息。

  3. 查看“代理”选项卡以检查正在使用的所需数据源。

检查服务 - 命令行

在此命令的输出中查找您的服务。

pmm-admin inventory list services

如果使用 Docker,请使用 docker exec pmm-client pmm-admin inventory list services

检查数据

  1. 打开PostgreSQL 实例摘要仪表板。

  2. 服务名称设置为新添加的服务。

也可以看看

  • 页面更新 2021-10-11

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论