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 常用操作。
常见问题
- 若要在同一个服务器上监控多个相同的平台服务,参考如何监控多个平台服务。
- 有任何关于产品的使用疑惑,参考常见问题。