Successfully implemented comprehensive monitoring and alerting infrastructure for the Meteor platform across all three stories of Epic 3: **Story 3.5: 核心业务指标监控 (Core Business Metrics Monitoring)** - Instrumented NestJS web backend with CloudWatch metrics integration using prom-client - Instrumented Go compute service with structured CloudWatch metrics reporting - Created comprehensive Terraform infrastructure from scratch with modular design - Built 5-row CloudWatch dashboard with application, error rate, business, and infrastructure metrics - Added proper error categorization and provider performance tracking **Story 3.6: 关键故障告警 (Critical System Alerts)** - Implemented SNS-based alerting infrastructure via Terraform - Created critical alarms for NestJS 5xx error rate (>1% threshold) - Created Go service processing failure rate alarm (>5% threshold) - Created SQS queue depth alarm (>1000 messages threshold) - Added actionable alarm descriptions with investigation guidance - Configured email notifications with manual confirmation workflow **Cross-cutting Infrastructure:** - Complete AWS infrastructure as code with Terraform (S3, SQS, CloudWatch, SNS, IAM, optional RDS/Fargate) - Structured logging implementation across all services (NestJS, Go, Rust) - Metrics collection following "Golden Four Signals" observability approach - Configurable thresholds and deployment-ready monitoring solution The platform now has production-grade observability with comprehensive metrics collection, centralized monitoring dashboards, and automated critical system alerting. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
60 lines
1.8 KiB
Go
60 lines
1.8 KiB
Go
package validation
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"meteor-compute-service/internal/models"
|
|
)
|
|
|
|
// ValidationProvider defines the pluggable interface for event validation algorithms
|
|
type ValidationProvider interface {
|
|
// Validate performs validation on a raw event and returns a validation result
|
|
Validate(ctx context.Context, rawEvent *models.RawEvent) (*models.ValidationResult, error)
|
|
|
|
// GetProviderInfo returns metadata about this validation provider
|
|
GetProviderInfo() ProviderInfo
|
|
}
|
|
|
|
// ProviderInfo contains metadata about a validation provider
|
|
type ProviderInfo struct {
|
|
Name string `json:"name"`
|
|
Version string `json:"version"`
|
|
Description string `json:"description"`
|
|
Algorithm string `json:"algorithm"`
|
|
}
|
|
|
|
// ProviderType represents the available validation provider types
|
|
type ProviderType string
|
|
|
|
const (
|
|
ProviderTypeMVP ProviderType = "mvp"
|
|
ProviderTypeClassicCV ProviderType = "classic_cv"
|
|
)
|
|
|
|
// ProviderFactory creates validation providers based on configuration
|
|
type ProviderFactory struct{}
|
|
|
|
// NewProviderFactory creates a new provider factory instance
|
|
func NewProviderFactory() *ProviderFactory {
|
|
return &ProviderFactory{}
|
|
}
|
|
|
|
// CreateProvider creates a validation provider based on the specified type
|
|
func (f *ProviderFactory) CreateProvider(providerType ProviderType) (ValidationProvider, error) {
|
|
switch providerType {
|
|
case ProviderTypeMVP:
|
|
return NewMVPValidationProvider(), nil
|
|
case ProviderTypeClassicCV:
|
|
return NewClassicCvProvider(), nil
|
|
default:
|
|
return nil, fmt.Errorf("unknown validation provider type: %s", providerType)
|
|
}
|
|
}
|
|
|
|
// GetAvailableProviders returns a list of all available provider types
|
|
func (f *ProviderFactory) GetAvailableProviders() []ProviderType {
|
|
return []ProviderType{
|
|
ProviderTypeMVP,
|
|
ProviderTypeClassicCV,
|
|
}
|
|
} |