Repository: cdklabs/cdk-monitoring-constructs (language: python)

Issue:
[aurora] Add support for RDS Aurora
### Feature scope

AWS/RDS

### Describe your suggested feature

Hey together,

I would like to monitor Aurora. The CDK implementation, underlying CFN resource and metrics/namespace is almost same to RDS (sure some won't apply).

Currently, I'm just type casting `IServerlessCluster`, which feels brittle: `cluster as unknown as rds.IDatabaseCluster`

<img width="1350" alt="Bildschirmfoto 2022-08-15 um 17 26 18" src="https://user-images.githubusercontent.com/13916107/184664982-ef58e7e2-e9df-47f2-9195-9d9bb5f47f93.png">



Discussion / hints:
Thanks for the suggestion. Will start with the implementation soon. Any aurora-specific metrics you would like not to be missed?

Fix patch:
diff --git a/API.md b/API.md
index 6468a61e..abdf7e82 100644
--- a/API.md
+++ b/API.md
@@ -1063,6 +1063,7 @@ new MonitoringFacade(scope: Construct, id: string, props?: MonitoringFacadeProps
 | <code><a href="#cdk-monitoring-constructs.MonitoringFacade.monitorApiGateway">monitorApiGateway</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.MonitoringFacade.monitorApiGatewayV2HttpApi">monitorApiGatewayV2HttpApi</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.MonitoringFacade.monitorAppSyncApi">monitorAppSyncApi</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.MonitoringFacade.monitorAuroraCluster">monitorAuroraCluster</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.MonitoringFacade.monitorAutoScalingGroup">monitorAutoScalingGroup</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.MonitoringFacade.monitorBilling">monitorBilling</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.MonitoringFacade.monitorCertificate">monitorCertificate</a></code> | *No description.* |
@@ -1451,6 +1452,18 @@ public monitorAppSyncApi(props: AppSyncMonitoringProps): MonitoringFacade
 
 ---
 
+##### `monitorAuroraCluster` <a name="monitorAuroraCluster" id="cdk-monitoring-constructs.MonitoringFacade.monitorAuroraCluster"></a>
+
+```typescript
+public monitorAuroraCluster(props: AuroraClusterMonitoringProps): MonitoringFacade
+```
+
+###### `props`<sup>Required</sup> <a name="props" id="cdk-monitoring-constructs.MonitoringFacade.monitorAuroraCluster.parameter.props"></a>
+
+- *Type:* <a href="#cdk-monitoring-constructs.AuroraClusterMonitoringProps">AuroraClusterMonitoringProps</a>
+
+---
+
 ##### `monitorAutoScalingGroup` <a name="monitorAutoScalingGroup" id="cdk-monitoring-constructs.MonitoringFacade.monitorAutoScalingGroup"></a>
 
 ```typescript
@@ -7430,6 +7443,366 @@ method to compute TPS.
 
 ---
 
+### AuroraClusterMonitoringOptions <a name="AuroraClusterMonitoringOptions" id="cdk-monitoring-constructs.AuroraClusterMonitoringOptions"></a>
+
+#### Initializer <a name="Initializer" id="cdk-monitoring-constructs.AuroraClusterMonitoringOptions.Initializer"></a>
+
+```typescript
+import { AuroraClusterMonitoringOptions } from 'cdk-monitoring-constructs'
+
+const auroraClusterMonitoringOptions: AuroraClusterMonitoringOptions = { ... }
+```
+
+#### Properties <a name="Properties" id="Properties"></a>
+
+| **Name** | **Type** | **Description** |
+| --- | --- | --- |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.alarmFriendlyName">alarmFriendlyName</a></code> | <code>string</code> | Plain name, used in naming alarms. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.humanReadableName">humanReadableName</a></code> | <code>string</code> | Human-readable name is a freeform string, used as a caption or description. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.localAlarmNamePrefixOverride">localAlarmNamePrefixOverride</a></code> | <code>string</code> | If this is defined, the local alarm name prefix used in naming alarms for the construct will be set to this value. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.addToAlarmDashboard">addToAlarmDashboard</a></code> | <code>boolean</code> | Flag indicating if the widgets should be added to alarm dashboard. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.addToDetailDashboard">addToDetailDashboard</a></code> | <code>boolean</code> | Flag indicating if the widgets should be added to detailed dashboard. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.addToSummaryDashboard">addToSummaryDashboard</a></code> | <code>boolean</code> | Flag indicating if the widgets should be added to summary dashboard. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.useCreatedAlarms">useCreatedAlarms</a></code> | <code><a href="#cdk-monitoring-constructs.IAlarmConsumer">IAlarmConsumer</a></code> | Calls provided function to process all alarms created. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.addCpuUsageAlarm">addCpuUsageAlarm</a></code> | <code>{[ key: string ]: <a href="#cdk-monitoring-constructs.UsageThreshold">UsageThreshold</a>}</code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.addMaxConnectionCountAlarm">addMaxConnectionCountAlarm</a></code> | <code>{[ key: string ]: <a href="#cdk-monitoring-constructs.HighConnectionCountThreshold">HighConnectionCountThreshold</a>}</code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.addMaxServerlessDatabaseCapacityAlarm">addMaxServerlessDatabaseCapacityAlarm</a></code> | <code>{[ key: string ]: <a href="#cdk-monitoring-constructs.UsageCountThreshold">UsageCountThreshold</a>}</code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.addMinConnectionCountAlarm">addMinConnectionCountAlarm</a></code> | <code>{[ key: string ]: <a href="#cdk-monitoring-constructs.LowConnectionCountThreshold">LowConnectionCountThreshold</a>}</code> | *No description.* |
+
+---
+
+##### `alarmFriendlyName`<sup>Optional</sup> <a name="alarmFriendlyName" id="cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.alarmFriendlyName"></a>
+
+```typescript
+public readonly alarmFriendlyName: string;
+```
+
+- *Type:* string
+- *Default:* derives name from the construct itself
+
+Plain name, used in naming alarms.
+
+This unique among other resources, and respect the AWS CDK restriction posed on alarm names.
+The length must be 1 - 255 characters and although the validation rules are undocumented, we recommend using ASCII and hyphens.
+
+---
+
+##### `humanReadableName`<sup>Optional</sup> <a name="humanReadableName" id="cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.humanReadableName"></a>
+
+```typescript
+public readonly humanReadableName: string;
+```
+
+- *Type:* string
+- *Default:* use alarmFriendlyName
+
+Human-readable name is a freeform string, used as a caption or description.
+
+There are no limitations on what it can be.
+
+---
+
+##### `localAlarmNamePrefixOverride`<sup>Optional</sup> <a name="localAlarmNamePrefixOverride" id="cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.localAlarmNamePrefixOverride"></a>
+
+```typescript
+public readonly localAlarmNamePrefixOverride: string;
+```
+
+- *Type:* string
+
+If this is defined, the local alarm name prefix used in naming alarms for the construct will be set to this value.
+
+The length must be 1 - 255 characters and although the validation rules are undocumented, we recommend using ASCII and hyphens.
+
+> [AlarmNamingStrategy for more details on alarm name prefixes](AlarmNamingStrategy for more details on alarm name prefixes)
+
+---
+
+##### `addToAlarmDashboard`<sup>Optional</sup> <a name="addToAlarmDashboard" id="cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.addToAlarmDashboard"></a>
+
+```typescript
+public readonly addToAlarmDashboard: boolean;
+```
+
+- *Type:* boolean
+- *Default:* true
+
+Flag indicating if the widgets should be added to alarm dashboard.
+
+---
+
+##### `addToDetailDashboard`<sup>Optional</sup> <a name="addToDetailDashboard" id="cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.addToDetailDashboard"></a>
+
+```typescript
+public readonly addToDetailDashboard: boolean;
+```
+
+- *Type:* boolean
+- *Default:* true
+
+Flag indicating if the widgets should be added to detailed dashboard.
+
+---
+
+##### `addToSummaryDashboard`<sup>Optional</sup> <a name="addToSummaryDashboard" id="cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.addToSummaryDashboard"></a>
+
+```typescript
+public readonly addToSummaryDashboard: boolean;
+```
+
+- *Type:* boolean
+- *Default:* true
+
+Flag indicating if the widgets should be added to summary dashboard.
+
+---
+
+##### `useCreatedAlarms`<sup>Optional</sup> <a name="useCreatedAlarms" id="cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.useCreatedAlarms"></a>
+
+```typescript
+public readonly useCreatedAlarms: IAlarmConsumer;
+```
+
+- *Type:* <a href="#cdk-monitoring-constructs.IAlarmConsumer">IAlarmConsumer</a>
+
+Calls provided function to process all alarms created.
+
+---
+
+##### `addCpuUsageAlarm`<sup>Optional</sup> <a name="addCpuUsageAlarm" id="cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.addCpuUsageAlarm"></a>
+
+```typescript
+public readonly addCpuUsageAlarm: {[ key: string ]: UsageThreshold};
+```
+
+- *Type:* {[ key: string ]: <a href="#cdk-monitoring-constructs.UsageThreshold">UsageThreshold</a>}
+
+---
+
+##### `addMaxConnectionCountAlarm`<sup>Optional</sup> <a name="addMaxConnectionCountAlarm" id="cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.addMaxConnectionCountAlarm"></a>
+
+```typescript
+public readonly addMaxConnectionCountAlarm: {[ key: string ]: HighConnectionCountThreshold};
+```
+
+- *Type:* {[ key: string ]: <a href="#cdk-monitoring-constructs.HighConnectionCountThreshold">HighConnectionCountThreshold</a>}
+
+---
+
+##### `addMaxServerlessDatabaseCapacityAlarm`<sup>Optional</sup> <a name="addMaxServerlessDatabaseCapacityAlarm" id="cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.addMaxServerlessDatabaseCapacityAlarm"></a>
+
+```typescript
+public readonly addMaxServerlessDatabaseCapacityAlarm: {[ key: string ]: UsageCountThreshold};
+```
+
+- *Type:* {[ key: string ]: <a href="#cdk-monitoring-constructs.UsageCountThreshold">UsageCountThreshold</a>}
+
+---
+
+##### `addMinConnectionCountAlarm`<sup>Optional</sup> <a name="addMinConnectionCountAlarm" id="cdk-monitoring-constructs.AuroraClusterMonitoringOptions.property.addMinConnectionCountAlarm"></a>
+
+```typescript
+public readonly addMinConnectionCountAlarm: {[ key: string ]: LowConnectionCountThreshold};
+```
+
+- *Type:* {[ key: string ]: <a href="#cdk-monitoring-constructs.LowConnectionCountThreshold">LowConnectionCountThreshold</a>}
+
+---
+
+### AuroraClusterMonitoringProps <a name="AuroraClusterMonitoringProps" id="cdk-monitoring-constructs.AuroraClusterMonitoringProps"></a>
+
+#### Initializer <a name="Initializer" id="cdk-monitoring-constructs.AuroraClusterMonitoringProps.Initializer"></a>
+
+```typescript
+import { AuroraClusterMonitoringProps } from 'cdk-monitoring-constructs'
+
+const auroraClusterMonitoringProps: AuroraClusterMonitoringProps = { ... }
+```
+
+#### Properties <a name="Properties" id="Properties"></a>
+
+| **Name** | **Type** | **Description** |
+| --- | --- | --- |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.cluster">cluster</a></code> | <code>aws-cdk-lib.aws_rds.IDatabaseCluster \| aws-cdk-lib.aws_rds.ServerlessCluster</code> | database cluster (either this or `clusterIdentifier` need to be specified). |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.clusterIdentifier">clusterIdentifier</a></code> | <code>string</code> | database cluster identifier (either this or `cluster` need to be specified). |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.alarmFriendlyName">alarmFriendlyName</a></code> | <code>string</code> | Plain name, used in naming alarms. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.humanReadableName">humanReadableName</a></code> | <code>string</code> | Human-readable name is a freeform string, used as a caption or description. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.localAlarmNamePrefixOverride">localAlarmNamePrefixOverride</a></code> | <code>string</code> | If this is defined, the local alarm name prefix used in naming alarms for the construct will be set to this value. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.addToAlarmDashboard">addToAlarmDashboard</a></code> | <code>boolean</code> | Flag indicating if the widgets should be added to alarm dashboard. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.addToDetailDashboard">addToDetailDashboard</a></code> | <code>boolean</code> | Flag indicating if the widgets should be added to detailed dashboard. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.addToSummaryDashboard">addToSummaryDashboard</a></code> | <code>boolean</code> | Flag indicating if the widgets should be added to summary dashboard. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.useCreatedAlarms">useCreatedAlarms</a></code> | <code><a href="#cdk-monitoring-constructs.IAlarmConsumer">IAlarmConsumer</a></code> | Calls provided function to process all alarms created. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.addCpuUsageAlarm">addCpuUsageAlarm</a></code> | <code>{[ key: string ]: <a href="#cdk-monitoring-constructs.UsageThreshold">UsageThreshold</a>}</code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.addMaxConnectionCountAlarm">addMaxConnectionCountAlarm</a></code> | <code>{[ key: string ]: <a href="#cdk-monitoring-constructs.HighConnectionCountThreshold">HighConnectionCountThreshold</a>}</code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.addMaxServerlessDatabaseCapacityAlarm">addMaxServerlessDatabaseCapacityAlarm</a></code> | <code>{[ key: string ]: <a href="#cdk-monitoring-constructs.UsageCountThreshold">UsageCountThreshold</a>}</code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.addMinConnectionCountAlarm">addMinConnectionCountAlarm</a></code> | <code>{[ key: string ]: <a href="#cdk-monitoring-constructs.LowConnectionCountThreshold">LowConnectionCountThreshold</a>}</code> | *No description.* |
+
+---
+
+##### `cluster`<sup>Optional</sup> <a name="cluster" id="cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.cluster"></a>
+
+```typescript
+public readonly cluster: IDatabaseCluster | ServerlessCluster;
+```
+
+- *Type:* aws-cdk-lib.aws_rds.IDatabaseCluster | aws-cdk-lib.aws_rds.ServerlessCluster
+
+database cluster (either this or `clusterIdentifier` need to be specified).
+
+---
+
+##### ~~`clusterIdentifier`~~<sup>Optional</sup> <a name="clusterIdentifier" id="cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.clusterIdentifier"></a>
+
+- *Deprecated:* please use `cluster` instead
+
+```typescript
+public readonly clusterIdentifier: string;
+```
+
+- *Type:* string
+
+database cluster identifier (either this or `cluster` need to be specified).
+
+---
+
+##### `alarmFriendlyName`<sup>Optional</sup> <a name="alarmFriendlyName" id="cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.alarmFriendlyName"></a>
+
+```typescript
+public readonly alarmFriendlyName: string;
+```
+
+- *Type:* string
+- *Default:* derives name from the construct itself
+
+Plain name, used in naming alarms.
+
+This unique among other resources, and respect the AWS CDK restriction posed on alarm names.
+The length must be 1 - 255 characters and although the validation rules are undocumented, we recommend using ASCII and hyphens.
+
+---
+
+##### `humanReadableName`<sup>Optional</sup> <a name="humanReadableName" id="cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.humanReadableName"></a>
+
+```typescript
+public readonly humanReadableName: string;
+```
+
+- *Type:* string
+- *Default:* use alarmFriendlyName
+
+Human-readable name is a freeform string, used as a caption or description.
+
+There are no limitations on what it can be.
+
+---
+
+##### `localAlarmNamePrefixOverride`<sup>Optional</sup> <a name="localAlarmNamePrefixOverride" id="cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.localAlarmNamePrefixOverride"></a>
+
+```typescript
+public readonly localAlarmNamePrefixOverride: string;
+```
+
+- *Type:* string
+
+If this is defined, the local alarm name prefix used in naming alarms for the construct will be set to this value.
+
+The length must be 1 - 255 characters and although the validation rules are undocumented, we recommend using ASCII and hyphens.
+
+> [AlarmNamingStrategy for more details on alarm name prefixes](AlarmNamingStrategy for more details on alarm name prefixes)
+
+---
+
+##### `addToAlarmDashboard`<sup>Optional</sup> <a name="addToAlarmDashboard" id="cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.addToAlarmDashboard"></a>
+
+```typescript
+public readonly addToAlarmDashboard: boolean;
+```
+
+- *Type:* boolean
+- *Default:* true
+
+Flag indicating if the widgets should be added to alarm dashboard.
+
+---
+
+##### `addToDetailDashboard`<sup>Optional</sup> <a name="addToDetailDashboard" id="cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.addToDetailDashboard"></a>
+
+```typescript
+public readonly addToDetailDashboard: boolean;
+```
+
+- *Type:* boolean
+- *Default:* true
+
+Flag indicating if the widgets should be added to detailed dashboard.
+
+---
+
+##### `addToSummaryDashboard`<sup>Optional</sup> <a name="addToSummaryDashboard" id="cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.addToSummaryDashboard"></a>
+
+```typescript
+public readonly addToSummaryDashboard: boolean;
+```
+
+- *Type:* boolean
+- *Default:* true
+
+Flag indicating if the widgets should be added to summary dashboard.
+
+---
+
+##### `useCreatedAlarms`<sup>Optional</sup> <a name="useCreatedAlarms" id="cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.useCreatedAlarms"></a>
+
+```typescript
+public readonly useCreatedAlarms: IAlarmConsumer;
+```
+
+- *Type:* <a href="#cdk-monitoring-constructs.IAlarmConsumer">IAlarmConsumer</a>
+
+Calls provided function to process all alarms created.
+
+---
+
+##### `addCpuUsageAlarm`<sup>Optional</sup> <a name="addCpuUsageAlarm" id="cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.addCpuUsageAlarm"></a>
+
+```typescript
+public readonly addCpuUsageAlarm: {[ key: string ]: UsageThreshold};
+```
+
+- *Type:* {[ key: string ]: <a href="#cdk-monitoring-constructs.UsageThreshold">UsageThreshold</a>}
+
+---
+
+##### `addMaxConnectionCountAlarm`<sup>Optional</sup> <a name="addMaxConnectionCountAlarm" id="cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.addMaxConnectionCountAlarm"></a>
+
+```typescript
+public readonly addMaxConnectionCountAlarm: {[ key: string ]: HighConnectionCountThreshold};
+```
+
+- *Type:* {[ key: string ]: <a href="#cdk-monitoring-constructs.HighConnectionCountThreshold">HighConnectionCountThreshold</a>}
+
+---
+
+##### `addMaxServerlessDatabaseCapacityAlarm`<sup>Optional</sup> <a name="addMaxServerlessDatabaseCapacityAlarm" id="cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.addMaxServerlessDatabaseCapacityAlarm"></a>
+
+```typescript
+public readonly addMaxServerlessDatabaseCapacityAlarm: {[ key: string ]: UsageCountThreshold};
+```
+
+- *Type:* {[ key: string ]: <a href="#cdk-monitoring-constructs.UsageCountThreshold">UsageCountThreshold</a>}
+
+---
+
+##### `addMinConnectionCountAlarm`<sup>Optional</sup> <a name="addMinConnectionCountAlarm" id="cdk-monitoring-constructs.AuroraClusterMonitoringProps.property.addMinConnectionCountAlarm"></a>
+
+```typescript
+public readonly addMinConnectionCountAlarm: {[ key: string ]: LowConnectionCountThreshold};
+```
+
+- *Type:* {[ key: string ]: <a href="#cdk-monitoring-constructs.LowConnectionCountThreshold">LowConnectionCountThreshold</a>}
+
+---
+
 ### AutoScalingGroupMetricFactoryProps <a name="AutoScalingGroupMetricFactoryProps" id="cdk-monitoring-constructs.AutoScalingGroupMetricFactoryProps"></a>
 
 #### Initializer <a name="Initializer" id="cdk-monitoring-constructs.AutoScalingGroupMetricFactoryProps.Initializer"></a>
@@ -20735,6 +21108,341 @@ public readonly maxMessagesPublishedCount: number;
 
 ---
 
+### HighServerlessDatabaseCapacityThreshold <a name="HighServerlessDatabaseCapacityThreshold" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold"></a>
+
+#### Initializer <a name="Initializer" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.Initializer"></a>
+
+```typescript
+import { HighServerlessDatabaseCapacityThreshold } from 'cdk-monitoring-constructs'
+
+const highServerlessDatabaseCapacityThreshold: HighServerlessDatabaseCapacityThreshold = { ... }
+```
+
+#### Properties <a name="Properties" id="Properties"></a>
+
+| **Name** | **Type** | **Description** |
+| --- | --- | --- |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.actionOverride">actionOverride</a></code> | <code><a href="#cdk-monitoring-constructs.IAlarmActionStrategy">IAlarmActionStrategy</a></code> | Allows to override the default alarm action. |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.actionsEnabled">actionsEnabled</a></code> | <code>boolean</code> | Enables the configured CloudWatch alarm ticketing actions. |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.alarmDescriptionOverride">alarmDescriptionOverride</a></code> | <code>string</code> | A text included in the generated ticket description body, which fully replaces the generated text. |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.alarmNameOverride">alarmNameOverride</a></code> | <code>string</code> | If this is defined, the alarm name is set to this exact value. |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.comparisonOperatorOverride">comparisonOperatorOverride</a></code> | <code>aws-cdk-lib.aws_cloudwatch.ComparisonOperator</code> | Comparison operator used to compare actual value against the threshold. |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.customParams">customParams</a></code> | <code>{[ key: string ]: any}</code> | This allows user to attach custom parameters to this alarm, which can later be accessed from the "useCreatedAlarms" method. |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.customTags">customTags</a></code> | <code>string[]</code> | This allows user to attach custom values to this alarm, which can later be accessed from the "useCreatedAlarms" method. |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.datapointsToAlarm">datapointsToAlarm</a></code> | <code>number</code> | Number of breaches required to transition into an ALARM state. |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.dedupeStringOverride">dedupeStringOverride</a></code> | <code>string</code> | If this is defined, the alarm dedupe string is set to this exact value. |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.documentationLink">documentationLink</a></code> | <code>string</code> | An optional link included in the generated ticket description body. |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.evaluateLowSampleCountPercentile">evaluateLowSampleCountPercentile</a></code> | <code>boolean</code> | Used only for alarms based on percentiles. |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.evaluationPeriods">evaluationPeriods</a></code> | <code>number</code> | Number of periods to consider when checking the number of breaching datapoints. |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.fillAlarmRange">fillAlarmRange</a></code> | <code>boolean</code> | Indicates whether the alarming range of values should be highlighted in the widget. |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.metricAdjuster">metricAdjuster</a></code> | <code><a href="#cdk-monitoring-constructs.IMetricAdjuster">IMetricAdjuster</a></code> | If specified, adjusts the metric before creating an alarm from it. |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.minMetricSamplesToAlarm">minMetricSamplesToAlarm</a></code> | <code>number</code> | Specifies how many samples (N) of the metric is needed to trigger the alarm. |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.overrideAnnotationColor">overrideAnnotationColor</a></code> | <code>string</code> | If specified, it modifies the final alarm annotation color. |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.overrideAnnotationLabel">overrideAnnotationLabel</a></code> | <code>string</code> | If specified, it modifies the final alarm annotation label. |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.overrideAnnotationVisibility">overrideAnnotationVisibility</a></code> | <code>boolean</code> | If specified, it modifies the final alarm annotation visibility. |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.period">period</a></code> | <code>aws-cdk-lib.Duration</code> | Period override for the metric to alarm on. |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.runbookLink">runbookLink</a></code> | <code>string</code> | An optional link included in the generated ticket description body. |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.treatMissingDataOverride">treatMissingDataOverride</a></code> | <code>aws-cdk-lib.aws_cloudwatch.TreatMissingData</code> | Behaviour in case the metric data is missing. |
+| <code><a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.maxServerlessDatabaseCapacity">maxServerlessDatabaseCapacity</a></code> | <code>number</code> | *No description.* |
+
+---
+
+##### `actionOverride`<sup>Optional</sup> <a name="actionOverride" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.actionOverride"></a>
+
+```typescript
+public readonly actionOverride: IAlarmActionStrategy;
+```
+
+- *Type:* <a href="#cdk-monitoring-constructs.IAlarmActionStrategy">IAlarmActionStrategy</a>
+- *Default:* undefined (default action will be used, if any)
+
+Allows to override the default alarm action.
+
+---
+
+##### `actionsEnabled`<sup>Optional</sup> <a name="actionsEnabled" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.actionsEnabled"></a>
+
+```typescript
+public readonly actionsEnabled: boolean;
+```
+
+- *Type:* boolean
+- *Default:* the same as monitoring facade default
+
+Enables the configured CloudWatch alarm ticketing actions.
+
+---
+
+##### `alarmDescriptionOverride`<sup>Optional</sup> <a name="alarmDescriptionOverride" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.alarmDescriptionOverride"></a>
+
+```typescript
+public readonly alarmDescriptionOverride: string;
+```
+
+- *Type:* string
+- *Default:* default auto-generated content only
+
+A text included in the generated ticket description body, which fully replaces the generated text.
+
+---
+
+##### `alarmNameOverride`<sup>Optional</sup> <a name="alarmNameOverride" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.alarmNameOverride"></a>
+
+```typescript
+public readonly alarmNameOverride: string;
+```
+
+- *Type:* string
+
+If this is defined, the alarm name is set to this exact value.
+
+Please be aware that you need to specify prefix for different stages (Beta, Prod...) and regions (EU, NA...) manually.
+
+---
+
+##### `comparisonOperatorOverride`<sup>Optional</sup> <a name="comparisonOperatorOverride" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.comparisonOperatorOverride"></a>
+
+```typescript
+public readonly comparisonOperatorOverride: ComparisonOperator;
+```
+
+- *Type:* aws-cdk-lib.aws_cloudwatch.ComparisonOperator
+- *Default:* alarm-specific default
+
+Comparison operator used to compare actual value against the threshold.
+
+---
+
+##### `customParams`<sup>Optional</sup> <a name="customParams" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.customParams"></a>
+
+```typescript
+public readonly customParams: {[ key: string ]: any};
+```
+
+- *Type:* {[ key: string ]: any}
+- *Default:* no parameters
+
+This allows user to attach custom parameters to this alarm, which can later be accessed from the "useCreatedAlarms" method.
+
+---
+
+##### `customTags`<sup>Optional</sup> <a name="customTags" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.customTags"></a>
+
+```typescript
+public readonly customTags: string[];
+```
+
+- *Type:* string[]
+- *Default:* no tags
+
+This allows user to attach custom values to this alarm, which can later be accessed from the "useCreatedAlarms" method.
+
+---
+
+##### `datapointsToAlarm`<sup>Optional</sup> <a name="datapointsToAlarm" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.datapointsToAlarm"></a>
+
+```typescript
+public readonly datapointsToAlarm: number;
+```
+
+- *Type:* number
+- *Default:* the same as monitoring facade default
+
+Number of breaches required to transition into an ALARM state.
+
+---
+
+##### `dedupeStringOverride`<sup>Optional</sup> <a name="dedupeStringOverride" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.dedupeStringOverride"></a>
+
+```typescript
+public readonly dedupeStringOverride: string;
+```
+
+- *Type:* string
+- *Default:* undefined (no override)
+
+If this is defined, the alarm dedupe string is set to this exact value.
+
+Please be aware that you need to handle deduping for different stages (Beta, Prod...) and regions (EU, NA...) manually.
+
+---
+
+##### `documentationLink`<sup>Optional</sup> <a name="documentationLink" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.documentationLink"></a>
+
+```typescript
+public readonly documentationLink: string;
+```
+
+- *Type:* string
+- *Default:* no additional link will be added
+
+An optional link included in the generated ticket description body.
+
+---
+
+##### `evaluateLowSampleCountPercentile`<sup>Optional</sup> <a name="evaluateLowSampleCountPercentile" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.evaluateLowSampleCountPercentile"></a>
+
+```typescript
+public readonly evaluateLowSampleCountPercentile: boolean;
+```
+
+- *Type:* boolean
+- *Default:* true
+
+Used only for alarms based on percentiles.
+
+If you specify <code>false</code>, the alarm state does not change during periods with too few data points to be statistically significant.
+If you specify <code>true</code>, the alarm is always evaluated and possibly changes state no matter how many data points are available.
+
+---
+
+##### `evaluationPeriods`<sup>Optional</sup> <a name="evaluationPeriods" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.evaluationPeriods"></a>
+
+```typescript
+public readonly evaluationPeriods: number;
+```
+
+- *Type:* number
+- *Default:* the same as monitoring facade default
+
+Number of periods to consider when checking the number of breaching datapoints.
+
+---
+
+##### `fillAlarmRange`<sup>Optional</sup> <a name="fillAlarmRange" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.fillAlarmRange"></a>
+
+```typescript
+public readonly fillAlarmRange: boolean;
+```
+
+- *Type:* boolean
+- *Default:* false
+
+Indicates whether the alarming range of values should be highlighted in the widget.
+
+---
+
+##### `metricAdjuster`<sup>Optional</sup> <a name="metricAdjuster" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.metricAdjuster"></a>
+
+```typescript
+public readonly metricAdjuster: IMetricAdjuster;
+```
+
+- *Type:* <a href="#cdk-monitoring-constructs.IMetricAdjuster">IMetricAdjuster</a>
+- *Default:* no adjuster
+
+If specified, adjusts the metric before creating an alarm from it.
+
+---
+
+##### `minMetricSamplesToAlarm`<sup>Optional</sup> <a name="minMetricSamplesToAlarm" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.minMetricSamplesToAlarm"></a>
+
+```typescript
+public readonly minMetricSamplesToAlarm: number;
+```
+
+- *Type:* number
+- *Default:* default behaviour - no condition on sample count will be added to the alarm
+
+Specifies how many samples (N) of the metric is needed to trigger the alarm.
+
+If this property is specified, a composite alarm is created of the following:
+<ul>
+<li>The original alarm, created without this property being used; this alarm will have no actions set.</li>
+<li>A secondary alarm, which will monitor the same metric with the N (SampleCount) statistic, checking the sample count.</li>
+</ul>
+This composite alarm will be returned as a result and uses the specified alarm actions.
+
+---
+
+##### `overrideAnnotationColor`<sup>Optional</sup> <a name="overrideAnnotationColor" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.overrideAnnotationColor"></a>
+
+```typescript
+public readonly overrideAnnotationColor: string;
+```
+
+- *Type:* string
+- *Default:* no override (default color)
+
+If specified, it modifies the final alarm annotation color.
+
+---
+
+##### `overrideAnnotationLabel`<sup>Optional</sup> <a name="overrideAnnotationLabel" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.overrideAnnotationLabel"></a>
+
+```typescript
+public readonly overrideAnnotationLabel: string;
+```
+
+- *Type:* string
+- *Default:* no override (default label)
+
+If specified, it modifies the final alarm annotation label.
+
+---
+
+##### `overrideAnnotationVisibility`<sup>Optional</sup> <a name="overrideAnnotationVisibility" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.overrideAnnotationVisibility"></a>
+
+```typescript
+public readonly overrideAnnotationVisibility: boolean;
+```
+
+- *Type:* boolean
+- *Default:* no override (default visibility)
+
+If specified, it modifies the final alarm annotation visibility.
+
+---
+
+##### `period`<sup>Optional</sup> <a name="period" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.period"></a>
+
+```typescript
+public readonly period: Duration;
+```
+
+- *Type:* aws-cdk-lib.Duration
+- *Default:* the default specified in MetricFactory
+
+Period override for the metric to alarm on.
+
+---
+
+##### `runbookLink`<sup>Optional</sup> <a name="runbookLink" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.runbookLink"></a>
+
+```typescript
+public readonly runbookLink: string;
+```
+
+- *Type:* string
+- *Default:* no additional link will be added
+
+An optional link included in the generated ticket description body.
+
+---
+
+##### `treatMissingDataOverride`<sup>Optional</sup> <a name="treatMissingDataOverride" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.treatMissingDataOverride"></a>
+
+```typescript
+public readonly treatMissingDataOverride: TreatMissingData;
+```
+
+- *Type:* aws-cdk-lib.aws_cloudwatch.TreatMissingData
+- *Default:* alarm-specific default
+
+Behaviour in case the metric data is missing.
+
+---
+
+##### `maxServerlessDatabaseCapacity`<sup>Required</sup> <a name="maxServerlessDatabaseCapacity" id="cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold.property.maxServerlessDatabaseCapacity"></a>
+
+```typescript
+public readonly maxServerlessDatabaseCapacity: number;
+```
+
+- *Type:* number
+
+---
+
 ### HighTpsThreshold <a name="HighTpsThreshold" id="cdk-monitoring-constructs.HighTpsThreshold"></a>
 
 #### Initializer <a name="Initializer" id="cdk-monitoring-constructs.HighTpsThreshold.Initializer"></a>
@@ -30679,6 +31387,7 @@ const monitoringAspectProps: MonitoringAspectProps = { ... }
 | <code><a href="#cdk-monitoring-constructs.MonitoringAspectProps.property.apiGateway">apiGateway</a></code> | <code><a href="#cdk-monitoring-constructs.MonitoringAspectType">MonitoringAspectType</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.MonitoringAspectProps.property.apiGatewayV2">apiGatewayV2</a></code> | <code><a href="#cdk-monitoring-constructs.MonitoringAspectType">MonitoringAspectType</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.MonitoringAspectProps.property.appSync">appSync</a></code> | <code><a href="#cdk-monitoring-constructs.MonitoringAspectType">MonitoringAspectType</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.MonitoringAspectProps.property.auroraCluster">auroraCluster</a></code> | <code><a href="#cdk-monitoring-constructs.MonitoringAspectType">MonitoringAspectType</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.MonitoringAspectProps.property.autoScalingGroup">autoScalingGroup</a></code> | <code><a href="#cdk-monitoring-constructs.MonitoringAspectType">MonitoringAspectType</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.MonitoringAspectProps.property.billing">billing</a></code> | <code><a href="#cdk-monitoring-constructs.MonitoringAspectType">MonitoringAspectType</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.MonitoringAspectProps.property.cloudFront">cloudFront</a></code> | <code><a href="#cdk-monitoring-constructs.MonitoringAspectType">MonitoringAspectType</a></code> | *No description.* |
@@ -30745,6 +31454,16 @@ public readonly appSync: MonitoringAspectType;
 
 ---
 
+##### `auroraCluster`<sup>Optional</sup> <a name="auroraCluster" id="cdk-monitoring-constructs.MonitoringAspectProps.property.auroraCluster"></a>
+
+```typescript
+public readonly auroraCluster: MonitoringAspectType;
+```
+
+- *Type:* <a href="#cdk-monitoring-constructs.MonitoringAspectType">MonitoringAspectType</a>
+
+---
+
 ##### `autoScalingGroup`<sup>Optional</sup> <a name="autoScalingGroup" id="cdk-monitoring-constructs.MonitoringAspectProps.property.autoScalingGroup"></a>
 
 ```typescript
@@ -35170,7 +35889,7 @@ const rdsClusterMetricFactoryProps: RdsClusterMetricFactoryProps = { ... }
 
 | **Name** | **Type** | **Description** |
 | --- | --- | --- |
-| <code><a href="#cdk-monitoring-constructs.RdsClusterMetricFactoryProps.property.cluster">cluster</a></code> | <code>aws-cdk-lib.aws_rds.IDatabaseCluster</code> | database cluster (either this or `clusterIdentifier` need to be specified). |
+| <code><a href="#cdk-monitoring-constructs.RdsClusterMetricFactoryProps.property.cluster">cluster</a></code> | <code>aws-cdk-lib.aws_rds.IDatabaseCluster \| aws-cdk-lib.aws_rds.ServerlessCluster</code> | database cluster (either this or `clusterIdentifier` need to be specified). |
 | <code><a href="#cdk-monitoring-constructs.RdsClusterMetricFactoryProps.property.clusterIdentifier">clusterIdentifier</a></code> | <code>string</code> | database cluster identifier (either this or `cluster` need to be specified). |
 
 ---
@@ -35178,10 +35897,10 @@ const rdsClusterMetricFactoryProps: RdsClusterMetricFactoryProps = { ... }
 ##### `cluster`<sup>Optional</sup> <a name="cluster" id="cdk-monitoring-constructs.RdsClusterMetricFactoryProps.property.cluster"></a>
 
 ```typescript
-public readonly cluster: IDatabaseCluster;
+public readonly cluster: IDatabaseCluster | ServerlessCluster;
 ```
 
-- *Type:* aws-cdk-lib.aws_rds.IDatabaseCluster
+- *Type:* aws-cdk-lib.aws_rds.IDatabaseCluster | aws-cdk-lib.aws_rds.ServerlessCluster
 
 database cluster (either this or `clusterIdentifier` need to be specified).
 
@@ -35381,7 +36100,7 @@ const rdsClusterMonitoringProps: RdsClusterMonitoringProps = { ... }
 
 | **Name** | **Type** | **Description** |
 | --- | --- | --- |
-| <code><a href="#cdk-monitoring-constructs.RdsClusterMonitoringProps.property.cluster">cluster</a></code> | <code>aws-cdk-lib.aws_rds.IDatabaseCluster</code> | database cluster (either this or `clusterIdentifier` need to be specified). |
+| <code><a href="#cdk-monitoring-constructs.RdsClusterMonitoringProps.property.cluster">cluster</a></code> | <code>aws-cdk-lib.aws_rds.IDatabaseCluster \| aws-cdk-lib.aws_rds.ServerlessCluster</code> | database cluster (either this or `clusterIdentifier` need to be specified). |
 | <code><a href="#cdk-monitoring-constructs.RdsClusterMonitoringProps.property.clusterIdentifier">clusterIdentifier</a></code> | <code>string</code> | database cluster identifier (either this or `cluster` need to be specified). |
 | <code><a href="#cdk-monitoring-constructs.RdsClusterMonitoringProps.property.alarmFriendlyName">alarmFriendlyName</a></code> | <code>string</code> | Plain name, used in naming alarms. |
 | <code><a href="#cdk-monitoring-constructs.RdsClusterMonitoringProps.property.humanReadableName">humanReadableName</a></code> | <code>string</code> | Human-readable name is a freeform string, used as a caption or description. |
@@ -35400,10 +36119,10 @@ const rdsClusterMonitoringProps: RdsClusterMonitoringProps = { ... }
 ##### `cluster`<sup>Optional</sup> <a name="cluster" id="cdk-monitoring-constructs.RdsClusterMonitoringProps.property.cluster"></a>
 
 ```typescript
-public readonly cluster: IDatabaseCluster;
+public readonly cluster: IDatabaseCluster | ServerlessCluster;
 ```
 
-- *Type:* aws-cdk-lib.aws_rds.IDatabaseCluster
+- *Type:* aws-cdk-lib.aws_rds.IDatabaseCluster | aws-cdk-lib.aws_rds.ServerlessCluster
 
 database cluster (either this or `clusterIdentifier` need to be specified).
 
@@ -46061,6 +46780,463 @@ public readonly tpsMetric: Metric | MathExpression;
 ---
 
 
+### AuroraAlarmFactory <a name="AuroraAlarmFactory" id="cdk-monitoring-constructs.AuroraAlarmFactory"></a>
+
+#### Initializers <a name="Initializers" id="cdk-monitoring-constructs.AuroraAlarmFactory.Initializer"></a>
+
+```typescript
+import { AuroraAlarmFactory } from 'cdk-monitoring-constructs'
+
+new AuroraAlarmFactory(alarmFactory: AlarmFactory)
+```
+
+| **Name** | **Type** | **Description** |
+| --- | --- | --- |
+| <code><a href="#cdk-monitoring-constructs.AuroraAlarmFactory.Initializer.parameter.alarmFactory">alarmFactory</a></code> | <code><a href="#cdk-monitoring-constructs.AlarmFactory">AlarmFactory</a></code> | *No description.* |
+
+---
+
+##### `alarmFactory`<sup>Required</sup> <a name="alarmFactory" id="cdk-monitoring-constructs.AuroraAlarmFactory.Initializer.parameter.alarmFactory"></a>
+
+- *Type:* <a href="#cdk-monitoring-constructs.AlarmFactory">AlarmFactory</a>
+
+---
+
+#### Methods <a name="Methods" id="Methods"></a>
+
+| **Name** | **Description** |
+| --- | --- |
+| <code><a href="#cdk-monitoring-constructs.AuroraAlarmFactory.addMaxServerlessDatabaseCapacity">addMaxServerlessDatabaseCapacity</a></code> | *No description.* |
+
+---
+
+##### `addMaxServerlessDatabaseCapacity` <a name="addMaxServerlessDatabaseCapacity" id="cdk-monitoring-constructs.AuroraAlarmFactory.addMaxServerlessDatabaseCapacity"></a>
+
+```typescript
+public addMaxServerlessDatabaseCapacity(metric: Metric | MathExpression, props: HighServerlessDatabaseCapacityThreshold, disambiguator?: string): AlarmWithAnnotation
+```
+
+###### `metric`<sup>Required</sup> <a name="metric" id="cdk-monitoring-constructs.AuroraAlarmFactory.addMaxServerlessDatabaseCapacity.parameter.metric"></a>
+
+- *Type:* aws-cdk-lib.aws_cloudwatch.Metric | aws-cdk-lib.aws_cloudwatch.MathExpression
+
+---
+
+###### `props`<sup>Required</sup> <a name="props" id="cdk-monitoring-constructs.AuroraAlarmFactory.addMaxServerlessDatabaseCapacity.parameter.props"></a>
+
+- *Type:* <a href="#cdk-monitoring-constructs.HighServerlessDatabaseCapacityThreshold">HighServerlessDatabaseCapacityThreshold</a>
+
+---
+
+###### `disambiguator`<sup>Optional</sup> <a name="disambiguator" id="cdk-monitoring-constructs.AuroraAlarmFactory.addMaxServerlessDatabaseCapacity.parameter.disambiguator"></a>
+
+- *Type:* string
+
+---
+
+
+
+
+### AuroraClusterMonitoring <a name="AuroraClusterMonitoring" id="cdk-monitoring-constructs.AuroraClusterMonitoring"></a>
+
+#### Initializers <a name="Initializers" id="cdk-monitoring-constructs.AuroraClusterMonitoring.Initializer"></a>
+
+```typescript
+import { AuroraClusterMonitoring } from 'cdk-monitoring-constructs'
+
+new AuroraClusterMonitoring(scope: MonitoringScope, props: AuroraClusterMonitoringProps)
+```
+
+| **Name** | **Type** | **Description** |
+| --- | --- | --- |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.Initializer.parameter.scope">scope</a></code> | <code><a href="#cdk-monitoring-constructs.MonitoringScope">MonitoringScope</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.Initializer.parameter.props">props</a></code> | <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoringProps">AuroraClusterMonitoringProps</a></code> | *No description.* |
+
+---
+
+##### `scope`<sup>Required</sup> <a name="scope" id="cdk-monitoring-constructs.AuroraClusterMonitoring.Initializer.parameter.scope"></a>
+
+- *Type:* <a href="#cdk-monitoring-constructs.MonitoringScope">MonitoringScope</a>
+
+---
+
+##### `props`<sup>Required</sup> <a name="props" id="cdk-monitoring-constructs.AuroraClusterMonitoring.Initializer.parameter.props"></a>
+
+- *Type:* <a href="#cdk-monitoring-constructs.AuroraClusterMonitoringProps">AuroraClusterMonitoringProps</a>
+
+---
+
+#### Methods <a name="Methods" id="Methods"></a>
+
+| **Name** | **Description** |
+| --- | --- |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.addAlarm">addAlarm</a></code> | Adds an alarm. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.alarmWidgets">alarmWidgets</a></code> | Returns widgets for all alarms. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.createAlarmFactory">createAlarmFactory</a></code> | Creates a new alarm factory. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.createdAlarms">createdAlarms</a></code> | Returns all the alarms created. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.createMetricFactory">createMetricFactory</a></code> | Creates a new metric factory. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.createWidgetFactory">createWidgetFactory</a></code> | Creates a new widget factory. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.summaryWidgets">summaryWidgets</a></code> | Returns widgets to be placed on the summary dashboard. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.widgets">widgets</a></code> | Returns widgets to be placed on the main dashboard. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.widgetsForDashboard">widgetsForDashboard</a></code> | Returns widgets for the requested dashboard type. |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.createConnectionsWidget">createConnectionsWidget</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.createCpuUsageWidget">createCpuUsageWidget</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.createLatencyWidget">createLatencyWidget</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.createServerlessDatabaseCapacityWidget">createServerlessDatabaseCapacityWidget</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.createTitleWidget">createTitleWidget</a></code> | *No description.* |
+
+---
+
+##### `addAlarm` <a name="addAlarm" id="cdk-monitoring-constructs.AuroraClusterMonitoring.addAlarm"></a>
+
+```typescript
+public addAlarm(alarm: AlarmWithAnnotation): void
+```
+
+Adds an alarm.
+
+###### `alarm`<sup>Required</sup> <a name="alarm" id="cdk-monitoring-constructs.AuroraClusterMonitoring.addAlarm.parameter.alarm"></a>
+
+- *Type:* <a href="#cdk-monitoring-constructs.AlarmWithAnnotation">AlarmWithAnnotation</a>
+
+alarm to add.
+
+---
+
+##### `alarmWidgets` <a name="alarmWidgets" id="cdk-monitoring-constructs.AuroraClusterMonitoring.alarmWidgets"></a>
+
+```typescript
+public alarmWidgets(): IWidget[]
+```
+
+Returns widgets for all alarms.
+
+These can go to runbook or to service dashboard.
+
+##### `createAlarmFactory` <a name="createAlarmFactory" id="cdk-monitoring-constructs.AuroraClusterMonitoring.createAlarmFactory"></a>
+
+```typescript
+public createAlarmFactory(alarmNamePrefix: string): AlarmFactory
+```
+
+Creates a new alarm factory.
+
+Alarms created will be named with the given prefix, unless a local name override is present.
+
+###### `alarmNamePrefix`<sup>Required</sup> <a name="alarmNamePrefix" id="cdk-monitoring-constructs.AuroraClusterMonitoring.createAlarmFactory.parameter.alarmNamePrefix"></a>
+
+- *Type:* string
+
+alarm name prefix.
+
+---
+
+##### `createdAlarms` <a name="createdAlarms" id="cdk-monitoring-constructs.AuroraClusterMonitoring.createdAlarms"></a>
+
+```typescript
+public createdAlarms(): AlarmWithAnnotation[]
+```
+
+Returns all the alarms created.
+
+##### `createMetricFactory` <a name="createMetricFactory" id="cdk-monitoring-constructs.AuroraClusterMonitoring.createMetricFactory"></a>
+
+```typescript
+public createMetricFactory(): MetricFactory
+```
+
+Creates a new metric factory.
+
+##### `createWidgetFactory` <a name="createWidgetFactory" id="cdk-monitoring-constructs.AuroraClusterMonitoring.createWidgetFactory"></a>
+
+```typescript
+public createWidgetFactory(): IWidgetFactory
+```
+
+Creates a new widget factory.
+
+##### `summaryWidgets` <a name="summaryWidgets" id="cdk-monitoring-constructs.AuroraClusterMonitoring.summaryWidgets"></a>
+
+```typescript
+public summaryWidgets(): IWidget[]
+```
+
+Returns widgets to be placed on the summary dashboard.
+
+##### `widgets` <a name="widgets" id="cdk-monitoring-constructs.AuroraClusterMonitoring.widgets"></a>
+
+```typescript
+public widgets(): IWidget[]
+```
+
+Returns widgets to be placed on the main dashboard.
+
+##### `widgetsForDashboard` <a name="widgetsForDashboard" id="cdk-monitoring-constructs.AuroraClusterMonitoring.widgetsForDashboard"></a>
+
+```typescript
+public widgetsForDashboard(name: string): IWidget[]
+```
+
+Returns widgets for the requested dashboard type.
+
+###### `name`<sup>Required</sup> <a name="name" id="cdk-monitoring-constructs.AuroraClusterMonitoring.widgetsForDashboard.parameter.name"></a>
+
+- *Type:* string
+
+---
+
+##### `createConnectionsWidget` <a name="createConnectionsWidget" id="cdk-monitoring-constructs.AuroraClusterMonitoring.createConnectionsWidget"></a>
+
+```typescript
+public createConnectionsWidget(width: number, height: number): GraphWidget
+```
+
+###### `width`<sup>Required</sup> <a name="width" id="cdk-monitoring-constructs.AuroraClusterMonitoring.createConnectionsWidget.parameter.width"></a>
+
+- *Type:* number
+
+---
+
+###### `height`<sup>Required</sup> <a name="height" id="cdk-monitoring-constructs.AuroraClusterMonitoring.createConnectionsWidget.parameter.height"></a>
+
+- *Type:* number
+
+---
+
+##### `createCpuUsageWidget` <a name="createCpuUsageWidget" id="cdk-monitoring-constructs.AuroraClusterMonitoring.createCpuUsageWidget"></a>
+
+```typescript
+public createCpuUsageWidget(width: number, height: number): GraphWidget
+```
+
+###### `width`<sup>Required</sup> <a name="width" id="cdk-monitoring-constructs.AuroraClusterMonitoring.createCpuUsageWidget.parameter.width"></a>
+
+- *Type:* number
+
+---
+
+###### `height`<sup>Required</sup> <a name="height" id="cdk-monitoring-constructs.AuroraClusterMonitoring.createCpuUsageWidget.parameter.height"></a>
+
+- *Type:* number
+
+---
+
+##### `createLatencyWidget` <a name="createLatencyWidget" id="cdk-monitoring-constructs.AuroraClusterMonitoring.createLatencyWidget"></a>
+
+```typescript
+public createLatencyWidget(width: number, height: number): GraphWidget
+```
+
+###### `width`<sup>Required</sup> <a name="width" id="cdk-monitoring-constructs.AuroraClusterMonitoring.createLatencyWidget.parameter.width"></a>
+
+- *Type:* number
+
+---
+
+###### `height`<sup>Required</sup> <a name="height" id="cdk-monitoring-constructs.AuroraClusterMonitoring.createLatencyWidget.parameter.height"></a>
+
+- *Type:* number
+
+---
+
+##### `createServerlessDatabaseCapacityWidget` <a name="createServerlessDatabaseCapacityWidget" id="cdk-monitoring-constructs.AuroraClusterMonitoring.createServerlessDatabaseCapacityWidget"></a>
+
+```typescript
+public createServerlessDatabaseCapacityWidget(width: number, height: number): GraphWidget
+```
+
+###### `width`<sup>Required</sup> <a name="width" id="cdk-monitoring-constructs.AuroraClusterMonitoring.createServerlessDatabaseCapacityWidget.parameter.width"></a>
+
+- *Type:* number
+
+---
+
+###### `height`<sup>Required</sup> <a name="height" id="cdk-monitoring-constructs.AuroraClusterMonitoring.createServerlessDatabaseCapacityWidget.parameter.height"></a>
+
+- *Type:* number
+
+---
+
+##### `createTitleWidget` <a name="createTitleWidget" id="cdk-monitoring-constructs.AuroraClusterMonitoring.createTitleWidget"></a>
+
+```typescript
+public createTitleWidget(): MonitoringHeaderWidget
+```
+
+
+#### Properties <a name="Properties" id="Properties"></a>
+
+| **Name** | **Type** | **Description** |
+| --- | --- | --- |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.property.commitLatencyMetric">commitLatencyMetric</a></code> | <code>aws-cdk-lib.aws_cloudwatch.Metric \| aws-cdk-lib.aws_cloudwatch.MathExpression</code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.property.connectionAlarmFactory">connectionAlarmFactory</a></code> | <code><a href="#cdk-monitoring-constructs.ConnectionAlarmFactory">ConnectionAlarmFactory</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.property.connectionAnnotations">connectionAnnotations</a></code> | <code>aws-cdk-lib.aws_cloudwatch.HorizontalAnnotation[]</code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.property.connectionsMetric">connectionsMetric</a></code> | <code>aws-cdk-lib.aws_cloudwatch.Metric \| aws-cdk-lib.aws_cloudwatch.MathExpression</code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.property.cpuUsageMetric">cpuUsageMetric</a></code> | <code>aws-cdk-lib.aws_cloudwatch.Metric \| aws-cdk-lib.aws_cloudwatch.MathExpression</code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.property.deleteLatencyMetric">deleteLatencyMetric</a></code> | <code>aws-cdk-lib.aws_cloudwatch.Metric \| aws-cdk-lib.aws_cloudwatch.MathExpression</code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.property.insertLatencyMetric">insertLatencyMetric</a></code> | <code>aws-cdk-lib.aws_cloudwatch.Metric \| aws-cdk-lib.aws_cloudwatch.MathExpression</code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.property.selectLatencyMetric">selectLatencyMetric</a></code> | <code>aws-cdk-lib.aws_cloudwatch.Metric \| aws-cdk-lib.aws_cloudwatch.MathExpression</code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.property.serverlessCapacityAnnotations">serverlessCapacityAnnotations</a></code> | <code>aws-cdk-lib.aws_cloudwatch.HorizontalAnnotation[]</code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.property.serverlessDatabaseCapacityMetric">serverlessDatabaseCapacityMetric</a></code> | <code>aws-cdk-lib.aws_cloudwatch.Metric \| aws-cdk-lib.aws_cloudwatch.MathExpression</code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.property.title">title</a></code> | <code>string</code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.property.updateLatencyMetric">updateLatencyMetric</a></code> | <code>aws-cdk-lib.aws_cloudwatch.Metric \| aws-cdk-lib.aws_cloudwatch.MathExpression</code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.property.usageAlarmFactory">usageAlarmFactory</a></code> | <code><a href="#cdk-monitoring-constructs.UsageAlarmFactory">UsageAlarmFactory</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.property.usageAnnotations">usageAnnotations</a></code> | <code>aws-cdk-lib.aws_cloudwatch.HorizontalAnnotation[]</code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.AuroraClusterMonitoring.property.url">url</a></code> | <code>string</code> | *No description.* |
+
+---
+
+##### `commitLatencyMetric`<sup>Required</sup> <a name="commitLatencyMetric" id="cdk-monitoring-constructs.AuroraClusterMonitoring.property.commitLatencyMetric"></a>
+
+```typescript
+public readonly commitLatencyMetric: Metric | MathExpression;
+```
+
+- *Type:* aws-cdk-lib.aws_cloudwatch.Metric | aws-cdk-lib.aws_cloudwatch.MathExpression
+
+---
+
+##### `connectionAlarmFactory`<sup>Required</sup> <a name="connectionAlarmFactory" id="cdk-monitoring-constructs.AuroraClusterMonitoring.property.connectionAlarmFactory"></a>
+
+```typescript
+public readonly connectionAlarmFactory: ConnectionAlarmFactory;
+```
+
+- *Type:* <a href="#cdk-monitoring-constructs.ConnectionAlarmFactory">ConnectionAlarmFactory</a>
+
+---
+
+##### `connectionAnnotations`<sup>Required</sup> <a name="connectionAnnotations" id="cdk-monitoring-constructs.AuroraClusterMonitoring.property.connectionAnnotations"></a>
+
+```typescript
+public readonly connectionAnnotations: HorizontalAnnotation[];
+```
+
+- *Type:* aws-cdk-lib.aws_cloudwatch.HorizontalAnnotation[]
+
+---
+
+##### `connectionsMetric`<sup>Required</sup> <a name="connectionsMetric" id="cdk-monitoring-constructs.AuroraClusterMonitoring.property.connectionsMetric"></a>
+
+```typescript
+public readonly connectionsMetric: Metric | MathExpression;
+```
+
+- *Type:* aws-cdk-lib.aws_cloudwatch.Metric | aws-cdk-lib.aws_cloudwatch.MathExpression
+
+---
+
+##### `cpuUsageMetric`<sup>Required</sup> <a name="cpuUsageMetric" id="cdk-monitoring-constructs.AuroraClusterMonitoring.property.cpuUsageMetric"></a>
+
+```typescript
+public readonly cpuUsageMetric: Metric | MathExpression;
+```
+
+- *Type:* aws-cdk-lib.aws_cloudwatch.Metric | aws-cdk-lib.aws_cloudwatch.MathExpression
+
+---
+
+##### `deleteLatencyMetric`<sup>Required</sup> <a name="deleteLatencyMetric" id="cdk-monitoring-constructs.AuroraClusterMonitoring.property.deleteLatencyMetric"></a>
+
+```typescript
+public readonly deleteLatencyMetric: Metric | MathExpression;
+```
+
+- *Type:* aws-cdk-lib.aws_cloudwatch.Metric | aws-cdk-lib.aws_cloudwatch.MathExpression
+
+---
+
+##### `insertLatencyMetric`<sup>Required</sup> <a name="insertLatencyMetric" id="cdk-monitoring-constructs.AuroraClusterMonitoring.property.insertLatencyMetric"></a>
+
+```typescript
+public readonly insertLatencyMetric: Metric | MathExpression;
+```
+
+- *Type:* aws-cdk-lib.aws_cloudwatch.Metric | aws-cdk-lib.aws_cloudwatch.MathExpression
+
+---
+
+##### `selectLatencyMetric`<sup>Required</sup> <a name="selectLatencyMetric" id="cdk-monitoring-constructs.AuroraClusterMonitoring.property.selectLatencyMetric"></a>
+
+```typescript
+public readonly selectLatencyMetric: Metric | MathExpression;
+```
+
+- *Type:* aws-cdk-lib.aws_cloudwatch.Metric | aws-cdk-lib.aws_cloudwatch.MathExpression
+
+---
+
+##### `serverlessCapacityAnnotations`<sup>Required</sup> <a name="serverlessCapacityAnnotations" id="cdk-monitoring-constructs.AuroraClusterMonitoring.property.serverlessCapacityAnnotations"></a>
+
+```typescript
+public readonly serverlessCapacityAnnotations: HorizontalAnnotation[];
+```
+
+- *Type:* aws-cdk-lib.aws_cloudwatch.HorizontalAnnotation[]
+
+---
+
+##### `serverlessDatabaseCapacityMetric`<sup>Required</sup> <a name="serverlessDatabaseCapacityMetric" id="cdk-monitoring-constructs.AuroraClusterMonitoring.property.serverlessDatabaseCapacityMetric"></a>
+
+```typescript
+public readonly serverlessDatabaseCapacityMetric: Metric | MathExpression;
+```
+
+- *Type:* aws-cdk-lib.aws_cloudwatch.Metric | aws-cdk-lib.aws_cloudwatch.MathExpression
+
+---
+
+##### `title`<sup>Required</sup> <a name="title" id="cdk-monitoring-constructs.AuroraClusterMonitoring.property.title"></a>
+
+```typescript
+public readonly title: string;
+```
+
+- *Type:* string
+
+---
+
+##### `updateLatencyMetric`<sup>Required</sup> <a name="updateLatencyMetric" id="cdk-monitoring-constructs.AuroraClusterMonitoring.property.updateLatencyMetric"></a>
+
+```typescript
+public readonly updateLatencyMetric: Metric | MathExpression;
+```
+
+- *Type:* aws-cdk-lib.aws_cloudwatch.Metric | aws-cdk-lib.aws_cloudwatch.MathExpression
+
+---
+
+##### `usageAlarmFactory`<sup>Required</sup> <a name="usageAlarmFactory" id="cdk-monitoring-constructs.AuroraClusterMonitoring.property.usageAlarmFactory"></a>
+
+```typescript
+public readonly usageAlarmFactory: UsageAlarmFactory;
+```
+
+- *Type:* <a href="#cdk-monitoring-constructs.UsageAlarmFactory">UsageAlarmFactory</a>
+
+---
+
+##### `usageAnnotations`<sup>Required</sup> <a name="usageAnnotations" id="cdk-monitoring-constructs.AuroraClusterMonitoring.property.usageAnnotations"></a>
+
+```typescript
+public readonly usageAnnotations: HorizontalAnnotation[];
+```
+
+- *Type:* aws-cdk-lib.aws_cloudwatch.HorizontalAnnotation[]
+
+---
+
+##### `url`<sup>Optional</sup> <a name="url" id="cdk-monitoring-constructs.AuroraClusterMonitoring.property.url"></a>
+
+```typescript
+public readonly url: string;
+```
+
+- *Type:* string
+
+---
+
+
 ### AutoScalingGroupMetricFactory <a name="AutoScalingGroupMetricFactory" id="cdk-monitoring-constructs.AutoScalingGroupMetricFactory"></a>
 
 #### Initializers <a name="Initializers" id="cdk-monitoring-constructs.AutoScalingGroupMetricFactory.Initializer"></a>
@@ -60474,6 +61650,7 @@ new RdsClusterMetricFactory(metricFactory: MetricFactory, props: RdsClusterMetri
 | <code><a href="#cdk-monitoring-constructs.RdsClusterMetricFactory.metricFreeStorageInBytes">metricFreeStorageInBytes</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.RdsClusterMetricFactory.metricInsertLatencyP90InMillis">metricInsertLatencyP90InMillis</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.RdsClusterMetricFactory.metricSelectLatencyP90InMillis">metricSelectLatencyP90InMillis</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.RdsClusterMetricFactory.metricServerlessDatabaseCapacity">metricServerlessDatabaseCapacity</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.RdsClusterMetricFactory.metricTotalConnectionCount">metricTotalConnectionCount</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.RdsClusterMetricFactory.metricUpdateLatencyP90InMillis">metricUpdateLatencyP90InMillis</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.RdsClusterMetricFactory.metricUsedStorageInBytes">metricUsedStorageInBytes</a></code> | *No description.* |
@@ -60522,6 +61699,12 @@ public metricInsertLatencyP90InMillis(): Metric | MathExpression
 public metricSelectLatencyP90InMillis(): Metric | MathExpression
 ```
 
+##### `metricServerlessDatabaseCapacity` <a name="metricServerlessDatabaseCapacity" id="cdk-monitoring-constructs.RdsClusterMetricFactory.metricServerlessDatabaseCapacity"></a>
+
+```typescript
+public metricServerlessDatabaseCapacity(): Metric | MathExpression
+```
+
 ##### `metricTotalConnectionCount` <a name="metricTotalConnectionCount" id="cdk-monitoring-constructs.RdsClusterMetricFactory.metricTotalConnectionCount"></a>
 
 ```typescript
@@ -60546,6 +61729,7 @@ public metricUsedStorageInBytes(): Metric | MathExpression
 | **Name** | **Type** | **Description** |
 | --- | --- | --- |
 | <code><a href="#cdk-monitoring-constructs.RdsClusterMetricFactory.property.clusterIdentifier">clusterIdentifier</a></code> | <code>string</code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.RdsClusterMetricFactory.property.cluster">cluster</a></code> | <code>aws-cdk-lib.aws_rds.IDatabaseCluster \| aws-cdk-lib.aws_rds.ServerlessCluster</code> | *No description.* |
 
 ---
 
@@ -60559,6 +61743,16 @@ public readonly clusterIdentifier: string;
 
 ---
 
+##### `cluster`<sup>Optional</sup> <a name="cluster" id="cdk-monitoring-constructs.RdsClusterMetricFactory.property.cluster"></a>
+
+```typescript
+public readonly cluster: IDatabaseCluster | ServerlessCluster;
+```
+
+- *Type:* aws-cdk-lib.aws_rds.IDatabaseCluster | aws-cdk-lib.aws_rds.ServerlessCluster
+
+---
+
 
 ### RdsClusterMonitoring <a name="RdsClusterMonitoring" id="cdk-monitoring-constructs.RdsClusterMonitoring"></a>
 
@@ -66895,6 +68089,7 @@ new UsageAlarmFactory(alarmFactory: AlarmFactory)
 | <code><a href="#cdk-monitoring-constructs.UsageAlarmFactory.addMaxMasterMemoryUsagePercentAlarm">addMaxMasterMemoryUsagePercentAlarm</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.UsageAlarmFactory.addMaxMemoryUsagePercentAlarm">addMaxMemoryUsagePercentAlarm</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.UsageAlarmFactory.addMaxThreadCountUsageAlarm">addMaxThreadCountUsageAlarm</a></code> | *No description.* |
+| <code><a href="#cdk-monitoring-constructs.UsageAlarmFactory.addMaxUsageCountAlarm">addMaxUsageCountAlarm</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.UsageAlarmFactory.addMemoryUsagePercentAlarm">addMemoryUsagePercentAlarm</a></code> | *No description.* |
 | <code><a href="#cdk-monitoring-constructs.UsageAlarmFactory.addMinUsageCountAlarm">addMinUsageCountAlarm</a></code> | *No description.* |
 
@@ -67104,6 +68299,30 @@ public addMaxThreadCountUsageAlarm(percentMetric: Metric | MathExpression, props
 
 ---
 
+##### `addMaxUsageCountAlarm` <a name="addMaxUsageCountAlarm" id="cdk-monitoring-constructs.UsageAlarmFactory.addMaxUsageCountAlarm"></a>
+
+```typescript
+public addMaxUsageCountAlarm(metric: Metric | MathExpression, props: UsageCountThreshold, disambiguator?: string): AlarmWithAnnotation
+```
+
+###### `metric`<sup>Required</sup> <a name="metric" id="cdk-monitoring-constructs.UsageAlarmFactory.addMaxUsageCountAlarm.parameter.metric"></a>
+
+- *Type:* aws-cdk-lib.aws_cloudwatch.Metric | aws-cdk-lib.aws_cloudwatch.MathExpression
+
+---
+
+###### `props`<sup>Required</sup> <a name="props" id="cdk-monitoring-constructs.UsageAlarmFactory.addMaxUsageCountAlarm.parameter.props"></a>
+
+- *Type:* <a href="#cdk-monitoring-constructs.UsageCountThreshold">UsageCountThreshold</a>
+
+---
+
+###### `disambiguator`<sup>Optional</sup> <a name="disambiguator" id="cdk-monitoring-constructs.UsageAlarmFactory.addMaxUsageCountAlarm.parameter.disambiguator"></a>
+
+- *Type:* string
+
+---
+
 ##### `addMemoryUsagePercentAlarm` <a name="addMemoryUsagePercentAlarm" id="cdk-monitoring-constructs.UsageAlarmFactory.addMemoryUsagePercentAlarm"></a>
 
 ```typescript
@@ -67870,7 +69089,7 @@ Dashboard placement override props.
 
 ### IDashboardSegment <a name="IDashboardSegment" id="cdk-monitoring-constructs.IDashboardSegment"></a>
 
-- *Implemented By:* <a href="#cdk-monitoring-constructs.ApiGatewayMonitoring">ApiGatewayMonitoring</a>, <a href="#cdk-monitoring-constructs.ApiGatewayV2HttpApiMonitoring">ApiGatewayV2HttpApiMonitoring</a>, <a href="#cdk-monitoring-constructs.AppSyncMonitoring">AppSyncMonitoring</a>, <a href="#cdk-monitoring-constructs.AutoScalingGroupMonitoring">AutoScalingGroupMonitoring</a>, <a href="#cdk-monitoring-constructs.BillingMonitoring">BillingMonitoring</a>, <a href="#cdk-monitoring-constructs.CertificateManagerMonitoring">CertificateManagerMonitoring</a>, <a href="#cdk-monitoring-constructs.CloudFrontDistributionMonitoring">CloudFrontDistributionMonitoring</a>, <a href="#cdk-monitoring-constructs.CodeBuildProjectMonitoring">CodeBuildProjectMonitoring</a>, <a href="#cdk-monitoring-constructs.CustomMonitoring">CustomMonitoring</a>, <a href="#cdk-monitoring-constructs.DocumentDbMonitoring">DocumentDbMonitoring</a>, <a href="#cdk-monitoring-constructs.DynamoTableGlobalSecondaryIndexMonitoring">DynamoTableGlobalSecondaryIndexMonitoring</a>, <a href="#cdk-monitoring-constructs.DynamoTableMonitoring">DynamoTableMonitoring</a>, <a href="#cdk-monitoring-constructs.EC2Monitoring">EC2Monitoring</a>, <a href="#cdk-monitoring-constructs.Ec2ServiceMonitoring">Ec2ServiceMonitoring</a>, <a href="#cdk-monitoring-constructs.ElastiCacheClusterMonitoring">ElastiCacheClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.FargateServiceMonitoring">FargateServiceMonitoring</a>, <a href="#cdk-monitoring-constructs.GlueJobMonitoring">GlueJobMonitoring</a>, <a href="#cdk-monitoring-constructs.KinesisDataAnalyticsMonitoring">KinesisDataAnalyticsMonitoring</a>, <a href="#cdk-monitoring-constructs.KinesisDataStreamMonitoring">KinesisDataStreamMonitoring</a>, <a href="#cdk-monitoring-constructs.KinesisFirehoseMonitoring">KinesisFirehoseMonitoring</a>, <a href="#cdk-monitoring-constructs.LambdaFunctionMonitoring">LambdaFunctionMonitoring</a>, <a href="#cdk-monitoring-constructs.LogMonitoring">LogMonitoring</a>, <a href="#cdk-monitoring-constructs.Monitoring">Monitoring</a>, <a href="#cdk-monitoring-constructs.NetworkLoadBalancerMonitoring">NetworkLoadBalancerMonitoring</a>, <a href="#cdk-monitoring-constructs.OpenSearchClusterMonitoring">OpenSearchClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.RdsClusterMonitoring">RdsClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.RedshiftClusterMonitoring">RedshiftClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.S3BucketMonitoring">S3BucketMonitoring</a>, <a href="#cdk-monitoring-constructs.SecretsManagerMonitoring">SecretsManagerMonitoring</a>, <a href="#cdk-monitoring-constructs.SecretsManagerSecretMonitoring">SecretsManagerSecretMonitoring</a>, <a href="#cdk-monitoring-constructs.SingleWidgetDashboardSegment">SingleWidgetDashboardSegment</a>, <a href="#cdk-monitoring-constructs.SnsTopicMonitoring">SnsTopicMonitoring</a>, <a href="#cdk-monitoring-constructs.SqsQueueMonitoring">SqsQueueMonitoring</a>, <a href="#cdk-monitoring-constructs.SqsQueueMonitoringWithDlq">SqsQueueMonitoringWithDlq</a>, <a href="#cdk-monitoring-constructs.StepFunctionActivityMonitoring">StepFunctionActivityMonitoring</a>, <a href="#cdk-monitoring-constructs.StepFunctionLambdaIntegrationMonitoring">StepFunctionLambdaIntegrationMonitoring</a>, <a href="#cdk-monitoring-constructs.StepFunctionMonitoring">StepFunctionMonitoring</a>, <a href="#cdk-monitoring-constructs.StepFunctionServiceIntegrationMonitoring">StepFunctionServiceIntegrationMonitoring</a>, <a href="#cdk-monitoring-constructs.SyntheticsCanaryMonitoring">SyntheticsCanaryMonitoring</a>, <a href="#cdk-monitoring-constructs.WafV2Monitoring">WafV2Monitoring</a>, <a href="#cdk-monitoring-constructs.IDashboardSegment">IDashboardSegment</a>
+- *Implemented By:* <a href="#cdk-monitoring-constructs.ApiGatewayMonitoring">ApiGatewayMonitoring</a>, <a href="#cdk-monitoring-constructs.ApiGatewayV2HttpApiMonitoring">ApiGatewayV2HttpApiMonitoring</a>, <a href="#cdk-monitoring-constructs.AppSyncMonitoring">AppSyncMonitoring</a>, <a href="#cdk-monitoring-constructs.AuroraClusterMonitoring">AuroraClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.AutoScalingGroupMonitoring">AutoScalingGroupMonitoring</a>, <a href="#cdk-monitoring-constructs.BillingMonitoring">BillingMonitoring</a>, <a href="#cdk-monitoring-constructs.CertificateManagerMonitoring">CertificateManagerMonitoring</a>, <a href="#cdk-monitoring-constructs.CloudFrontDistributionMonitoring">CloudFrontDistributionMonitoring</a>, <a href="#cdk-monitoring-constructs.CodeBuildProjectMonitoring">CodeBuildProjectMonitoring</a>, <a href="#cdk-monitoring-constructs.CustomMonitoring">CustomMonitoring</a>, <a href="#cdk-monitoring-constructs.DocumentDbMonitoring">DocumentDbMonitoring</a>, <a href="#cdk-monitoring-constructs.DynamoTableGlobalSecondaryIndexMonitoring">DynamoTableGlobalSecondaryIndexMonitoring</a>, <a href="#cdk-monitoring-constructs.DynamoTableMonitoring">DynamoTableMonitoring</a>, <a href="#cdk-monitoring-constructs.EC2Monitoring">EC2Monitoring</a>, <a href="#cdk-monitoring-constructs.Ec2ServiceMonitoring">Ec2ServiceMonitoring</a>, <a href="#cdk-monitoring-constructs.ElastiCacheClusterMonitoring">ElastiCacheClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.FargateServiceMonitoring">FargateServiceMonitoring</a>, <a href="#cdk-monitoring-constructs.GlueJobMonitoring">GlueJobMonitoring</a>, <a href="#cdk-monitoring-constructs.KinesisDataAnalyticsMonitoring">KinesisDataAnalyticsMonitoring</a>, <a href="#cdk-monitoring-constructs.KinesisDataStreamMonitoring">KinesisDataStreamMonitoring</a>, <a href="#cdk-monitoring-constructs.KinesisFirehoseMonitoring">KinesisFirehoseMonitoring</a>, <a href="#cdk-monitoring-constructs.LambdaFunctionMonitoring">LambdaFunctionMonitoring</a>, <a href="#cdk-monitoring-constructs.LogMonitoring">LogMonitoring</a>, <a href="#cdk-monitoring-constructs.Monitoring">Monitoring</a>, <a href="#cdk-monitoring-constructs.NetworkLoadBalancerMonitoring">NetworkLoadBalancerMonitoring</a>, <a href="#cdk-monitoring-constructs.OpenSearchClusterMonitoring">OpenSearchClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.RdsClusterMonitoring">RdsClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.RedshiftClusterMonitoring">RedshiftClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.S3BucketMonitoring">S3BucketMonitoring</a>, <a href="#cdk-monitoring-constructs.SecretsManagerMonitoring">SecretsManagerMonitoring</a>, <a href="#cdk-monitoring-constructs.SecretsManagerSecretMonitoring">SecretsManagerSecretMonitoring</a>, <a href="#cdk-monitoring-constructs.SingleWidgetDashboardSegment">SingleWidgetDashboardSegment</a>, <a href="#cdk-monitoring-constructs.SnsTopicMonitoring">SnsTopicMonitoring</a>, <a href="#cdk-monitoring-constructs.SqsQueueMonitoring">SqsQueueMonitoring</a>, <a href="#cdk-monitoring-constructs.SqsQueueMonitoringWithDlq">SqsQueueMonitoringWithDlq</a>, <a href="#cdk-monitoring-constructs.StepFunctionActivityMonitoring">StepFunctionActivityMonitoring</a>, <a href="#cdk-monitoring-constructs.StepFunctionLambdaIntegrationMonitoring">StepFunctionLambdaIntegrationMonitoring</a>, <a href="#cdk-monitoring-constructs.StepFunctionMonitoring">StepFunctionMonitoring</a>, <a href="#cdk-monitoring-constructs.StepFunctionServiceIntegrationMonitoring">StepFunctionServiceIntegrationMonitoring</a>, <a href="#cdk-monitoring-constructs.SyntheticsCanaryMonitoring">SyntheticsCanaryMonitoring</a>, <a href="#cdk-monitoring-constructs.WafV2Monitoring">WafV2Monitoring</a>, <a href="#cdk-monitoring-constructs.IDashboardSegment">IDashboardSegment</a>
 
 #### Methods <a name="Methods" id="Methods"></a>
 
@@ -67961,7 +69180,7 @@ Gets the dashboard for the requested dashboard type.
 
 ### IDynamicDashboardSegment <a name="IDynamicDashboardSegment" id="cdk-monitoring-constructs.IDynamicDashboardSegment"></a>
 
-- *Implemented By:* <a href="#cdk-monitoring-constructs.ApiGatewayMonitoring">ApiGatewayMonitoring</a>, <a href="#cdk-monitoring-constructs.ApiGatewayV2HttpApiMonitoring">ApiGatewayV2HttpApiMonitoring</a>, <a href="#cdk-monitoring-constructs.AppSyncMonitoring">AppSyncMonitoring</a>, <a href="#cdk-monitoring-constructs.AutoScalingGroupMonitoring">AutoScalingGroupMonitoring</a>, <a href="#cdk-monitoring-constructs.BillingMonitoring">BillingMonitoring</a>, <a href="#cdk-monitoring-constructs.CertificateManagerMonitoring">CertificateManagerMonitoring</a>, <a href="#cdk-monitoring-constructs.CloudFrontDistributionMonitoring">CloudFrontDistributionMonitoring</a>, <a href="#cdk-monitoring-constructs.CodeBuildProjectMonitoring">CodeBuildProjectMonitoring</a>, <a href="#cdk-monitoring-constructs.CustomMonitoring">CustomMonitoring</a>, <a href="#cdk-monitoring-constructs.DocumentDbMonitoring">DocumentDbMonitoring</a>, <a href="#cdk-monitoring-constructs.DynamoTableGlobalSecondaryIndexMonitoring">DynamoTableGlobalSecondaryIndexMonitoring</a>, <a href="#cdk-monitoring-constructs.DynamoTableMonitoring">DynamoTableMonitoring</a>, <a href="#cdk-monitoring-constructs.EC2Monitoring">EC2Monitoring</a>, <a href="#cdk-monitoring-constructs.Ec2ServiceMonitoring">Ec2ServiceMonitoring</a>, <a href="#cdk-monitoring-constructs.ElastiCacheClusterMonitoring">ElastiCacheClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.FargateServiceMonitoring">FargateServiceMonitoring</a>, <a href="#cdk-monitoring-constructs.GlueJobMonitoring">GlueJobMonitoring</a>, <a href="#cdk-monitoring-constructs.KinesisDataAnalyticsMonitoring">KinesisDataAnalyticsMonitoring</a>, <a href="#cdk-monitoring-constructs.KinesisDataStreamMonitoring">KinesisDataStreamMonitoring</a>, <a href="#cdk-monitoring-constructs.KinesisFirehoseMonitoring">KinesisFirehoseMonitoring</a>, <a href="#cdk-monitoring-constructs.LambdaFunctionMonitoring">LambdaFunctionMonitoring</a>, <a href="#cdk-monitoring-constructs.LogMonitoring">LogMonitoring</a>, <a href="#cdk-monitoring-constructs.Monitoring">Monitoring</a>, <a href="#cdk-monitoring-constructs.NetworkLoadBalancerMonitoring">NetworkLoadBalancerMonitoring</a>, <a href="#cdk-monitoring-constructs.OpenSearchClusterMonitoring">OpenSearchClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.RdsClusterMonitoring">RdsClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.RedshiftClusterMonitoring">RedshiftClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.S3BucketMonitoring">S3BucketMonitoring</a>, <a href="#cdk-monitoring-constructs.SecretsManagerMonitoring">SecretsManagerMonitoring</a>, <a href="#cdk-monitoring-constructs.SecretsManagerSecretMonitoring">SecretsManagerSecretMonitoring</a>, <a href="#cdk-monitoring-constructs.SingleWidgetDashboardSegment">SingleWidgetDashboardSegment</a>, <a href="#cdk-monitoring-constructs.SnsTopicMonitoring">SnsTopicMonitoring</a>, <a href="#cdk-monitoring-constructs.SqsQueueMonitoring">SqsQueueMonitoring</a>, <a href="#cdk-monitoring-constructs.SqsQueueMonitoringWithDlq">SqsQueueMonitoringWithDlq</a>, <a href="#cdk-monitoring-constructs.StaticSegmentDynamicAdapter">StaticSegmentDynamicAdapter</a>, <a href="#cdk-monitoring-constructs.StepFunctionActivityMonitoring">StepFunctionActivityMonitoring</a>, <a href="#cdk-monitoring-constructs.StepFunctionLambdaIntegrationMonitoring">StepFunctionLambdaIntegrationMonitoring</a>, <a href="#cdk-monitoring-constructs.StepFunctionMonitoring">StepFunctionMonitoring</a>, <a href="#cdk-monitoring-constructs.StepFunctionServiceIntegrationMonitoring">StepFunctionServiceIntegrationMonitoring</a>, <a href="#cdk-monitoring-constructs.SyntheticsCanaryMonitoring">SyntheticsCanaryMonitoring</a>, <a href="#cdk-monitoring-constructs.WafV2Monitoring">WafV2Monitoring</a>, <a href="#cdk-monitoring-constructs.IDynamicDashboardSegment">IDynamicDashboardSegment</a>
+- *Implemented By:* <a href="#cdk-monitoring-constructs.ApiGatewayMonitoring">ApiGatewayMonitoring</a>, <a href="#cdk-monitoring-constructs.ApiGatewayV2HttpApiMonitoring">ApiGatewayV2HttpApiMonitoring</a>, <a href="#cdk-monitoring-constructs.AppSyncMonitoring">AppSyncMonitoring</a>, <a href="#cdk-monitoring-constructs.AuroraClusterMonitoring">AuroraClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.AutoScalingGroupMonitoring">AutoScalingGroupMonitoring</a>, <a href="#cdk-monitoring-constructs.BillingMonitoring">BillingMonitoring</a>, <a href="#cdk-monitoring-constructs.CertificateManagerMonitoring">CertificateManagerMonitoring</a>, <a href="#cdk-monitoring-constructs.CloudFrontDistributionMonitoring">CloudFrontDistributionMonitoring</a>, <a href="#cdk-monitoring-constructs.CodeBuildProjectMonitoring">CodeBuildProjectMonitoring</a>, <a href="#cdk-monitoring-constructs.CustomMonitoring">CustomMonitoring</a>, <a href="#cdk-monitoring-constructs.DocumentDbMonitoring">DocumentDbMonitoring</a>, <a href="#cdk-monitoring-constructs.DynamoTableGlobalSecondaryIndexMonitoring">DynamoTableGlobalSecondaryIndexMonitoring</a>, <a href="#cdk-monitoring-constructs.DynamoTableMonitoring">DynamoTableMonitoring</a>, <a href="#cdk-monitoring-constructs.EC2Monitoring">EC2Monitoring</a>, <a href="#cdk-monitoring-constructs.Ec2ServiceMonitoring">Ec2ServiceMonitoring</a>, <a href="#cdk-monitoring-constructs.ElastiCacheClusterMonitoring">ElastiCacheClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.FargateServiceMonitoring">FargateServiceMonitoring</a>, <a href="#cdk-monitoring-constructs.GlueJobMonitoring">GlueJobMonitoring</a>, <a href="#cdk-monitoring-constructs.KinesisDataAnalyticsMonitoring">KinesisDataAnalyticsMonitoring</a>, <a href="#cdk-monitoring-constructs.KinesisDataStreamMonitoring">KinesisDataStreamMonitoring</a>, <a href="#cdk-monitoring-constructs.KinesisFirehoseMonitoring">KinesisFirehoseMonitoring</a>, <a href="#cdk-monitoring-constructs.LambdaFunctionMonitoring">LambdaFunctionMonitoring</a>, <a href="#cdk-monitoring-constructs.LogMonitoring">LogMonitoring</a>, <a href="#cdk-monitoring-constructs.Monitoring">Monitoring</a>, <a href="#cdk-monitoring-constructs.NetworkLoadBalancerMonitoring">NetworkLoadBalancerMonitoring</a>, <a href="#cdk-monitoring-constructs.OpenSearchClusterMonitoring">OpenSearchClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.RdsClusterMonitoring">RdsClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.RedshiftClusterMonitoring">RedshiftClusterMonitoring</a>, <a href="#cdk-monitoring-constructs.S3BucketMonitoring">S3BucketMonitoring</a>, <a href="#cdk-monitoring-constructs.SecretsManagerMonitoring">SecretsManagerMonitoring</a>, <a href="#cdk-monitoring-constructs.SecretsManagerSecretMonitoring">SecretsManagerSecretMonitoring</a>, <a href="#cdk-monitoring-constructs.SingleWidgetDashboardSegment">SingleWidgetDashboardSegment</a>, <a href="#cdk-monitoring-constructs.SnsTopicMonitoring">SnsTopicMonitoring</a>, <a href="#cdk-monitoring-constructs.SqsQueueMonitoring">SqsQueueMonitoring</a>, <a href="#cdk-monitoring-constructs.SqsQueueMonitoringWithDlq">SqsQueueMonitoringWithDlq</a>, <a href="#cdk-monitoring-constructs.StaticSegmentDynamicAdapter">StaticSegmentDynamicAdapter</a>, <a href="#cdk-monitoring-constructs.StepFunctionActivityMonitoring">StepFunctionActivityMonitoring</a>, <a href="#cdk-monitoring-constructs.StepFunctionLambdaIntegrationMonitoring">StepFunctionLambdaIntegrationMonitoring</a>, <a href="#cdk-monitoring-constructs.StepFunctionMonitoring">StepFunctionMonitoring</a>, <a href="#cdk-monitoring-constructs.StepFunctionServiceIntegrationMonitoring">StepFunctionServiceIntegrationMonitoring</a>, <a href="#cdk-monitoring-constructs.SyntheticsCanaryMonitoring">SyntheticsCanaryMonitoring</a>, <a href="#cdk-monitoring-constructs.WafV2Monitoring">WafV2Monitoring</a>, <a href="#cdk-monitoring-constructs.IDynamicDashboardSegment">IDynamicDashboardSegment</a>
 
 #### Methods <a name="Methods" id="Methods"></a>
 
diff --git a/README.md b/README.md
index edd3219c..bc3c8efc 100644
--- a/README.md
+++ b/README.md
@@ -65,6 +65,7 @@ You can browse the documentation at https://constructs.dev/packages/cdk-monitori
 | AWS API Gateway (REST API) (`.monitorApiGateway()`) | TPS, latency, errors | Latency, error count/rate, low/high TPS | To see metrics, you have to enable Advanced Monitoring |
 | AWS API Gateway V2 (HTTP API) (`.monitorApiGatewayV2HttpApi()`) | TPS, latency, errors | Latency, error count/rate, low/high TPS | To see route level metrics, you have to enable Advanced Monitoring |
 | AWS AppSync (GraphQL API) (`.monitorAppSyncApi()`) | TPS, latency, errors | Latency, error count/rate, low/high TPS | |
+| Amazon Aurora (`.monitorAuroraCluster()`) | Query duration, connections, latency, CPU usage, Serverless Database Capacity | Connections, Serverless Database Capacity and CPU usage | |
 | AWS Billing (`.monitorBilling()`) | AWS account cost | Total cost (anomaly) | [Requires enabling](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/gs_monitor_estimated_charges_with_cloudwatch.html#gs_turning_on_billing_metrics) the **Receive Billing Alerts** option in AWS Console / Billing Preferences |
 | AWS Certificate Manager (`.monitorCertificate()`) | Certificate expiration | Days until expiration | |
 | AWS CloudFront (`.monitorCloudFrontDistribution()`) | TPS, traffic, latency, errors | Error rate, low/high TPS | |
diff --git a/lib/common/monitoring/alarms/AuroraAlarmFactory.ts b/lib/common/monitoring/alarms/AuroraAlarmFactory.ts
new file mode 100644
index 00000000..538b4472
--- /dev/null
+++ b/lib/common/monitoring/alarms/AuroraAlarmFactory.ts
@@ -0,0 +1,39 @@
+import {
+  ComparisonOperator,
+  TreatMissingData,
+} from "aws-cdk-lib/aws-cloudwatch";
+
+import { AlarmFactory, CustomAlarmThreshold } from "../../alarm";
+import { MetricWithAlarmSupport } from "../../metric";
+
+export interface HighServerlessDatabaseCapacityThreshold
+  extends CustomAlarmThreshold {
+  readonly maxServerlessDatabaseCapacity: number;
+}
+
+export class AuroraAlarmFactory {
+  protected readonly alarmFactory: AlarmFactory;
+
+  constructor(alarmFactory: AlarmFactory) {
+    this.alarmFactory = alarmFactory;
+  }
+
+  addMaxServerlessDatabaseCapacity(
+    metric: MetricWithAlarmSupport,
+    props: HighServerlessDatabaseCapacityThreshold,
+    disambiguator?: string
+  ) {
+    return this.alarmFactory.addAlarm(metric, {
+      treatMissingData:
+        props.treatMissingDataOverride ?? TreatMissingData.MISSING,
+      comparisonOperator:
+        props.comparisonOperatorOverride ??
+        ComparisonOperator.GREATER_THAN_THRESHOLD,
+      ...props,
+      disambiguator,
+      threshold: props.maxServerlessDatabaseCapacity,
+      alarmNameSuffix: "Serverless-Database-Capacity-High",
+      alarmDescription: "Serverless Database Capacity usage is too high.",
+    });
+  }
+}
diff --git a/lib/common/monitoring/alarms/UsageAlarmFactory.ts b/lib/common/monitoring/alarms/UsageAlarmFactory.ts
index 0992b441..91f62ebc 100644
--- a/lib/common/monitoring/alarms/UsageAlarmFactory.ts
+++ b/lib/common/monitoring/alarms/UsageAlarmFactory.ts
@@ -37,6 +37,25 @@ export class UsageAlarmFactory {
     this.alarmFactory = alarmFactory;
   }
 
+  addMaxUsageCountAlarm(
+    metric: MetricWithAlarmSupport,
+    props: UsageCountThreshold,
+    disambiguator?: string
+  ) {
+    return this.alarmFactory.addAlarm(metric, {
+      treatMissingData:
+        props.treatMissingDataOverride ?? TreatMissingData.MISSING,
+      comparisonOperator:
+        props.comparisonOperatorOverride ??
+        ComparisonOperator.GREATER_THAN_THRESHOLD,
+      ...props,
+      disambiguator,
+      threshold: props.maxUsageCount,
+      alarmNameSuffix: "Usage-Count",
+      alarmDescription: "The count is too high.",
+    });
+  }
+
   addMinUsageCountAlarm(
     percentMetric: MetricWithAlarmSupport,
     props: MinUsageCountThreshold,
diff --git a/lib/common/monitoring/alarms/index.ts b/lib/common/monitoring/alarms/index.ts
index fb7cc70f..6a0934ca 100644
--- a/lib/common/monitoring/alarms/index.ts
+++ b/lib/common/monitoring/alarms/index.ts
@@ -1,5 +1,6 @@
 export * from "./AgeAlarmFactory";
 export * from "./AnomalyDetectingAlarmFactory";
+export * from "./AuroraAlarmFactory";
 export * from "./CustomAlarmFactory";
 export * from "./ConnectionAlarmFactory";
 export * from "./DynamoAlarmFactory";
diff --git a/lib/facade/IMonitoringAspect.ts b/lib/facade/IMonitoringAspect.ts
index cdc04594..b30c1dd9 100644
--- a/lib/facade/IMonitoringAspect.ts
+++ b/lib/facade/IMonitoringAspect.ts
@@ -2,6 +2,7 @@ import {
   ApiGatewayMonitoringOptions,
   ApiGatewayV2MonitoringOptions,
   AppSyncMonitoringOptions,
+  AuroraClusterMonitoringOptions,
   AutoScalingGroupMonitoringOptions,
   BillingMonitoringOptions,
   CertificateManagerMonitoringOptions,
@@ -47,6 +48,7 @@ export interface MonitoringAspectProps {
   readonly apiGateway?: MonitoringAspectType<ApiGatewayMonitoringOptions>;
   readonly apiGatewayV2?: MonitoringAspectType<ApiGatewayV2MonitoringOptions>;
   readonly appSync?: MonitoringAspectType<AppSyncMonitoringOptions>;
+  readonly auroraCluster?: MonitoringAspectType<AuroraClusterMonitoringOptions>;
   readonly autoScalingGroup?: MonitoringAspectType<AutoScalingGroupMonitoringOptions>;
   readonly billing?: MonitoringAspectType<BillingMonitoringOptions>;
   readonly cloudFront?: MonitoringAspectType<CloudFrontDistributionMonitoringOptions>;
diff --git a/lib/facade/MonitoringAspect.ts b/lib/facade/MonitoringAspect.ts
index 5883c55a..637a7086 100644
--- a/lib/facade/MonitoringAspect.ts
+++ b/lib/facade/MonitoringAspect.ts
@@ -52,6 +52,7 @@ export class MonitoringAspect implements IAspect {
     this.monitorApiGateway(node);
     this.monitorApiGatewayV2(node);
     this.monitorAppSync(node);
+    this.monitorAuroraCluster(node);
     this.monitorAutoScalingGroup(node);
     this.monitorCloudFront(node);
     this.monitorCodeBuild(node);
@@ -135,6 +136,19 @@ export class MonitoringAspect implements IAspect {
     }
   }
 
+  private monitorAuroraCluster(node: IConstruct) {
+    const [isEnabled, props] = this.getMonitoringDetails(
+      this.props.auroraCluster
+    );
+    if (isEnabled && node instanceof rds.ServerlessCluster) {
+      this.monitoringFacade.monitorAuroraCluster({
+        cluster: node,
+        alarmFriendlyName: node.node.path,
+        ...props,
+      });
+    }
+  }
+
   private monitorAutoScalingGroup(node: IConstruct) {
     const [isEnabled, props] = this.getMonitoringDetails(
       this.props.autoScalingGroup
diff --git a/lib/facade/MonitoringFacade.ts b/lib/facade/MonitoringFacade.ts
index d49b4946..7723dceb 100644
--- a/lib/facade/MonitoringFacade.ts
+++ b/lib/facade/MonitoringFacade.ts
@@ -38,6 +38,8 @@ import {
   ApiGatewayV2HttpApiMonitoringProps,
   AppSyncMonitoring,
   AppSyncMonitoringProps,
+  AuroraClusterMonitoring,
+  AuroraClusterMonitoringProps,
   AutoScalingGroupMonitoring,
   AutoScalingGroupMonitoringProps,
   BillingMonitoring,
@@ -415,6 +417,12 @@ export class MonitoringFacade extends MonitoringScope {
     return this;
   }
 
+  monitorAuroraCluster(props: AuroraClusterMonitoringProps) {
+    const segment = new AuroraClusterMonitoring(this, props);
+    this.addSegment(segment, props);
+    return this;
+  }
+
   monitorCertificate(props: CertificateManagerMonitoringProps) {
     const segment = new CertificateManagerMonitoring(this, props);
     this.addSegment(segment, props);
diff --git a/lib/monitoring/aws-rds/AuroraClusterMonitoring.ts b/lib/monitoring/aws-rds/AuroraClusterMonitoring.ts
new file mode 100644
index 00000000..8794ed93
--- /dev/null
+++ b/lib/monitoring/aws-rds/AuroraClusterMonitoring.ts
@@ -0,0 +1,253 @@
+import {
+  GraphWidget,
+  HorizontalAnnotation,
+  IWidget,
+} from "aws-cdk-lib/aws-cloudwatch";
+import { ServerlessCluster } from "aws-cdk-lib/aws-rds";
+
+import {
+  RdsClusterMetricFactory,
+  RdsClusterMetricFactoryProps,
+} from "./RdsClusterMetricFactory";
+import {
+  BaseMonitoringProps,
+  ConnectionAlarmFactory,
+  CountAxisFromZero,
+  DefaultGraphWidgetHeight,
+  HalfWidth,
+  HighConnectionCountThreshold,
+  LowConnectionCountThreshold,
+  MetricWithAlarmSupport,
+  Monitoring,
+  MonitoringScope,
+  PercentageAxisFromZeroToHundred,
+  QuarterWidth,
+  TimeAxisMillisFromZero,
+  UsageAlarmFactory,
+  UsageCountThreshold,
+  UsageThreshold,
+} from "../../common";
+import {
+  MonitoringHeaderWidget,
+  MonitoringNamingStrategy,
+} from "../../dashboard";
+
+export interface AuroraClusterMonitoringOptions extends BaseMonitoringProps {
+  readonly addMaxServerlessDatabaseCapacityAlarm?: Record<
+    string,
+    UsageCountThreshold
+  >;
+  readonly addCpuUsageAlarm?: Record<string, UsageThreshold>;
+  readonly addMinConnectionCountAlarm?: Record<
+    string,
+    LowConnectionCountThreshold
+  >;
+  readonly addMaxConnectionCountAlarm?: Record<
+    string,
+    HighConnectionCountThreshold
+  >;
+}
+
+export interface AuroraClusterMonitoringProps
+  extends RdsClusterMetricFactoryProps,
+    AuroraClusterMonitoringOptions {}
+
+export class AuroraClusterMonitoring extends Monitoring {
+  readonly title: string;
+  readonly url?: string;
+
+  readonly usageAlarmFactory: UsageAlarmFactory;
+  readonly connectionAlarmFactory: ConnectionAlarmFactory;
+
+  readonly usageAnnotations: HorizontalAnnotation[];
+  readonly connectionAnnotations: HorizontalAnnotation[];
+  readonly serverlessCapacityAnnotations: HorizontalAnnotation[];
+
+  readonly connectionsMetric: MetricWithAlarmSupport;
+  readonly serverlessDatabaseCapacityMetric: MetricWithAlarmSupport;
+  readonly cpuUsageMetric: MetricWithAlarmSupport;
+  readonly selectLatencyMetric: MetricWithAlarmSupport;
+  readonly insertLatencyMetric: MetricWithAlarmSupport;
+  readonly updateLatencyMetric: MetricWithAlarmSupport;
+  readonly deleteLatencyMetric: MetricWithAlarmSupport;
+  readonly commitLatencyMetric: MetricWithAlarmSupport;
+
+  constructor(scope: MonitoringScope, props: AuroraClusterMonitoringProps) {
+    super(scope, props);
+
+    if (!this.isServerlessCluster(props.cluster)) {
+      throw Error(
+        "Cluster is not of type `ServerlessCluster`. Monitoring is not applicable."
+      );
+    }
+
+    const metricFactory = new RdsClusterMetricFactory(
+      scope.createMetricFactory(),
+      props
+    );
+    this.connectionsMetric = metricFactory.metricTotalConnectionCount();
+    this.serverlessDatabaseCapacityMetric =
+      metricFactory.metricServerlessDatabaseCapacity();
+    this.cpuUsageMetric = metricFactory.metricAverageCpuUsageInPercent();
+    this.selectLatencyMetric = metricFactory.metricSelectLatencyP90InMillis();
+    this.insertLatencyMetric = metricFactory.metricInsertLatencyP90InMillis();
+    this.updateLatencyMetric = metricFactory.metricUpdateLatencyP90InMillis();
+    this.deleteLatencyMetric = metricFactory.metricDeleteLatencyP90InMillis();
+    this.commitLatencyMetric = metricFactory.metricCommitLatencyP90InMillis();
+
+    const namingStrategy = new MonitoringNamingStrategy({
+      ...props,
+      fallbackConstructName: metricFactory.clusterIdentifier,
+      namedConstruct: props.cluster,
+    });
+    this.title = namingStrategy.resolveHumanReadableName();
+    this.url = scope
+      .createAwsConsoleUrlFactory()
+      .getRdsClusterUrl(metricFactory.clusterIdentifier);
+    const alarmFactory = this.createAlarmFactory(
+      namingStrategy.resolveAlarmFriendlyName()
+    );
+    this.usageAlarmFactory = new UsageAlarmFactory(alarmFactory);
+    this.connectionAlarmFactory = new ConnectionAlarmFactory(alarmFactory);
+
+    this.usageAnnotations = [];
+    this.connectionAnnotations = [];
+    this.serverlessCapacityAnnotations = [];
+
+    for (const disambiguator in props.addCpuUsageAlarm) {
+      const alarmProps = props.addCpuUsageAlarm[disambiguator];
+      const createdAlarm = this.usageAlarmFactory.addMaxCpuUsagePercentAlarm(
+        this.cpuUsageMetric,
+        alarmProps,
+        disambiguator
+      );
+      this.usageAnnotations.push(createdAlarm.annotation);
+      this.addAlarm(createdAlarm);
+    }
+
+    for (const disambiguator in props.addMinConnectionCountAlarm) {
+      const alarmProps = props.addMinConnectionCountAlarm[disambiguator];
+      const createdAlarm =
+        this.connectionAlarmFactory.addMinConnectionCountAlarm(
+          this.connectionsMetric,
+          alarmProps,
+          disambiguator
+        );
+      this.connectionAnnotations.push(createdAlarm.annotation);
+      this.addAlarm(createdAlarm);
+    }
+
+    for (const disambiguator in props.addMaxConnectionCountAlarm) {
+      const alarmProps = props.addMaxConnectionCountAlarm[disambiguator];
+      const createdAlarm =
+        this.connectionAlarmFactory.addMaxConnectionCountAlarm(
+          this.connectionsMetric,
+          alarmProps,
+          disambiguator
+        );
+      this.connectionAnnotations.push(createdAlarm.annotation);
+      this.addAlarm(createdAlarm);
+    }
+
+    for (const disambiguator in props.addMaxServerlessDatabaseCapacityAlarm) {
+      const alarmProps =
+        props.addMaxServerlessDatabaseCapacityAlarm[disambiguator];
+      const createdAlarm = this.usageAlarmFactory.addMaxUsageCountAlarm(
+        this.serverlessDatabaseCapacityMetric,
+        alarmProps,
+        disambiguator
+      );
+      this.serverlessCapacityAnnotations.push(createdAlarm.annotation);
+      this.addAlarm(createdAlarm);
+    }
+
+    props.useCreatedAlarms?.consume(this.createdAlarms());
+  }
+
+  private isServerlessCluster(obj: any): obj is ServerlessCluster {
+    return (obj as any).clusterArn !== undefined;
+  }
+
+  summaryWidgets(): IWidget[] {
+    return [
+      this.createTitleWidget(),
+      this.createCpuUsageWidget(QuarterWidth, DefaultGraphWidgetHeight),
+      this.createConnectionsWidget(QuarterWidth, DefaultGraphWidgetHeight),
+      this.createLatencyWidget(QuarterWidth, DefaultGraphWidgetHeight),
+      this.createServerlessDatabaseCapacityWidget(
+        QuarterWidth,
+        DefaultGraphWidgetHeight
+      ),
+    ];
+  }
+
+  widgets(): IWidget[] {
+    return [
+      this.createTitleWidget(),
+      this.createCpuUsageWidget(QuarterWidth, DefaultGraphWidgetHeight),
+      this.createConnectionsWidget(QuarterWidth, DefaultGraphWidgetHeight),
+      this.createLatencyWidget(HalfWidth, DefaultGraphWidgetHeight),
+      this.createServerlessDatabaseCapacityWidget(
+        HalfWidth,
+        DefaultGraphWidgetHeight
+      ),
+    ];
+  }
+
+  createTitleWidget() {
+    return new MonitoringHeaderWidget({
+      family: "Aurora Cluster",
+      title: this.title,
+      goToLinkUrl: this.url,
+    });
+  }
+
+  createCpuUsageWidget(width: number, height: number) {
+    return new GraphWidget({
+      width,
+      height,
+      title: "CPU Usage",
+      left: [this.cpuUsageMetric],
+      leftYAxis: PercentageAxisFromZeroToHundred,
+      leftAnnotations: this.usageAnnotations,
+    });
+  }
+
+  createConnectionsWidget(width: number, height: number) {
+    return new GraphWidget({
+      width,
+      height,
+      title: "Connections",
+      left: [this.connectionsMetric],
+      leftYAxis: CountAxisFromZero,
+      leftAnnotations: this.connectionAnnotations,
+    });
+  }
+
+  createLatencyWidget(width: number, height: number) {
+    return new GraphWidget({
+      width,
+      height,
+      title: "Query Duration",
+      left: [
+        this.selectLatencyMetric,
+        this.insertLatencyMetric,
+        this.updateLatencyMetric,
+        this.deleteLatencyMetric,
+        this.commitLatencyMetric,
+      ],
+      leftYAxis: TimeAxisMillisFromZero,
+    });
+  }
+
+  createServerlessDatabaseCapacityWidget(width: number, height: number) {
+    return new GraphWidget({
+      width,
+      height,
+      title: "Serverless Database Capacity",
+      left: [this.serverlessDatabaseCapacityMetric],
+      leftYAxis: CountAxisFromZero,
+      leftAnnotations: this.serverlessCapacityAnnotations,
+    });
+  }
+}
diff --git a/lib/monitoring/aws-rds/RdsClusterMetricFactory.ts b/lib/monitoring/aws-rds/RdsClusterMetricFactory.ts
index 86baa666..04dcf9b7 100644
--- a/lib/monitoring/aws-rds/RdsClusterMetricFactory.ts
+++ b/lib/monitoring/aws-rds/RdsClusterMetricFactory.ts
@@ -1,5 +1,5 @@
 import { DimensionsMap } from "aws-cdk-lib/aws-cloudwatch";
-import { IDatabaseCluster } from "aws-cdk-lib/aws-rds";
+import { IDatabaseCluster, ServerlessCluster } from "aws-cdk-lib/aws-rds";
 
 import { MetricFactory, MetricStatistic } from "../../common";
 
@@ -14,11 +14,12 @@ export interface RdsClusterMetricFactoryProps {
   /**
    * database cluster (either this or `clusterIdentifier` need to be specified)
    */
-  readonly cluster?: IDatabaseCluster;
+  readonly cluster?: IDatabaseCluster | ServerlessCluster;
 }
 
 export class RdsClusterMetricFactory {
   readonly clusterIdentifier: string;
+  readonly cluster?: IDatabaseCluster | ServerlessCluster;
   protected readonly metricFactory: MetricFactory;
   protected readonly dimensionsMap: DimensionsMap;
 
@@ -27,6 +28,7 @@ export class RdsClusterMetricFactory {
     props: RdsClusterMetricFactoryProps
   ) {
     this.metricFactory = metricFactory;
+    this.cluster = props.cluster;
     this.clusterIdentifier =
       RdsClusterMetricFactory.resolveDbClusterIdentifier(props);
     this.dimensionsMap = { DBClusterIdentifier: this.clusterIdentifier };
@@ -51,6 +53,10 @@ export class RdsClusterMetricFactory {
     }
   }
 
+  private isServerlessCluster(obj: any): obj is ServerlessCluster {
+    return (obj as any).clusterArn !== undefined;
+  }
+
   metricTotalConnectionCount() {
     return this.metric(
       "DatabaseConnections",
@@ -101,6 +107,19 @@ export class RdsClusterMetricFactory {
     return this.metric("CommitLatency", MetricStatistic.P90, "Commit");
   }
 
+  metricServerlessDatabaseCapacity() {
+    if (!this.isServerlessCluster(this.cluster)) {
+      throw Error(
+        "Cluster is not of type `ServerlessCluster`. Metric is not applicable"
+      );
+    }
+    return this.metric(
+      "ServerlessDatabaseCapacity",
+      MetricStatistic.AVERAGE,
+      "Serverless Database Capacity"
+    );
+  }
+
   private metric(
     metricName: string,
     statistic: MetricStatistic,
diff --git a/lib/monitoring/aws-rds/index.ts b/lib/monitoring/aws-rds/index.ts
index 25c5a8ec..0a738d86 100644
--- a/lib/monitoring/aws-rds/index.ts
+++ b/lib/monitoring/aws-rds/index.ts
@@ -1,2 +1,3 @@
+export * from "./AuroraClusterMonitoring";
 export * from "./RdsClusterMetricFactory";
 export * from "./RdsClusterMonitoring";


Test patch:
diff --git a/test/monitoring/aws-rds/AuroraClusterMonitoring.test.ts b/test/monitoring/aws-rds/AuroraClusterMonitoring.test.ts
new file mode 100644
index 00000000..27f91303
--- /dev/null
+++ b/test/monitoring/aws-rds/AuroraClusterMonitoring.test.ts
@@ -0,0 +1,131 @@
+import { Stack } from "aws-cdk-lib";
+import { Template } from "aws-cdk-lib/assertions";
+import { InstanceType, SubnetType, Vpc } from "aws-cdk-lib/aws-ec2";
+import {
+  AuroraMysqlEngineVersion,
+  DatabaseCluster,
+  DatabaseClusterEngine,
+  ServerlessCluster,
+} from "aws-cdk-lib/aws-rds";
+
+import { AuroraClusterMonitoring } from "../../../lib";
+import { addMonitoringDashboardsToStack } from "../../utils/SnapshotUtil";
+import { TestMonitoringScope } from "../TestMonitoringScope";
+
+test("snapshot test: no alarms", () => {
+  const stack = new Stack();
+
+  const scope = new TestMonitoringScope(stack, "Scope");
+
+  const auroraCluster = new ServerlessCluster(scope, "DummyAuroraCluster", {
+    clusterIdentifier: "my-aurora-cluster",
+    engine: DatabaseClusterEngine.AURORA_MYSQL,
+  });
+
+  const monitoring = new AuroraClusterMonitoring(scope, {
+    alarmFriendlyName: "DummyAuroraCluster",
+    cluster: auroraCluster,
+  });
+
+  addMonitoringDashboardsToStack(stack, monitoring);
+  expect(Template.fromStack(stack)).toMatchSnapshot();
+});
+
+test("RDS passed into Aurora Cluster", () => {
+  const testGuard = () => {
+    const stack = new Stack();
+    const scope = new TestMonitoringScope(stack, "Scope");
+    const vpc = new Vpc(scope, "DummyVpc", {
+      maxAzs: 3,
+    });
+    const rdsCluster = new DatabaseCluster(scope, "DummyRdsCluster", {
+      engine: DatabaseClusterEngine.auroraMysql({
+        version: AuroraMysqlEngineVersion.VER_2_07_5,
+      }),
+      instanceProps: {
+        instanceType: new InstanceType("t3.small"),
+        vpcSubnets: {
+          subnetType: SubnetType.PUBLIC,
+        },
+        vpc,
+      },
+    });
+
+    new AuroraClusterMonitoring(scope, {
+      alarmFriendlyName: "DummyAuroraCluster",
+      cluster: rdsCluster,
+      addCpuUsageAlarm: {
+        Warning: {
+          maxUsagePercent: 80,
+        },
+      },
+      addMaxConnectionCountAlarm: {
+        Warning: {
+          maxConnectionCount: 100,
+        },
+      },
+      addMinConnectionCountAlarm: {
+        Warning: {
+          minConnectionCount: 0,
+        },
+      },
+      addMaxServerlessDatabaseCapacityAlarm: {
+        Warning: {
+          maxUsageCount: 100,
+        },
+      },
+    });
+  };
+
+  expect(testGuard).toThrow(Error);
+  expect(testGuard).toThrow(
+    "Cluster is not of type `ServerlessCluster`. Monitoring is not applicable."
+  );
+});
+
+test("snapshot test: all alarms", () => {
+  const stack = new Stack();
+
+  const scope = new TestMonitoringScope(stack, "Scope");
+
+  const auroraCluster = new ServerlessCluster(scope, "DummyAuroraCluster", {
+    clusterIdentifier: "my-aurora-cluster",
+    engine: DatabaseClusterEngine.AURORA_MYSQL,
+  });
+
+  let numAlarmsCreated = 0;
+
+  const monitoring = new AuroraClusterMonitoring(scope, {
+    alarmFriendlyName: "DummyAuroraCluster",
+    cluster: auroraCluster,
+    addCpuUsageAlarm: {
+      Warning: {
+        maxUsagePercent: 80,
+      },
+    },
+    addMaxConnectionCountAlarm: {
+      Warning: {
+        maxConnectionCount: 100,
+      },
+    },
+    addMinConnectionCountAlarm: {
+      Warning: {
+        minConnectionCount: 0,
+      },
+    },
+    addMaxServerlessDatabaseCapacityAlarm: {
+      Warning: {
+        maxUsageCount: 100,
+      },
+    },
+    useCreatedAlarms: {
+      consume(alarms) {
+        numAlarmsCreated = alarms.length;
+      },
+    },
+  });
+
+  addMonitoringDashboardsToStack(stack, monitoring);
+  expect(numAlarmsCreated).toStrictEqual(4);
+  expect(Template.fromStack(stack)).toMatchSnapshot();
+});
diff --git a/test/monitoring/aws-rds/__snapshots__/AuroraClusterMonitoring.test.ts.snap b/test/monitoring/aws-rds/__snapshots__/AuroraClusterMonitoring.test.ts.snap
new file mode 100644
index 00000000..2f72c2f1
--- /dev/null
+++ b/test/monitoring/aws-rds/__snapshots__/AuroraClusterMonitoring.test.ts.snap
@@ -0,0 +1,698 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`snapshot test: all alarms 1`] = `
+Object {
+  "Parameters": Object {
+    "BootstrapVersion": Object {
+      "Default": "/cdk-bootstrap/hnb659fds/version",
+      "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]",
+      "Type": "AWS::SSM::Parameter::Value<String>",
+    },
+  },
+  "Resources": Object {
+    "Alarm7103F465": Object {
+      "Properties": Object {
+        "DashboardBody": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{\\"widgets\\":[{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"annotations\\":{\\"alarms\\":[\\"",
+              Object {
+                "Fn::GetAtt": Array [
+                  "ScopeTestDummyAuroraClusterCPUUsageWarning437834D4",
+                  "Arn",
+                ],
+              },
+              "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":6,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"annotations\\":{\\"alarms\\":[\\"",
+              Object {
+                "Fn::GetAtt": Array [
+                  "ScopeTestDummyAuroraClusterConnectionCountLowWarning5B09883B",
+                  "Arn",
+                ],
+              },
+              "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":12,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"annotations\\":{\\"alarms\\":[\\"",
+              Object {
+                "Fn::GetAtt": Array [
+                  "ScopeTestDummyAuroraClusterConnectionCountHighWarning7EDDD90E",
+                  "Arn",
+                ],
+              },
+              "\\"]},\\"yAxis\\":{}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":4,\\"x\\":18,\\"y\\":0,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"annotations\\":{\\"alarms\\":[\\"",
+              Object {
+                "Fn::GetAtt": Array [
+                  "ScopeTestDummyAuroraClusterUsageCountWarning291913E2",
+                  "Arn",
+                ],
+              },
+              "\\"]},\\"yAxis\\":{}}}]}",
+            ],
+          ],
+        },
+      },
+      "Type": "AWS::CloudWatch::Dashboard",
+    },
+    "Resource": Object {
+      "Properties": Object {
+        "DashboardBody": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Aurora Cluster **[DummyAuroraCluster](https://eu-west-1.console.aws.amazon.com/rds/home?region=eu-west-1#database:id=",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              ";is-cluster=true;tab=monitoring)**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Usage\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/RDS\\",\\"CPUUtilization\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"CPU Usage\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"CPU Usage > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Connections\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/RDS\\",\\"DatabaseConnections\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Connections\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Connections < 0 for 3 datapoints within 15 minutes\\",\\"value\\":0,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Connections > 100 for 3 datapoints within 15 minutes\\",\\"value\\":100,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":12,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Query Duration\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/RDS\\",\\"SelectLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Select\\",\\"stat\\":\\"p90\\"}],[\\"AWS/RDS\\",\\"InsertLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Insert\\",\\"stat\\":\\"p90\\"}],[\\"AWS/RDS\\",\\"UpdateLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Update\\",\\"stat\\":\\"p90\\"}],[\\"AWS/RDS\\",\\"DeleteLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Delete\\",\\"stat\\":\\"p90\\"}],[\\"AWS/RDS\\",\\"CommitLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Commit\\",\\"stat\\":\\"p90\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":12,\\"height\\":5,\\"x\\":0,\\"y\\":6,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Serverless Database Capacity\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/RDS\\",\\"ServerlessDatabaseCapacity\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Serverless Database Capacity\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Serverless Database Capacity > 100 for 3 datapoints within 15 minutes\\",\\"value\\":100,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}",
+            ],
+          ],
+        },
+      },
+      "Type": "AWS::CloudWatch::Dashboard",
+    },
+    "ScopeDummyAuroraCluster61A7551D": Object {
+      "DeletionPolicy": "Snapshot",
+      "Properties": Object {
+        "CopyTagsToSnapshot": true,
+        "DBClusterIdentifier": "my-aurora-cluster",
+        "DBClusterParameterGroupName": "default.aurora-mysql5.7",
+        "Engine": "aurora-mysql",
+        "EngineMode": "serverless",
+        "MasterUserPassword": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{{resolve:secretsmanager:",
+              Object {
+                "Ref": "ScopeDummyAuroraClusterSecret18674A5A",
+              },
+              ":SecretString:password::}}",
+            ],
+          ],
+        },
+        "MasterUsername": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{{resolve:secretsmanager:",
+              Object {
+                "Ref": "ScopeDummyAuroraClusterSecret18674A5A",
+              },
+              ":SecretString:username::}}",
+            ],
+          ],
+        },
+        "StorageEncrypted": true,
+        "VpcSecurityGroupIds": Array [],
+      },
+      "Type": "AWS::RDS::DBCluster",
+      "UpdateReplacePolicy": "Snapshot",
+    },
+    "ScopeDummyAuroraClusterSecret18674A5A": Object {
+      "DeletionPolicy": "Delete",
+      "Properties": Object {
+        "Description": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "Generated by the CDK for stack: ",
+              Object {
+                "Ref": "AWS::StackName",
+              },
+            ],
+          ],
+        },
+        "GenerateSecretString": Object {
+          "ExcludeCharacters": " %+~\`#$&*()|[]{}:;<>?!'/@\\"\\\\",
+          "GenerateStringKey": "password",
+          "PasswordLength": 30,
+          "SecretStringTemplate": "{\\"username\\":\\"admin\\"}",
+        },
+      },
+      "Type": "AWS::SecretsManager::Secret",
+      "UpdateReplacePolicy": "Delete",
+    },
+    "ScopeDummyAuroraClusterSecretAttachmentA4BBBBD1": Object {
+      "Properties": Object {
+        "SecretId": Object {
+          "Ref": "ScopeDummyAuroraClusterSecret18674A5A",
+        },
+        "TargetId": Object {
+          "Ref": "ScopeDummyAuroraCluster61A7551D",
+        },
+        "TargetType": "AWS::RDS::DBCluster",
+      },
+      "Type": "AWS::SecretsManager::SecretTargetAttachment",
+    },
+    "ScopeTestDummyAuroraClusterCPUUsageWarning437834D4": Object {
+      "Properties": Object {
+        "ActionsEnabled": true,
+        "AlarmDescription": "The CPU usage is too high.",
+        "AlarmName": "Test-DummyAuroraCluster-CPU-Usage-Warning",
+        "ComparisonOperator": "GreaterThanThreshold",
+        "DatapointsToAlarm": 3,
+        "EvaluationPeriods": 3,
+        "Metrics": Array [
+          Object {
+            "Id": "m1",
+            "Label": "CPU Usage",
+            "MetricStat": Object {
+              "Metric": Object {
+                "Dimensions": Array [
+                  Object {
+                    "Name": "DBClusterIdentifier",
+                    "Value": Object {
+                      "Ref": "ScopeDummyAuroraCluster61A7551D",
+                    },
+                  },
+                ],
+                "MetricName": "CPUUtilization",
+                "Namespace": "AWS/RDS",
+              },
+              "Period": 300,
+              "Stat": "Average",
+            },
+            "ReturnData": true,
+          },
+        ],
+        "Threshold": 80,
+        "TreatMissingData": "missing",
+      },
+      "Type": "AWS::CloudWatch::Alarm",
+    },
+    "ScopeTestDummyAuroraClusterConnectionCountHighWarning7EDDD90E": Object {
+      "Properties": Object {
+        "ActionsEnabled": true,
+        "AlarmDescription": "Number of connections is too high.",
+        "AlarmName": "Test-DummyAuroraCluster-Connection-Count-High-Warning",
+        "ComparisonOperator": "GreaterThanThreshold",
+        "DatapointsToAlarm": 3,
+        "EvaluationPeriods": 3,
+        "Metrics": Array [
+          Object {
+            "Id": "m1",
+            "Label": "Connections",
+            "MetricStat": Object {
+              "Metric": Object {
+                "Dimensions": Array [
+                  Object {
+                    "Name": "DBClusterIdentifier",
+                    "Value": Object {
+                      "Ref": "ScopeDummyAuroraCluster61A7551D",
+                    },
+                  },
+                ],
+                "MetricName": "DatabaseConnections",
+                "Namespace": "AWS/RDS",
+              },
+              "Period": 300,
+              "Stat": "Average",
+            },
+            "ReturnData": true,
+          },
+        ],
+        "Threshold": 100,
+        "TreatMissingData": "missing",
+      },
+      "Type": "AWS::CloudWatch::Alarm",
+    },
+    "ScopeTestDummyAuroraClusterConnectionCountLowWarning5B09883B": Object {
+      "Properties": Object {
+        "ActionsEnabled": true,
+        "AlarmDescription": "Number of connections is too low.",
+        "AlarmName": "Test-DummyAuroraCluster-Connection-Count-Low-Warning",
+        "ComparisonOperator": "LessThanThreshold",
+        "DatapointsToAlarm": 3,
+        "EvaluationPeriods": 3,
+        "Metrics": Array [
+          Object {
+            "Id": "m1",
+            "Label": "Connections",
+            "MetricStat": Object {
+              "Metric": Object {
+                "Dimensions": Array [
+                  Object {
+                    "Name": "DBClusterIdentifier",
+                    "Value": Object {
+                      "Ref": "ScopeDummyAuroraCluster61A7551D",
+                    },
+                  },
+                ],
+                "MetricName": "DatabaseConnections",
+                "Namespace": "AWS/RDS",
+              },
+              "Period": 300,
+              "Stat": "Average",
+            },
+            "ReturnData": true,
+          },
+        ],
+        "Threshold": 0,
+        "TreatMissingData": "missing",
+      },
+      "Type": "AWS::CloudWatch::Alarm",
+    },
+    "ScopeTestDummyAuroraClusterUsageCountWarning291913E2": Object {
+      "Properties": Object {
+        "ActionsEnabled": true,
+        "AlarmDescription": "The count is too high.",
+        "AlarmName": "Test-DummyAuroraCluster-Usage-Count-Warning",
+        "ComparisonOperator": "GreaterThanThreshold",
+        "DatapointsToAlarm": 3,
+        "EvaluationPeriods": 3,
+        "Metrics": Array [
+          Object {
+            "Id": "m1",
+            "Label": "Serverless Database Capacity",
+            "MetricStat": Object {
+              "Metric": Object {
+                "Dimensions": Array [
+                  Object {
+                    "Name": "DBClusterIdentifier",
+                    "Value": Object {
+                      "Ref": "ScopeDummyAuroraCluster61A7551D",
+                    },
+                  },
+                ],
+                "MetricName": "ServerlessDatabaseCapacity",
+                "Namespace": "AWS/RDS",
+              },
+              "Period": 300,
+              "Stat": "Average",
+            },
+            "ReturnData": true,
+          },
+        ],
+        "Threshold": 100,
+        "TreatMissingData": "missing",
+      },
+      "Type": "AWS::CloudWatch::Alarm",
+    },
+    "Summary68521F81": Object {
+      "Properties": Object {
+        "DashboardBody": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Aurora Cluster **[DummyAuroraCluster](https://eu-west-1.console.aws.amazon.com/rds/home?region=eu-west-1#database:id=",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              ";is-cluster=true;tab=monitoring)**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Usage\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/RDS\\",\\"CPUUtilization\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"CPU Usage\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"CPU Usage > 80 for 3 datapoints within 15 minutes\\",\\"value\\":80,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Connections\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/RDS\\",\\"DatabaseConnections\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Connections\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Connections < 0 for 3 datapoints within 15 minutes\\",\\"value\\":0,\\"yAxis\\":\\"left\\"},{\\"label\\":\\"Connections > 100 for 3 datapoints within 15 minutes\\",\\"value\\":100,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Query Duration\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/RDS\\",\\"SelectLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Select\\",\\"stat\\":\\"p90\\"}],[\\"AWS/RDS\\",\\"InsertLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Insert\\",\\"stat\\":\\"p90\\"}],[\\"AWS/RDS\\",\\"UpdateLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Update\\",\\"stat\\":\\"p90\\"}],[\\"AWS/RDS\\",\\"DeleteLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Delete\\",\\"stat\\":\\"p90\\"}],[\\"AWS/RDS\\",\\"CommitLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Commit\\",\\"stat\\":\\"p90\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Serverless Database Capacity\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/RDS\\",\\"ServerlessDatabaseCapacity\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Serverless Database Capacity\\"}]],\\"annotations\\":{\\"horizontal\\":[{\\"label\\":\\"Serverless Database Capacity > 100 for 3 datapoints within 15 minutes\\",\\"value\\":100,\\"yAxis\\":\\"left\\"}]},\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}",
+            ],
+          ],
+        },
+      },
+      "Type": "AWS::CloudWatch::Dashboard",
+    },
+  },
+  "Rules": Object {
+    "CheckBootstrapVersion": Object {
+      "Assertions": Array [
+        Object {
+          "Assert": Object {
+            "Fn::Not": Array [
+              Object {
+                "Fn::Contains": Array [
+                  Array [
+                    "1",
+                    "2",
+                    "3",
+                    "4",
+                    "5",
+                  ],
+                  Object {
+                    "Ref": "BootstrapVersion",
+                  },
+                ],
+              },
+            ],
+          },
+          "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.",
+        },
+      ],
+    },
+  },
+}
+`;
+
+exports[`snapshot test: no alarms 1`] = `
+Object {
+  "Parameters": Object {
+    "BootstrapVersion": Object {
+      "Default": "/cdk-bootstrap/hnb659fds/version",
+      "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]",
+      "Type": "AWS::SSM::Parameter::Value<String>",
+    },
+  },
+  "Resources": Object {
+    "Alarm7103F465": Object {
+      "Properties": Object {
+        "DashboardBody": "{\\"widgets\\":[]}",
+      },
+      "Type": "AWS::CloudWatch::Dashboard",
+    },
+    "Resource": Object {
+      "Properties": Object {
+        "DashboardBody": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Aurora Cluster **[DummyAuroraCluster](https://eu-west-1.console.aws.amazon.com/rds/home?region=eu-west-1#database:id=",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              ";is-cluster=true;tab=monitoring)**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Usage\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/RDS\\",\\"CPUUtilization\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"CPU Usage\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Connections\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/RDS\\",\\"DatabaseConnections\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Connections\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":12,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Query Duration\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/RDS\\",\\"SelectLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Select\\",\\"stat\\":\\"p90\\"}],[\\"AWS/RDS\\",\\"InsertLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Insert\\",\\"stat\\":\\"p90\\"}],[\\"AWS/RDS\\",\\"UpdateLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Update\\",\\"stat\\":\\"p90\\"}],[\\"AWS/RDS\\",\\"DeleteLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Delete\\",\\"stat\\":\\"p90\\"}],[\\"AWS/RDS\\",\\"CommitLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Commit\\",\\"stat\\":\\"p90\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":12,\\"height\\":5,\\"x\\":0,\\"y\\":6,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Serverless Database Capacity\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/RDS\\",\\"ServerlessDatabaseCapacity\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Serverless Database Capacity\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}",
+            ],
+          ],
+        },
+      },
+      "Type": "AWS::CloudWatch::Dashboard",
+    },
+    "ScopeDummyAuroraCluster61A7551D": Object {
+      "DeletionPolicy": "Snapshot",
+      "Properties": Object {
+        "CopyTagsToSnapshot": true,
+        "DBClusterIdentifier": "my-aurora-cluster",
+        "DBClusterParameterGroupName": "default.aurora-mysql5.7",
+        "Engine": "aurora-mysql",
+        "EngineMode": "serverless",
+        "MasterUserPassword": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{{resolve:secretsmanager:",
+              Object {
+                "Ref": "ScopeDummyAuroraClusterSecret18674A5A",
+              },
+              ":SecretString:password::}}",
+            ],
+          ],
+        },
+        "MasterUsername": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{{resolve:secretsmanager:",
+              Object {
+                "Ref": "ScopeDummyAuroraClusterSecret18674A5A",
+              },
+              ":SecretString:username::}}",
+            ],
+          ],
+        },
+        "StorageEncrypted": true,
+        "VpcSecurityGroupIds": Array [],
+      },
+      "Type": "AWS::RDS::DBCluster",
+      "UpdateReplacePolicy": "Snapshot",
+    },
+    "ScopeDummyAuroraClusterSecret18674A5A": Object {
+      "DeletionPolicy": "Delete",
+      "Properties": Object {
+        "Description": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "Generated by the CDK for stack: ",
+              Object {
+                "Ref": "AWS::StackName",
+              },
+            ],
+          ],
+        },
+        "GenerateSecretString": Object {
+          "ExcludeCharacters": " %+~\`#$&*()|[]{}:;<>?!'/@\\"\\\\",
+          "GenerateStringKey": "password",
+          "PasswordLength": 30,
+          "SecretStringTemplate": "{\\"username\\":\\"admin\\"}",
+        },
+      },
+      "Type": "AWS::SecretsManager::Secret",
+      "UpdateReplacePolicy": "Delete",
+    },
+    "ScopeDummyAuroraClusterSecretAttachmentA4BBBBD1": Object {
+      "Properties": Object {
+        "SecretId": Object {
+          "Ref": "ScopeDummyAuroraClusterSecret18674A5A",
+        },
+        "TargetId": Object {
+          "Ref": "ScopeDummyAuroraCluster61A7551D",
+        },
+        "TargetType": "AWS::RDS::DBCluster",
+      },
+      "Type": "AWS::SecretsManager::SecretTargetAttachment",
+    },
+    "Summary68521F81": Object {
+      "Properties": Object {
+        "DashboardBody": Object {
+          "Fn::Join": Array [
+            "",
+            Array [
+              "{\\"widgets\\":[{\\"type\\":\\"text\\",\\"width\\":24,\\"height\\":1,\\"x\\":0,\\"y\\":0,\\"properties\\":{\\"markdown\\":\\"### Aurora Cluster **[DummyAuroraCluster](https://eu-west-1.console.aws.amazon.com/rds/home?region=eu-west-1#database:id=",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              ";is-cluster=true;tab=monitoring)**\\"}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":0,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"CPU Usage\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/RDS\\",\\"CPUUtilization\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"CPU Usage\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"max\\":100,\\"label\\":\\"%\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":6,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Connections\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/RDS\\",\\"DatabaseConnections\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Connections\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":12,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Query Duration\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/RDS\\",\\"SelectLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Select\\",\\"stat\\":\\"p90\\"}],[\\"AWS/RDS\\",\\"InsertLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Insert\\",\\"stat\\":\\"p90\\"}],[\\"AWS/RDS\\",\\"UpdateLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Update\\",\\"stat\\":\\"p90\\"}],[\\"AWS/RDS\\",\\"DeleteLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Delete\\",\\"stat\\":\\"p90\\"}],[\\"AWS/RDS\\",\\"CommitLatency\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Commit\\",\\"stat\\":\\"p90\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"ms\\",\\"showUnits\\":false}}}},{\\"type\\":\\"metric\\",\\"width\\":6,\\"height\\":5,\\"x\\":18,\\"y\\":1,\\"properties\\":{\\"view\\":\\"timeSeries\\",\\"title\\":\\"Serverless Database Capacity\\",\\"region\\":\\"",
+              Object {
+                "Ref": "AWS::Region",
+              },
+              "\\",\\"metrics\\":[[\\"AWS/RDS\\",\\"ServerlessDatabaseCapacity\\",\\"DBClusterIdentifier\\",\\"",
+              Object {
+                "Ref": "ScopeDummyAuroraCluster61A7551D",
+              },
+              "\\",{\\"label\\":\\"Serverless Database Capacity\\"}]],\\"yAxis\\":{\\"left\\":{\\"min\\":0,\\"label\\":\\"Count\\",\\"showUnits\\":false}}}}]}",
+            ],
+          ],
+        },
+      },
+      "Type": "AWS::CloudWatch::Dashboard",
+    },
+  },
+  "Rules": Object {
+    "CheckBootstrapVersion": Object {
+      "Assertions": Array [
+        Object {
+          "Assert": Object {
+            "Fn::Not": Array [
+              Object {
+                "Fn::Contains": Array [
+                  Array [
+                    "1",
+                    "2",
+                    "3",
+                    "4",
+                    "5",
+                  ],
+                  Object {
+                    "Ref": "BootstrapVersion",
+                  },
+                ],
+              },
+            ],
+          },
+          "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.",
+        },
+      ],
+    },
+  },
+}
+`;