Monitor RDS databases with CloudWatch metrics, alarms, Performance Insights, and SNS
Michael Wittig – 15 Jan 2018 (updated 17 Aug 2021)
The database is a critical component of each system that needs monitoring. Amazon RDS provides PostgreSQL, MySQL, MariaDB, Oracle, and Microsoft SQL Server as a Service. Monitoring an RDS database instance touches multiple parts of AWS. In this post, you learn how to monitor RDS databases.
Each database sends metrics to CloudWatch that we can monitor with CloudWatch alarms. We recommend creating alarms for the following metrics:
BurstBalance: The percent of General Purpose SSD (gp2) burst-bucket I/O credits available.
DiskQueueDepth: The number of outstanding I/Os (read/write requests) waiting to access the disk.
FreeStorageSpace: The amount of available storage space in bytes.
CPUUtilization: The percentage of CPU used by the database
CPUCreditBalance: The number of CPU credits left (only applies to db.t* instance types).
FreeableMemory: The amount of available random access memory in bytes.
SwapUsage: The amount of swap space used in bytes.
Performance Insights provides additional insights into running RDS databases. We recommend creating alarms for the following metrics:
DBLoad: The number of active sessions for the DB engine.
Besides metrics, RDS sends out events if the state of the database instance has changed. E.g., because of a Multi-AZ failover.
We recommend subscribing to events of the following categories:
Monitor RDS and receive alerts in Slack or Microsoft Teams!
Take your AWS monitoring to a new level! Chatbot for AWS Monitoring: Configure monitoring, escalate alerts, solve incidents.