Open-Source Event Tracking
Track events, monitor deployments, and manage your infrastructure
Tracker is a comprehensive event tracking and observability platform designed for modern distributed systems. It helps teams monitor deployments, track incidents, manage infrastructure catalogs, and coordinate operations across services.
- π Free & Open Source - No vendor lock-in, full control over your data
- π Easy to Deploy - Single Docker image with frontend & backend
- π Rich UI - Beautiful React interface with dark mode
- π Multi-Protocol - gRPC, REST, and Swagger UI
- π Observable - Built-in Prometheus metrics
- π Real-time - Track events as they happen
- π¨ Customizable - Extend and adapt to your needs
- Deployment Tracking - Monitor all deployments across environments
- Incident Management - Track incidents from detection to resolution
- Configuration Drift - Detect and manage infrastructure drifts
- RPA Monitoring - Track robotic process automation executions
- Service Catalog - Maintain inventory of services, libraries, and modules
- Distributed Locking - Coordinate operations across services
- Multiple Event Types: Deployments, Operations, Drifts, Incidents, RPA Usage
- Rich Metadata: Priority, Status, Environment, Owner, Impact tracking
- Linking: Connect events to PRs, tickets, and related events
- Search & Filter: Powerful search across all event attributes
- Timeline View: Visualize events chronologically
- Calendar View: See events in a calendar format
- Inventory Management: Track modules, libraries, projects, containers
- Version Tracking: Monitor versions across your infrastructure
- Multi-Language: Support for Go, Java, Python, JavaScript, and more
- Repository Links: Direct links to GitHub/GitLab repositories
- Documentation: Link to service documentation
- Exclusive Locks: Prevent concurrent operations
- Lock Ownership: Track who owns which locks
- Automatic Cleanup: Locks expire automatically
- Coordination: Synchronize deployments and operations
- Dashboard: Overview of recent events and statistics
- Timeline: Chronological event view with filtering
- Calendar: Monthly calendar view of events
- Dark Mode: Beautiful dark theme support
- Responsive: Works on desktop, tablet, and mobile
- Real-time: Auto-refresh and live updates
- gRPC API: High-performance native API
- REST API: HTTP/JSON endpoints via grpc-gateway
- Swagger UI: Interactive API documentation
- OpenAPI Spec: Standard API specification
- MCP Server: Model Context Protocol for AI agents (Kiro, Claude, etc.)
- Prometheus: Built-in metrics endpoint
# Build the image
docker build -t bananaops/tracker:latest .
# Run the container
docker run -d -p 27017:27017 --name tracker-mongo mongo:7
docker run -p 8080:8080 -p 8081:8081 -p 8765:8765 bananaops/tracker:latestAccess the application:
- π Web UI: http://localhost:8080
- π Swagger UI: http://localhost:8080/docs
- π Metrics: http://localhost:8081/metrics
- π gRPC: localhost:8765
# Start the application
docker-compose up -d
# View logs
docker-compose logs -f
# Stop the application
docker-compose downBackend:
# Clone the repository
git clone https://github.com/BananaOps/tracker.git
cd tracker
# Run the server
go run main.go servFrontend:
# Install dependencies
cd web
npm install
# Start development server
npm run dev- π Installation Guide - Complete installation instructions
- βοΈ Configuration Guide - Environment variables and settings
- π§ Development Guide - Set up development environment
- π User Guide - How to use Tracker
- π Events Guide - Working with events
- π¦ Catalog Guide - Managing service catalog
- π Locks Guide - Distributed locking
- π API Specification - API reference
- π Swagger UI - Interactive API docs (when running)
- π€ MCP Server - Model Context Protocol server for AI agents
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Web Browser β
β http://localhost:8080 β
ββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββΌββββββββββββββββ
β β β
ββββββΌβββββ ββββββΌβββββ ββββββΌβββββ
β React β β REST β β Swagger β
β UI β β API β β UI β
βββββββββββ ββββββ¬βββββ βββββββββββ
β
βββββββββΌβββββββββ
β grpc-gateway β
β (RESTβgRPC) β
βββββββββ¬βββββββββ
β
ββββββββββββββββΌβββββββββββββββ
β β β
ββββββΌβββββ βββββΌβββββ βββββΌβββββ
β Event β βCatalog β β Lock β
β Service β βService β βService β
ββββββ¬βββββ βββββ¬βββββ βββββ¬βββββ
β β β
βββββββββββββββΌβββββββββββββββ
β
ββββββββΌβββββββ
β MongoDB β
β / FeretDB β
βββββββββββββββ
Create a deployment event via REST API:
curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{
"title": "Deploy service-api v2.1.0 to production",
"attributes": {
"message": "Deployed via GitHub Actions",
"type": 1,
"priority": 2,
"service": "service-api",
"status": 3,
"environment": 7,
"owner": "platform-team"
},
"links": {
"pullRequestLink": "https://github.com/org/repo/pull/123",
"ticket": "PROJ-456"
}
}'Response:
{
"id": "507f1f77bcf86cd799439011",
"title": "Deploy service-api v2.1.0 to production",
"createdAt": "2024-01-15T10:30:00Z"
}# Get last 10 events
curl http://localhost:8080/api/v1alpha1/events?limit=10
# Filter by service
curl http://localhost:8080/api/v1alpha1/events?service=service-api
# Filter by environment
curl http://localhost:8080/api/v1alpha1/events?environment=7Add a service to the catalog:
curl -X POST http://localhost:8080/api/v1alpha1/catalog \
-H "Content-Type: application/json" \
-d '{
"name": "user-service",
"type": 3,
"language": 1,
"version": "1.2.3",
"repositoryUrl": "https://github.com/org/user-service",
"description": "User management microservice"
}'Track when infrastructure configuration deviates from expected state:
curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{
"title": "Terraform drift detected in production",
"attributes": {
"message": "Manual changes detected in AWS security group",
"type": 3,
"priority": 3,
"service": "infrastructure",
"environment": 7
}
}'Acquire a lock before deployment:
# Acquire lock
curl -X POST http://localhost:8080/api/v1alpha1/lock \
-H "Content-Type: application/json" \
-d '{
"name": "production-deployment",
"owner": "ci-pipeline-123",
"ttl": 3600
}'
# Release lock
curl -X DELETE http://localhost:8080/api/v1alpha1/lock/production-deploymentMonitor robotic process automation executions:
curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{
"title": "RPA: Invoice Processing Completed",
"attributes": {
"message": "Processed 150 invoices successfully",
"type": 5,
"priority": 1,
"service": "invoice-automation",
"status": 3
}
}'curl -X POST http://localhost:8080/api/v1alpha1/event \
-H "Content-Type: application/json" \
-d '{
"title": "Production API Outage",
"attributes": {
"message": "API returning 500 errors",
"type": 4,
"priority": 4,
"service": "api-gateway",
"status": 1,
"environment": 7,
"impact": 3
},
"links": {
"ticket": "INC-789",
"slackThread": "https://workspace.slack.com/archives/C123/p456"
}
}'- Language: Go 1.25.4+
- API: gRPC + REST (grpc-gateway)
- Database: MongoDB / FeretDB (with automatic index optimization)
- Metrics: Prometheus
- Logging: Structured JSON logs
- Framework: React 23
- Language: TypeScript 5
- Build: Vite
- Styling: Tailwind CSS
- Icons: Lucide React + Font Awesome
- State: React Query (TanStack Query)
- Containerization: Docker multi-stage builds
- Orchestration: Kubernetes + Helm
- CI/CD: Skaffold
- Protocol: Protocol Buffers (protobuf)
We welcome contributions! Here's how you can help:
- π Report Bugs: Open an issue
- π‘ Suggest Features: Start a discussion
- π Improve Docs: Submit documentation improvements
- π§ Submit PRs: Fix bugs or add features
See CONTRIBUTING.md for detailed guidelines.
Looking for a place to start? Check out issues labeled good first issue or help wanted.
- β Core API: Production ready
- β Web UI: Production ready
- β Docker: Production ready
- β Kubernetes: Production ready
- β Slack App: Production ready (project github tracker-slack)
- π§ Github Action: In development
- π§ Webhooks: Planned
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.
If you find Tracker useful, please consider giving it a star! β
This project exists thanks to all the people who contribute. The contributors list is automatically updated.
Want to contribute? Check out our Contributing Guide!
- GitHub Issues: Report bugs or request features
- GitHub Discussions: Ask questions and share ideas
- Documentation: Read the docs
Made with β€οΈ by the BananaOps community
β Star us on GitHub β’ π Report a Bug β’ π¬ Join Discussion