Real-Time Monitoring Dashboard
The monitoring dashboard provides live insights into competition activity.Users with Monitor role have read-only access to monitoring features without admin capabilities.
Accessing Monitor View
Event Types
GZCTF tracks various event types during competitions:Flag Submissions
Track every flag attempt:
- Team identifier
- Challenge name
- Result (correct/incorrect)
- Timestamp
Container Events
Monitor container lifecycle:
- Container creation
- Extension/renewal
- Destruction
- Resource usage
Team Actions
Track team activities:
- Challenge unlocks
- Hint requests
- Writeup submissions
System Events
Platform operations:
- Game state changes
- Admin actions
- Notice publications
Event History
Retrieve historical events for analysis:Filter out container-related events to focus on gameplay
Submission Monitoring
Track all flag submission attempts across the competition.Submission Status Types
Accepted
Accepted
Correct flag - team earns points
WrongAnswer
WrongAnswer
Incorrect flag attempt
CheatDetected
CheatDetected
Flag from another team detected (duplicate flag)
NotFound
NotFound
Challenge or flag doesn’t exist
Duplicate
Duplicate
Team already solved this challenge
Expired
Expired
Submission after challenge deadline
SubmissionLimitExceeded
SubmissionLimitExceeded
Team exceeded submission limit for challenge
Viewing Submissions
- By Game
- By Challenge
- By Team
Submission Details
Each submission record contains:Cheat Detection
GZCTF includes automated cheat detection for flag sharing.How It Works
Cross-Team Detection
When team submits a flag:
- Check if flag belongs to another team
- If yes → mark as
CheatDetected - Log incident for admin review
Cheat detection only works for dynamic flags (Dynamic Container/Attachment challenges).
Investigating Cheating
Analyze Patterns
Look for:
- Repeated attempts between same teams
- Timing correlation (submissions within seconds)
- Team relationships
Container Monitoring
Track container instances and resource usage.Active Containers
View all running containers:Container Lifecycle Events
Track container operations:Created
Container successfully started
Extended
Lifetime renewed by team
Destroyed
Container stopped/removed
Forced Container Destruction
Admins can manually destroy containers:Traffic Capture
For challenges with traffic capture enabled, monitor network activity.Accessing Captures
Traffic captures are useful for:
- Investigating exploits
- Understanding attack vectors
- Detecting automated scanners
- Educational purposes
Scoreboard Monitoring
Track competition standings in real-time.Scoreboard Cache
GZCTF caches scoreboard for performance:Scoreboard refreshes every 2 minutes during competition
Scoreboard Data
Scoreboard includes:System Logs
Access platform-wide system logs:Log Levels Explained
Log Levels Explained
- Debug: Verbose information for troubleshooting
- Information: Normal operations (user login, challenge solve)
- Warning: Potential issues (slow operations, rate limits)
- Error: Failures (container errors, DB timeouts)
- Critical: Severe issues (system crash, data loss)
Real-Time Event Streaming
SignalR Hubs
GZCTF uses SignalR for real-time communication:MonitorHub
Real-time game events for monitors/admins:
- Flag submissions
- Container events
- Team actions
/hub/monitor?game={gameId}AdminHub
Platform-wide events for admins:
- System logs
- User actions
- Configuration changes
/hub/adminConnection Example
SignalR connections require authentication. Pass JWT token via
accessTokenFactory.Performance Metrics
Monitor platform performance:Response Time
Track API latency and slow endpoints
Container Stats
Monitor:
- Active containers
- Creation time
- Resource usage
Database Load
Query performance and connection pool
Cache Hit Rate
Redis cache effectiveness
Best Practices
Monitor Actively
During competitions:
- Watch submission stream
- Check for unusual patterns
- Respond to issues quickly
Investigate Anomalies
Look for:
- Burst of failures from one team
- Identical submission patterns
- Container creation spikes
Export Data
Regularly export:
- Event logs
- Submission history
- Traffic captures
Review Post-Game
After competition:
- Analyze solve times
- Review cheat alerts
- Identify bottlenecks
Troubleshooting
Real-time updates not working
Real-time updates not working
Check:
- WebSocket connection is established
- No firewall blocking WebSocket
- Auth token is valid
- Hub connection logs for errors
Scoreboard not updating
Scoreboard not updating
Try:
- Flush scoreboard cache
- Check if submissions are being recorded
- Verify Redis connection
Container events missing
Container events missing
Verify:
- Container provider is running
- Event logging is enabled
- Database is accessible
High system load
High system load
Investigate:
- Number of active containers
- Database query performance
- Cache hit rates
- Consider scaling infrastructure
API Reference
Event Endpoints
Event Endpoints
GET /api/game/{id}/events- Get game events
Submission Endpoints
Submission Endpoints
GET /api/game/{id}/submissions- Get game submissionsGET /api/game/{gameId}/challenges/{challengeId}/submissions- Challenge submissions
Container Endpoints
Container Endpoints
GET /api/admin/instances- List all containersDELETE /api/admin/instances/{id}- Destroy container
Log Endpoints
Log Endpoints
GET /api/admin/logs- Get system logs
SignalR Hubs
SignalR Hubs
/hub/monitor?game={gameId}- Game monitoring/hub/admin- Admin events
Next Steps
Configuration
Configure platform settings
Creating Games
Create new competitions