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>
Meteor Web Backend
A NestJS-based backend service for the Meteor application with user authentication.
Features
- User registration with email/password
- Password hashing using bcrypt
- PostgreSQL database with TypeORM
- Database migrations
- Input validation
- Transaction support
- Comprehensive unit and integration tests
Setup
Prerequisites
- Node.js (v18 or higher)
- PostgreSQL database
- npm or yarn
Installation
npm install
Environment Variables
Create a .env file based on .env.example:
DATABASE_URL=postgresql://user:password@localhost:5432/meteor_dev
BCRYPT_SALT_ROUNDS=10
Database Setup
Run migrations to set up the database schema:
npm run migrate:up
API Endpoints
POST /api/v1/auth/register-email
Register a new user with email and password.
Request Body:
{
"email": "user@example.com",
"password": "Password123",
"displayName": "John Doe"
}
Response:
{
"message": "User registered successfully",
"userId": "uuid-string"
}
Validation Rules:
- Email must be a valid email format
- Password must be at least 8 characters long
- Password must contain at least one lowercase letter, one uppercase letter, and one number
- Display name is required
Error Responses:
400 Bad Request- Invalid input data409 Conflict- Email already registered500 Internal Server Error- Server error
Running the Application
Development
npm run start:dev
Production
npm run build
npm run start:prod
Testing
Unit Tests
npm test
Integration Tests
npm run test:e2e
Test Coverage
npm run test:cov
Database Migrations
Create New Migration
npm run migrate:create migration-name
Run Migrations
npm run migrate:up
Rollback Migrations
npm run migrate:down
Project Structure
src/
├── auth/ # Authentication module
│ ├── dto/ # Data transfer objects
│ ├── auth.controller.ts
│ ├── auth.service.ts
│ └── auth.module.ts
├── entities/ # TypeORM entities
│ ├── user-profile.entity.ts
│ └── user-identity.entity.ts
├── app.module.ts # Main application module
└── main.ts # Application entry point
migrations/ # Database migrations
test/ # Integration tests
Database Schema
user_profiles
id(UUID, Primary Key)display_name(VARCHAR, nullable)avatar_url(TEXT, nullable)created_at(TIMESTAMP)updated_at(TIMESTAMP)
user_identities
id(UUID, Primary Key)user_profile_id(UUID, Foreign Key)provider(VARCHAR) - e.g., 'email'provider_id(VARCHAR) - e.g., email addressemail(VARCHAR, nullable, unique for email provider)password_hash(VARCHAR, nullable)created_at(TIMESTAMP)updated_at(TIMESTAMP)
Security Features
- Passwords are hashed using bcrypt with configurable salt rounds
- Email uniqueness validation
- Input sanitization and validation
- Database transactions for data consistency
- No sensitive data exposed in API responses