Skip to content

Add observability and metrics collection #80

@vlavrynovych

Description

@vlavrynovych

Description

Add built-in metrics collection and observability features for monitoring migration performance and health in production.

Requirements

Metrics to Collect

  • Execution Time - Per migration and total
  • Success/Failure Rate - Track reliability
  • Database Size Changes - Before/after migration
  • Rollback Frequency - How often rollbacks occur
  • Migration Queue Depth - How many pending
  • Validation Errors - Pre-execution issues

Configuration

config.metrics = {
  enabled: true,
  collectors: [
    new PrometheusCollector({ port: 9090 }),
    new DataDogCollector({ apiKey: 'xxx' }),
    new CloudWatchCollector({ region: 'us-east-1' }),
    new CustomCollector() // User-defined
  ]
};

Metrics Interface

interface IMetricsCollector {
  recordMigrationStart(script: IMigrationScript): void;
  recordMigrationComplete(script: IMigrationScript, duration: number): void;
  recordMigrationError(script: IMigrationScript, error: Error): void;
  recordRollback(strategy: RollbackStrategy, success: boolean): void;
  recordValidationError(errors: ValidationError[]): void;
}

Built-in Collectors

  1. ConsoleMetricsCollector - Log metrics to console
  2. FileMetricsCollector - Write metrics to JSON file
  3. PrometheusCollector - Expose Prometheus endpoint
  4. DataDogCollector - Send to DataDog
  5. CloudWatchCollector - Send to AWS CloudWatch

Example Prometheus Metrics

# HELP msr_migrations_total Total migrations executed
# TYPE msr_migrations_total counter
msr_migrations_total{status="success"} 150
msr_migrations_total{status="failed"} 2

# HELP msr_migration_duration_seconds Migration execution time
# TYPE msr_migration_duration_seconds histogram
msr_migration_duration_seconds_bucket{le="0.1"} 50
msr_migration_duration_seconds_bucket{le="1.0"} 120

# HELP msr_rollbacks_total Total rollbacks triggered
# TYPE msr_rollbacks_total counter
msr_rollbacks_total{strategy="BACKUP"} 2

Use Cases

  • Production Monitoring - Track migration health
  • Performance Analysis - Identify slow migrations
  • Alerting - Get notified of failures
  • Capacity Planning - Database size trends
  • SLA Compliance - Migration time objectives

Implementation Notes

  • Create IMetricsCollector interface
  • Implement built-in collectors
  • Add metrics collection hooks throughout execution
  • Support multiple collectors simultaneously
  • Make it lightweight (low overhead)

Acceptance Criteria

  • IMetricsCollector interface defined
  • 3+ built-in collectors implemented
  • Metrics collected at key lifecycle points
  • Integration examples for popular tools
  • Performance impact < 5% overhead
  • Documentation with dashboard examples

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions