A full-stack monitoring sandbox for the "Advanced Full Stack Monitoring Course with New Relic." This application provides a comprehensive environment for learning and demonstrating monitoring concepts including APM, Infrastructure, and Logs.
SpaceRover Mission Control simulates a space agency's mission control center that monitors and controls a fleet of rovers exploring distant planets. The application is designed to demonstrate various monitoring concepts in a practical, engaging way.
- Mission Control Dashboard (Frontend): React application for visualizing rover status and mission data
- Fleet Command Service (Backend API): Node.js/Express service for rover command and mission management
- Telemetry Processor (Background Service): Worker service for processing incoming rover data
- Mission Database: MongoDB database storing mission and rover information
- Monitoring Tools: Tools to observe and analyze application performance
- Built-in Monitoring: Pre-configured for New Relic integration
- Realistic Telemetry: Simulated rover data that changes over time
- Structured Logs: Various log formats and patterns for log monitoring demonstrations
- Progressive Complexity: Components can be introduced gradually as students progress
- Complete Documentation: Each component includes details about monitoring opportunities
Course Module | Application Component | Learning Opportunities |
---|---|---|
Advanced APM | Fleet Command Service | Transaction tracing, custom instrumentation, change tracking |
Infrastructure Agent | Docker containers + Host metrics | Infrastructure monitoring, resource utilization, agent configuration |
Logs | Application-wide logging | Log parsing, patterns, integration with APM and Infrastructure |
- Docker and Docker Compose
- Node.js (v16+ for frontend, v23+ for backend services if running locally)
- New Relic account (free tier available)
-
Clone the repository:
git clone https://github.com/yourusername/spacerover-mission-control.git cd spacerover-mission-control
-
Create a
.env
file with your New Relic license key:NEW_RELIC_LICENSE_KEY=your_license_key
-
Start all services:
docker-compose up -d
-
Access the application:
- Mission Control Dashboard: http://localhost:3000
- Fleet Command API: http://localhost:4000
- Telemetry Service: http://localhost:6000
If you prefer to run components individually for development:
-
Start MongoDB:
docker-compose up -d mongodb
-
Start the Fleet Command service:
cd backend npm install npm run dev
-
Start the Telemetry service:
cd telemetry npm install npm run dev
-
Start the frontend application:
cd frontend npm install npm start
The main dashboard shows an overview of all rovers, their status, and telemetry data. From here you can:
- View rover status and health metrics
- Navigate to detailed views for each rover
- See alerts for critical conditions
- Monitor real-time telemetry updates
The application includes detailed instructions for connecting to New Relic:
- Navigate to the "New Relic" tab in the application
- Follow the step-by-step guide to configure your New Relic account
- Use the provided dashboards and alert configurations
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β Docker Environment β
β β
β βββββββββββββββ ββββββββββββββββββββββ β
β β React β β Fleet Command β β
β β Frontend βββββββΊβ Service (Node.js) β β
β βββββββββββββββ ββββββββββββββββββββββ β
β β² β² β
β β β β
β βΌ βΌ β
β βββββββββββββββ ββββββββββββββββββββββ β
β β Telemetry β β MongoDB β β
β β Processor βββββββΊβ β β
β βββββββββββββββ ββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
This application is designed to support the "Advanced Full Stack Monitoring Course with New Relic" with specific features for each module:
- Custom transaction naming
- Custom metrics and events
- Distributed tracing across services
- Change tracking demonstration
- Container monitoring
- Host metrics visualization
- Custom dashboard creation
- Alert configuration
- Structured and unstructured logging
- Log pattern identification
- Log correlation with APM data
- Log-based alerting
You can customize various aspects of the application:
Edit docker-compose.yml
to change environment parameters:
environment:
- ENABLE_SIMULATED_ISSUES=true
- LOAD_INTENSITY=medium # Options: low, medium, high
Use the Fleet Command API to add new rovers:
curl -X POST http://localhost:4000/api/rovers -H "Content-Type: application/json" -d '{
"name": "Curiosity II",
"model": "Explorer 3000",
"status": "active",
"location": {
"coordinates": {"x": 125.32, "y": 78.91},
"planet": "Mars"
},
"capabilities": ["imaging", "sampling", "drilling"]
}'
The application includes a load generator that can be configured through environment variables:
load-generator:
environment:
- SCENARIO=default
- INTENSITY=medium # Options: low, medium, high
- Frontend: React 17, React Router 6, Recharts for data visualization
- Backend: Node.js 23 on Alpine, Express 4, Winston for logging
- Telemetry Service: Node.js 23, Express, real-time data processing
- Database: MongoDB latest
- Monitoring: New Relic APM, Infrastructure, Browser monitoring
- Container Management: Docker Compose orchestration
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- NASA for inspiration on rover operations and telemetry systems
- New Relic for their monitoring platform and educational resources