Profile Applicability:
- Level 1
Description:
Enabling monitoring and logging provides visibility into the performance, availability, and behavior of your AWS-managed database services. It allows you to collect metrics, track queries, audit access, and detect anomalies or security events.
Rationale:
Monitoring and logging are critical for detecting unauthorized access, debugging issues, auditing user actions, and maintaining system health. Without visibility, operational and security risks increase significantly.
Impact:
Pros:
Enables performance monitoring and resource utilization tracking
Facilitates faster incident detection and resolution
Meets compliance and audit requirements
Cons:
May introduce additional cost for log storage
Requires configuration and periodic review
Default Value:
Monitoring and logging are disabled by default for most AWS database services unless explicitly enabled.
Pre-requisites:
IAM permissions to modify database configurations
A valid CloudWatch Log Group and IAM role for publishing logs
Knowledge of the logging types supported by your DB engine
Remediation
Test Plan
Using AWS Console:
Sign in to the AWS Console
Navigate to RDS > Databases or ElastiCache > Clusters
Select the target DB instance or cache cluster
Open the Monitoring, Logs, or Maintenance and Backups tab
Confirm that Enhanced Monitoring is enabled and log exports are configured
Check CloudWatch Logs for entries from the DB instance
Using AWS CLI:
Check Enhanced Monitoring status:
aws rds describe-db-instances --db-instance-identifier <your-db-instance-id> --query "DBInstances[*].MonitoringInterval"
Check enabled log exports:
aws rds describe-db-instances --db-instance-identifier <your-db-instance-id> --query "DBInstances[*].EnabledCloudwatchLogsExports"
Implementation Plan
Using AWS Console:
Sign in to the AWS Console
Navigate to Amazon RDS > Databases
Select your DB instance and click Modify
Scroll to the Monitoring section and enable Enhanced Monitoring
Choose the granularity (e.g., 1 minute) and monitoring role
Scroll to Log Exports and select logs to export (e.g., error, general, slowquery)
Click Continue, then Apply Immediately
Open CloudWatch > Alarms, and set up thresholds for metrics like CPUUtilization or FreeStorageSpace
Using AWS CLI:
Enable Enhanced Monitoring:
aws rds modify-db-instance --db-instance-identifier <your-db-instance-id> --monitoring-interval 60 --monitoring-role-arn <monitoring-role-arn> --apply-immediately
Enable CloudWatch log exports:
aws rds modify-db-instance --db-instance-identifier <your-db-instance-id> --cloudwatch-logs-export-configuration EnableLogTypes=["error","general","slowquery"] --apply-immediately
Create a CloudWatch alarm (example: high CPU usage):
aws cloudwatch put-metric-alarm --alarm-name "HighCPUUtilization" --metric-name CPUUtilization --namespace AWS/RDS --statistic Average --period 300 --threshold 80 --comparison-operator GreaterThanThreshold --evaluation-periods 2 --alarm-actions <sns-topic-arn>
Backout Plan
Using AWS Console:
Navigate to RDS > Databases
Select your DB instance and click Modify
Scroll to the Monitoring section and set Monitoring Interval to 0
Under Log Exports, uncheck all selected logs
Click Continue, then Apply Immediately
Go to CloudWatch > Alarms and delete any alarms created
Using AWS CLI:
Disable Enhanced Monitoring:
aws rds modify-db-instance --db-instance-identifier <your-db-instance-id> --monitoring-interval 0 --apply-immediately
Disable log exports:
aws rds modify-db-instance --db-instance-identifier <your-db-instance-id> --cloudwatch-logs-export-configuration DisableLogTypes=["error","general","slowquery"] --apply-immediately
Delete CloudWatch alarm:
aws cloudwatch delete-alarms --alarm-names "HighCPUUtilization"
References: