跳转至

PostgreSQL

PostgreSQL 是自由的对象-关系型数据库服务器(数据库管理系统),在灵活的 BSD-风格许可证下发行。它在其他开放源代码数据库系统(比如 MySQL 和 Firebird),和专有系统比如 Oracle、Sybase、IBM 的DB2 和 Microsoft SQL Server 之外,为用户又提供了一种选择。

Cloud Insight 通过授权收集 PostgreSQL 操作数据,可视化 PostgreSQL 性能。


性能指标

Cloud Insight 采集 PostgreSQL 以下性能指标:

指标 单位 具体含义
postgresql.bgwriter.buffers_alloc 被分配的缓冲区数量
postgresql.bgwriter.buffers_backend buffers 被一个后端直接写的缓冲区数量
postgresql.bgwriter.buffers_backend_fsync 一个后端不得不自己执行 fsync 调用的次数(通常即使后端自己进行写操作,后台写进程也会处理这些)
postgresql.bgwriter.buffers_checkpoint 在检查点期间被写的缓冲区数目
postgresql.bgwriter.buffers_clean 被后台写进程写的缓冲区数目
postgresql.bgwriter.checkpoints_requested 已经被执行的请求检查点的数量
postgresql.bgwriter.checkpoints_timed 已经被执行的计划中检查点的数量
postgresql.bgwriter.maxwritten_clean 后台写进程由于已经写了太多缓冲区而停止清洁扫描的次数
postgresql.bgwriter.sync_time milliseconds 在文件被同步到磁盘中的检查点处理部分花费的总时间
postgresql.bgwriter.write_time milliseconds 在文件被写入磁盘的检查点处理部分花费的总时间
postgresql.buffer_hit hits/second 磁盘块被发现已经在缓冲区中的次数,这样不需要一次读取
postgresql.commits transactions/second 在这个数据库中提交的事务数
postgresql.connections connections 这个数据库的活跃连接数
postgresql.database_size bytes 这个数据库使用的磁盘空间
postgresql.dead_rows rows 估计的死行数
postgresql.deadlocks 在这个数据库中被检测到的死锁数
postgresql.disk_read blocks/second 从这个数据库中读取的磁盘块数
postgresql.heap_blocks_hit hits/second 在这个表中的缓冲区命中数量
postgresql.heap_blocks_read blocks/second 从这个表读取的磁盘块数量
postgresql.index_blocks_hit hits/second 在这个表上的所有索引中的缓冲区命中数量
postgresql.index_blocks_read blocks/second 从这个表上所有索引中读取的磁盘块数
postgresql.index_rows_fetched rows/second 被使用这个索引的简单索引扫描取得的活行数
postgresql.index_rows_read rows/second 在这个索引上由扫描返回的索引项数量
postgresql.index_scans 在这个索引上发起的索引扫描次数
postgresql.index_size bytes 附加到指定表的索引使用的总磁盘空间
postgresql.live_rows rows 估计的活行数
postgresql.locks locks 在这个数据库中的活锁数
postgresql.max_connections connections 允许这个数据库的客户端连接的最大数量
postgresql.percent_usage_connections fractions 这个数据库的连接数,是允许的最大连接数的一部分
postgresql.rollbacks transactions/second 在这个数据库中已经被回滚的事务的数量
postgresql.rows_deleted rows/second 在这个数据库中被查询删除的行数
postgresql.rows_fetched rows/second 在这个数据库中被查询取出的行数
postgresql.rows_hot_updated rows/second 被更新的 HOT 行数(即不要求独立索引更新的行更新)
postgresql.rows_inserted rows/second 在这个数据库中被查询插入的行数
postgresql.rows_returned rows/second 在这个数据库中被查询返回的行数
postgresql.rows_updated rows/second 在这个数据库中被查询更新的行数
postgresql.seq_rows_read rows/second 通过顺序扫描获取的活行数
postgresql.seq_scans 在这个表上发起的顺序扫描的次数
postgresql.table.count tables 此数据库中的用户表数
postgresql.table_size bytes 指定表使用的总磁盘空间。包括 TOAST,Free Space Map 和 Visibility Map,不包括索引
postgresql.temp_bytes bytes/second 在这个数据库中被查询写到临时文件中的数据总量
postgresql.temp_files files/second 在这个数据库中被查询创建的临时文件的数量
postgresql.toast_blocks_hit hits/second 在这个表的 TOAST 表(如果有)中的缓冲区命中数量
postgresql.toast_blocks_read blocks/second 从这个表的 TOAST 表(如果有)读取的磁盘块数
postgresql.toast_index_blocks_hit blocks/second 在这个表的 TOAST 表索引(如果有)中的缓冲区命中数量
postgresql.toast_index_blocks_read blocks/second 从这个表的 TOAST 表索引(如果有)中读取的磁盘块数
postgresql.total_size bytes 表所使用的总磁盘空间,包括索引和 TOAST 数据

配置 PostgreSQL 监控

创建 Cloud Insight 访问权限

为您的 PostgreSQL 服务器建立 Cloud Insight 只读权限。

在 PostgreSQL 中启动 psql,并执行以下指令。

create user cloudinsight with password 'YourPassword';
  grant SELECT ON pg_stat_database to cloudinsight;

您可以通过以下指令,查看用户是否创建成功,权限是否正确。

psql -h localhost -U cloudinsight postgres -c "select * from pg_stat_database LIMIT(1);" \
&& echo -e "Postgres connection - OK" || \ ||
echo -e "Cannot connect to Postgres"

当出现密码输入提示时,请输入密码:

YourPassword

当遇到怎么都无法通过密码验证的时候,可能你需要查看PostgreSQL的pg_hba.conf验证配置文件,确认password是允许验证的,通常在pgsql/11/data/pg_hba.conf下。

编辑配置文件

编辑配置文件 conf.d/postgresql.yaml,使 Cloud Insight Agent 可以与 PostgreSQL 通信。

init_config:

instances:
  - host: localhost
    port: 5432
    username: cloudinsight
    password: YourPassword
    tags:
      - tag_key1:tag_value1
      - tag_key2:tag_value2
 ```

###重启 Agent

重启 Cloud Insight Agent,使配置生效。

您也可以通过查看 Agent Info 信息,来验证配置是否成功。当出现以下信息,则代表安装成功'。

Checks

[...]

postgres

  • instance #0 [OK]
  • Collected 8 metrics & 0 events ```

有关 Agent Info 信息的查看,请访问帮助中心,查看 Cloud Insight Agent 常用操作


5分钟,开启你的跨云监控之旅 (`⌄´ )


常见问题