RDS PostgreSQL provides OS-level and database-level performance metrics that you can view in the ApsaraDB RDS console.
Procedure
Go to the Instances page. In the top navigation bar, select the region in which the RDS instance resides. Then, find the RDS instance and click the ID of the instance.
-
In the navigation pane on the left, click Monitoring and Alarms.
-
Select the Enhanced Monitoring tab and click Metric Management. On the OS Metrics and Database Metrics tabs, select the metrics to display. Metric descriptions are in References.
Note-
The Enhanced Monitoring page displays up to 30 metrics.
-
You can apply the selected metrics to all RDS PostgreSQL instances in the current region:
-
If the current instance uses cloud disks, the configuration applies to all existing and new cloud disk-based RDS PostgreSQL instances in the region.
-
If the current instance uses high-performance local disks, the configuration applies to all existing and new local disk-based RDS PostgreSQL instances in the region.
-
-
-
Click Update Metrics. The Enhanced Monitoring page displays the selected metrics.
Enhanced Monitoring appends these suffixes to metric names:
-
metric_name.avg: Average value. -
metric_name.max: Maximum value. -
metric_name.min: Minimum value.
-
-
The Enhanced Monitoring page provides the following controls.

No.
Feature
Description
①
Time range
Query data by predefined or custom time ranges.
-
Predefined time ranges: 30 Minutes, 1 Hour, 2 Hours, 6 Hours, 1 Day, 7 Days, and 30 Days.
-
Custom time range: Start Time (YYYY-MM-DD hh:mm:ss) - End Time (YYYY-MM-DD hh:mm:ss)
②
Aggregation method
Aggregation method for metric results:
-
Average
-
Maximum
-
Minimum
③
Layout
Layout of the monitoring charts:
-
One Column
-
Two Columns
-
Three Columns
-
Four Columns
④
Time granularity
Time interval between data points on the chart x-axis.
Time granularity varies by time range:
-
If the time range is 1 hour or less, the time granularity is 5 seconds.
-
If the time range is greater than 1 hour and up to 2 hours, the time granularity is 10 seconds.
-
If the time range is greater than 2 hours and up to 6 hours, the time granularity is 30 seconds.
-
If the time range is greater than 6 hours and up to 12 hours, the time granularity is 1 minute.
-
If the time range is greater than 12 hours and up to 1 day, the time granularity is 2 minutes.
-
If the time range is greater than 1 day and up to 5 days, the time granularity is 10 minutes.
-
If the time range is greater than 5 days and up to 15 days, the time granularity is 30 minutes.
-
If the time range is greater than 15 days and up to 30 days, the time granularity is 1 hour.
⑤
Cursor sync
When enabled, hovering over a data point in one chart syncs the cursor in all other charts to the same time point.
⑥
Refresh
Manually refreshes all monitoring charts.
-
References
The following tables list all available OS and database metrics.
Operating system metrics
|
Metric category |
Metric name |
Description |
Unit |
High-performance local disk |
Cloud disk |
|
Network traffic |
os.network.rx |
Inbound network traffic |
MB/s |
❌ |
✔️ |
|
os.network.tx |
Outbound network traffic |
MB/s |
❌ |
✔️ |
|
|
CPU utilization |
os.cpu_usage.sys |
CPU time spent in kernel mode (system). |
% |
✔️ |
✔️ |
|
os.cpu_usage.user |
CPU time spent in user mode. |
% |
✔️ |
✔️ |
|
|
os.cpu_usage.total |
Total system and user CPU utilization. |
% |
✔️ |
✔️ |
|
|
CPU stacked by process |
os.cpu_process.backend |
CPU usage of backend processes, where 100% represents one full CPU core. |
% |
✔️ |
✔️ |
|
os.cpu_process.bgwriter |
CPU usage of the background writer (bgwriter) process, where 100% represents one full CPU core. |
% |
✔️ |
✔️ |
|
|
os.cpu_process.checkpoint |
CPU usage of the checkpoint process, where 100% represents one full CPU core. |
% |
✔️ |
✔️ |
|
|
os.cpu_process.logger |
CPU usage of the logger process, where 100% represents one full CPU core. |
% |
✔️ |
✔️ |
|
|
os.cpu_process.pgstat |
CPU usage of the statistics collector (pgstat) process, where 100% represents one full CPU core. |
% |
✔️ |
✔️ |
|
|
os.cpu_process.walwriter |
CPU usage of the WAL writer (walwriter) process, where 100% represents one full CPU core. |
% |
✔️ |
✔️ |
|
|
os.cpu_process.autovacuum |
CPU usage of autovacuum processes, where 100% represents one full CPU core. |
% |
✔️ |
✔️ |
|
|
os.cpu_process.walsender |
CPU usage of WAL sender (walsender) processes, where 100% represents one full CPU core. |
% |
✔️ |
✔️ |
|
|
os.cpu_process.postmaster |
CPU usage of the postmaster process, where 100% represents one full CPU core. |
% |
✔️ |
✔️ |
|
|
Memory details |
os.mem_size.spec |
Specification memory size |
MB |
✔️ |
✔️ |
|
os.mem_size.used |
Used memory |
MB |
✔️ |
✔️ |
|
|
os.mem_size.cache |
Page cache memory usage |
MB |
✔️ |
✔️ |
|
|
os.mem_size.mapped_file |
Shared memory usage |
MB |
✔️ |
✔️ |
|
|
os.mem_size.rss |
RSS memory usage |
MB |
✔️ |
✔️ |
|
|
os.mem_size.hugetlb_usage_2m |
2 MB huge page usage |
MB |
✔️ |
✔️ |
|
|
Memory stacked by process |
os.mem_process.backend |
Memory usage of backend processes. |
MB |
✔️ |
✔️ |
|
os.mem_process.bgwriter |
Memory usage of the background writer (bgwriter) process. |
MB |
✔️ |
✔️ |
|
|
os.mem_process.checkpoint |
Memory usage of the checkpoint process. |
MB |
✔️ |
✔️ |
|
|
os.mem_process.logger |
Memory usage of the logger process. |
MB |
✔️ |
✔️ |
|
|
os.mem_process.pgstat |
Memory usage of the statistics collector (pgstat) process. |
MB |
✔️ |
✔️ |
|
|
os.mem_process.walwriter |
Memory usage of the WAL writer (walwriter) process. |
MB |
✔️ |
✔️ |
|
|
os.mem_process.autovacuum |
Memory usage of autovacuum processes. |
MB |
✔️ |
✔️ |
|
|
os.mem_process.walsender |
Memory usage of WAL sender (walsender) processes. |
MB |
✔️ |
✔️ |
|
|
os.mem_process.postmaster |
Memory usage of the postmaster process. |
MB |
✔️ |
✔️ |
|
|
Memory utilization |
os.mem_usage.total |
Total memory utilization |
% |
✔️ |
✔️ |
|
IOPS |
os.iops.total |
Disk read/write IOPS |
Counts/s |
❌ |
✔️ |
|
os.iops.read |
Disk read IOPS |
Counts/s |
❌ |
✔️ |
|
|
os.iops.write |
Disk write IOPS |
Counts/s |
❌ |
✔️ |
|
|
os.iops.limit |
Disk IOPS baseline limit |
Counts/s |
❌ |
✔️ |
|
|
os.iops.burst_limit |
Disk IOPS burst limit Note
This metric is available for high-performance cloud disks with I/O burst enabled. |
Counts/s |
❌ |
✔️ |
|
|
os.iops.data |
IOPS of the high-performance local data disk |
Counts/s |
✔️ |
❌ |
|
|
os.iops.wal |
IOPS of the high-performance local WAL file disk |
Counts/s |
✔️ |
❌ |
|
|
I/O throughput |
os.iothroughput.total |
Disk read/write throughput |
MB/s |
❌ |
✔️ |
|
os.iothroughput.read |
Disk read throughput |
MB/s |
❌ |
✔️ |
|
|
os.iothroughput.write |
Disk write throughput |
MB/s |
❌ |
✔️ |
|
|
os.iothroughput.limit |
Disk I/O bandwidth baseline limit |
MB/s |
❌ |
✔️ |
|
|
os.iothroughput.burst_limit |
Disk I/O bandwidth burst limit Note
This metric is available for high-performance cloud disks with I/O burst enabled. |
MB/s |
❌ |
✔️ |
|
|
os.iothroughput.data |
Throughput of the high-performance local data disk |
MB/s |
✔️ |
❌ |
|
|
os.iothroughput.wal |
Throughput of the high-performance local WAL file disk |
MB/s |
✔️ |
❌ |
|
|
I/O utilization |
os.io_usage.iops_usage |
IOPS utilization |
% |
❌ |
✔️ |
|
os.io_usage.iops_burst_ratio |
IOPS burst ratio |
% |
❌ |
✔️ |
|
|
os.io_usage.mbps_usage |
I/O bandwidth utilization |
% |
❌ |
✔️ |
|
|
os.io_usage.mbps_burst_ratio |
I/O bandwidth burst ratio |
% |
❌ |
✔️ |
|
|
Disk utilization |
os.fs_usage.total |
Total disk utilization |
% |
❌ |
✔️ |
|
Disk space |
os.fs_size.used |
Used disk space |
MB |
❌ |
✔️ |
|
os.fs_size.total |
Total disk space |
MB |
❌ |
✔️ |
|
|
os.fs_size.log_dir |
The total size of log files, including audit, error, and slow query logs. |
MB |
✔️ |
✔️ |
|
|
os.fs_size.wal_dir |
Total size of WAL files in the WAL directory. |
MB |
✔️ |
✔️ |
|
|
os.fs_size.base_dir |
Total size of data files, excluding log and WAL files. |
MB |
✔️ |
✔️ |
Database metrics
These metrics map to PostgreSQL statistics views documented in the official PostgreSQL documentation.
|
Category |
Metric |
Description |
Unit |
Local disk instance |
Cloud disk instance |
|
Connections |
db.connections.active |
Number of active connections |
Count |
✔️ |
✔️ |
|
db.connections.waiting |
Number of waiting connections |
Count |
✔️ |
✔️ |
|
|
db.connections.idle |
Number of idle connections |
Count |
✔️ |
✔️ |
|
|
db.connections.total |
Total number of connections |
Count |
✔️ |
✔️ |
|
|
db.connections.spec |
Maximum connections allowed by the instance specification |
Count |
✔️ |
✔️ |
|
|
SQL |
db.sql.tup_returned |
Rows returned per second |
Tuples/s |
✔️ |
✔️ |
|
db.sql.tup_fetched |
Rows fetched per second |
Tuples/s |
✔️ |
✔️ |
|
|
db.sql.tup_inserted |
Rows inserted per second |
Tuples/s |
✔️ |
✔️ |
|
|
db.sql.tup_deleted |
Rows deleted per second |
Tuples/s |
✔️ |
✔️ |
|
|
db.sql.tup_updated |
Rows updated per second |
Tuples/s |
✔️ |
✔️ |
|
|
Slow SQL |
db.slow_sql.one_second |
Number of SQL statements running for 1 second or longer |
Count |
✔️ |
✔️ |
|
db.slow_sql.three_seconds |
Number of SQL statements running for 3 seconds or longer |
Count |
✔️ |
✔️ |
|
|
db.slow_sql.five_seconds |
Number of SQL statements running for 5 seconds or longer |
Count |
✔️ |
✔️ |
|
|
Long-running transactions |
db.long_transactions.active_one_second |
Number of transactions active for 1 second or longer |
Count |
✔️ |
✔️ |
|
db.long_transactions.active_three_seconds |
Number of transactions active for 3 seconds or longer |
Count |
✔️ |
✔️ |
|
|
db.long_transactions.idle_one_second |
Number of transactions idle for 1 second or longer |
Count |
✔️ |
✔️ |
|
|
db.long_transactions.idle_three_seconds |
Number of transactions idle for 3 seconds or longer |
Count |
✔️ |
✔️ |
|
|
db.long_transactions.idle_five_seconds |
Number of transactions idle for 5 seconds or longer |
Count |
✔️ |
✔️ |
|
|
db.long_transactions.two_pc_one_second |
Number of two-phase transactions in the prepared state for 1 second or longer |
Count |
✔️ |
✔️ |
|
|
db.long_transactions.two_pc_three_seconds |
Number of two-phase transactions in the prepared state for 3 seconds or longer |
Count |
✔️ |
✔️ |
|
|
db.long_transactions.two_pc_five_seconds |
Number of two-phase transactions in the prepared state for 5 seconds or longer |
Count |
✔️ |
✔️ |
|
|
Temporary files |
db.temp.temp_files |
Number of temporary files created per second |
Counts/s |
✔️ |
✔️ |
|
Temporary file size |
db.temp.temp_bytes |
Amount of data written to temporary files per second |
Bytes/s |
✔️ |
✔️ |
|
Maximum database age |
db.age.max_age. |
Maximum database age |
xids |
✔️ |
✔️ |
|
Read-only instance replication lag |
db.ro_replica.replay_lag |
Replay lag of the read-only instance |
s |
✔️ |
✔️ |
|
db.ro_replica.write_lag |
Write lag of the read-only instance |
s |
✔️ |
✔️ |
|
|
db.ro_replica.flush_lag |
Flush lag of the read-only instance |
s |
✔️ |
✔️ |
|
|
Database memory distribution |
db.mem_size.spec |
Memory size defined by the instance specification |
MB |
✔️ |
✔️ |
|
db.mem_size.shared_buffer |
Memory usage of shared_buffer Note
The primary data cache. It grows to 25% of the total memory and then stabilizes. |
MB |
✔️ |
✔️ |
|
|
db.mem_size.rss |
Resident Set Size (RSS) memory usage Note
Memory allocated by PostgreSQL processes using
|
MB |
✔️ |
✔️ |
|
|
db.mem_size.free |
Amount of free memory Note
Completely unused memory. This value approaches zero as PostgreSQL allocates it to |
MB |
✔️ |
✔️ |
|
|
db.mem_size.cache |
Memory usage of the page cache Note
The secondary data cache. It elastically shares 75% of the total memory with
|
MB |
✔️ |
✔️ |
|
|
Available database memory |
db.mem_available.size |
Amount of available database memory Note
|
MB |
✔️ |
✔️ |
|
Available database memory ratio |
db.mem_available.ratio |
Percentage of available database memory Note
|
% |
✔️ |
✔️ |
|
SharedBuffers hit ratio |
db.buffers.hit_ratio |
Cache hit ratio for shared_buffers |
% |
✔️ |
✔️ |
|
SharedBuffers hit count |
db.buffers.blks_hit |
Number of hits in shared_buffers per second |
Blocks/s |
✔️ |
✔️ |
|
IO |
db.io.blks_read |
Number of disk read operations per second by backend processes (OS buffered read) |
Counts/s |
✔️ |
✔️ |
|
db.io.buffers_backend |
Number of disk write operations per second by backend processes (OS buffered write) |
Counts/s |
✔️ |
✔️ |
|
|
db.io.buffers_checkpoint |
Number of disk write operations per second by the checkpoint process (OS buffered write) |
Counts/s |
✔️ |
✔️ |
|
|
db.io.buffers_clean |
Number of disk write operations per second by the background writer (bgwriter) process (OS buffered write) |
Counts/s |
✔️ |
✔️ |
|
|
db.io.buffers_backend_fsync |
Number of fsync operations per second by backend processes |
Counts/s |
✔️ |
✔️ |
|
|
Checkpoint count |
db.checkpoint.checkpoints_timed |
Number of timed checkpoints per second |
Counts/s |
✔️ |
✔️ |
|
db.checkpoint.checkpoints_req |
Number of requested checkpoints per second |
Counts/s |
✔️ |
✔️ |
|
|
Transaction TPS |
db.transactions.xact_commit |
Number of transactions committed per second |
Counts/s |
✔️ |
✔️ |
|
db.transactions.xact_rollback |
Number of transactions rolled back per second |
Counts/s |
✔️ |
✔️ |
|
|
Transaction status |
db.transactions.active |
Number of active transactions |
Count |
✔️ |
✔️ |
|
db.transactions.waiting |
Number of waiting transactions |
Count |
✔️ |
✔️ |
|
|
db.transactions.idle |
Number of transactions in the "idle in transaction" state. Note: This is an undesirable state that requires prompt attention. |
Count |
✔️ |
✔️ |
|
|
Bloat point |
db.swell.swell_time |
Bloat point: The execution time of the longest-running transaction |
s |
✔️ |
✔️ |
|
Replication slot lag |
db.slots.max_slot_wal_delay |
Maximum WAL replication lag among all replication slots. WAL files beyond the replication point of a slot are retained. A large value indicates WAL accumulation and should be addressed promptly. |
MB |
✔️ |
✔️ |
|
Checkpoint write time |
db.checkpoint.checkpoints_sync_time |
Average disk fsync time per second for the checkpoint process |
ms/s |
✔️ |
✔️ |
|
db.checkpoint.checkpoints_write_time |
Average disk write time per second for the checkpoint process (OS buffered write) |
ms/s |
✔️ |
✔️ |
|
|
PgBouncer connections |
db.pgbouncer.client_connections.active |
Number of active client connections Note
Connection pool metrics are available in Enhanced Monitoring after you enable connection pooling. |
Count |
❌ |
✔️ |
|
db.pgbouncer.client_connections.waiting |
Number of waiting client connections |
Count |
❌ |
✔️ |
|
|
db.pgbouncer.server_connections.active |
Number of active server connections |
Count |
❌ |
✔️ |
|
|
db.pgbouncer.server_connections.idle |
Number of idle server connections |
Count |
❌ |
✔️ |
|
|
db.pgbouncer.total_pooled_connections |
Total number of connections in the connection pool |
Count |
❌ |
✔️ |
|
|
db.pgbouncer.num_pools |
Number of connection pools |
Count |
❌ |
✔️ |
Related APIs
|
API |
Description |
|
Queries performance data for an instance |
|
|
Lists available enhanced monitoring metrics |
|
|
Modifies enhanced monitoring metrics |
|
|
Queries the enabled enhanced monitoring metrics for an instance |