import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch'; import * as lambda from 'aws-cdk-lib/aws-lambda'; import * as logs from 'aws-cdk-lib/aws-logs'; import * as s3 from 'aws-cdk-lib/aws-s3'; import * as sqs from 'aws-cdk-lib/aws-sqs'; import * as stepfunctions from 'aws-cdk-lib/aws-stepfunctions'; import { Construct } from 'constructs'; /** * Configuration for observability features */ export interface ObservabilityConfig { /** Enable CloudWatch Dashboard */ readonly enableDashboard?: boolean; /** Enable CloudWatch Alarms */ readonly enableAlarms?: boolean; /** Enable AWS X-Ray tracing */ readonly enableTracing?: boolean; /** Log retention period in days */ readonly logRetentionDays?: logs.RetentionDays; /** Custom dashboard name */ readonly dashboardName?: string; /** SNS topic ARN for alarm notifications */ readonly alarmNotificationTopicArn?: string; /** Custom metric namespace */ readonly metricsNamespace?: string; } /** * Resources that need observability monitoring */ export interface ObservabilityResources { /** Step Functions state machine (optional) */ readonly stateMachine?: stepfunctions.StateMachine; /** Lambda functions to monitor */ readonly lambdaFunctions: lambda.Function[]; /** SQS queues to monitor (optional) */ readonly sqsQueues?: sqs.Queue[]; /** S3 buckets for storage (optional) */ readonly s3Buckets?: s3.IBucket[]; /** Dead letter queue (optional) */ readonly deadLetterQueue?: sqs.IQueue; /** Use case name for labeling */ readonly useCaseName: string; } /** * Comprehensive observability construct for serverless use cases */ export declare class ServerlessObservability extends Construct { /** CloudWatch Dashboard for monitoring */ readonly dashboard?: cloudwatch.Dashboard; /** CloudWatch Log Groups */ readonly logGroups: logs.LogGroup[]; /** CloudWatch Alarms */ readonly alarms: cloudwatch.Alarm[]; /** Metrics namespace */ readonly metricsNamespace: string; constructor(scope: Construct, id: string, resources: ObservabilityResources, config?: ObservabilityConfig); /** * Create log groups for Lambda functions with proper retention */ private createLogGroups; /** * Enable AWS X-Ray tracing for all resources */ private enableTracing; /** * Create CloudWatch alarms for monitoring critical metrics */ private createAlarms; /** * Create comprehensive CloudWatch dashboard */ private createDashboard; /** * Add custom widget to the dashboard */ addCustomWidget(widget: cloudwatch.IWidget): void; /** * Create a custom metric for use case specific events */ createCustomMetric(metricName: string, dimensionsMap?: { [key: string]: string; }): cloudwatch.Metric; }