Overview
Yuptime is a Kubernetes-native uptime monitoring solution where all configuration lives in CRDs. It’s GitOps-native, database-free, and runs each health check in isolated Kubernetes Job pods for security and reliability.
Features
- GitOps-Native - All configuration lives in Git as YAML manifests, works with Flux, Argo CD, and any GitOps workflow
- Database-Free - No databases to manage; state lives in CRD status subresources
- Isolated Execution - Each health check runs in its own Kubernetes Job pod
- Prometheus Metrics - Built-in metrics export for monitoring and alerting
- Alertmanager Integration - Native integration with Prometheus Alertmanager
- Smart Suppressions - Intelligent alert suppression during maintenance windows
Monitor Types
Network Monitors
- HTTP - Monitor web endpoints with status code and response validation
- TCP - Check port availability and connection health
- DNS - Verify DNS resolution and record correctness
- Ping - ICMP-based host availability checks
- WebSocket - Monitor WebSocket connections
Application Monitors
- Push - Heartbeat-style monitoring for cron jobs and batch processes
- Steam - Monitor Steam game server availability
- Kubernetes - Check pod and service health within the cluster
Architecture
The controller follows Kubernetes operator patterns:
- Reconcilers - Handle Monitor, MonitorSet, and MaintenanceWindow resources
- Job Manager - Schedules and executes monitoring checks
- Validation Layer - Ensures CRD specifications are valid before processing
Configuration
Monitors are defined as Kubernetes resources:
yaml
apiVersion: yuptime.io/v1
kind: Monitor
metadata:
name: api-health
spec:
type: http
enabled: true
schedule:
intervalSeconds: 60
timeoutSeconds: 30
target:
http:
url: https://api.example.com/healthTechnology Stack
- TypeScript with Bun runtime
- Kubernetes client for CRD management
- Custom reconciler framework
- CloudWatch integration for metrics