diff options
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..16b42b6 --- /dev/null +++ b/README.md @@ -0,0 +1,149 @@ +# Kaze + +A minimal, performant status page application written in Go. + +## Features + +- **Monitor Types**: HTTP, HTTPS (with SSL certificate tracking), TCP +- **Full Metrics**: Response time, SSL expiry, status codes, uptime percentage +- **Configurable History**: 7, 30, or 90 days retention +- **Monitor Groups**: Organize monitors into logical categories +- **Incidents**: Manual incident tracking via YAML configuration +- **Dark/Light Mode**: System preference detection with manual toggle +- **Single Binary**: All assets embedded, no external dependencies +- **SQLite Storage**: Lightweight, file-based database + +## Quick Start + +```bash +# Build +make build + +# Copy and edit configuration +cp config.example.yaml config.yaml + +# Run +./kaze +``` + +Open http://localhost:8080 to view the status page. + +## Configuration + +```yaml +site: + name: "My Status Page" + description: "Service Status" + +server: + host: "0.0.0.0" + port: 8080 + +storage: + path: "./kaze.db" + history_days: 90 + +groups: + - name: "Web Services" + monitors: + - name: "API" + type: https + target: "https://api.example.com/health" + interval: 30s + timeout: 10s + expected_status: 200 + + - name: "Infrastructure" + monitors: + - name: "Database" + type: tcp + target: "db.example.com:5432" + interval: 30s + timeout: 5s + +incidents: + - title: "Scheduled Maintenance" + status: scheduled + message: "Database upgrade" + scheduled_start: "2026-02-01T02:00:00Z" + scheduled_end: "2026-02-01T04:00:00Z" +``` + +See `config.example.yaml` for full configuration reference. + +## Monitor Types + +### HTTP/HTTPS + +```yaml +- name: "API" + type: https + target: "https://api.example.com" + interval: 30s + timeout: 10s + expected_status: 200 + verify_ssl: true + method: GET + headers: + Authorization: "Bearer token" +``` + +### TCP + +```yaml +- name: "Database" + type: tcp + target: "db.example.com:5432" + interval: 30s + timeout: 5s +``` + +## API Endpoints + +| Endpoint | Description | +|----------|-------------| +| `GET /` | Status page HTML | +| `GET /api/status` | All monitors status (JSON) | +| `GET /api/monitor/{name}` | Single monitor status (JSON) | +| `GET /api/history/{name}` | Monitor uptime history (JSON) | + +## Building + +```bash +# Development build +make build + +# Production build (optimized) +make build-prod + +# Cross-platform builds +make build-all +``` + +## Docker + +```bash +# Build image +docker build -t kaze . + +# Run +docker run -p 8080:8080 -v ./config.yaml:/app/config.yaml kaze +``` + +## Command Line Options + +``` +Usage: kaze [options] + +Options: + -config string + Path to configuration file (default "config.yaml") + -debug + Enable debug logging + -version + Show version information +``` + +## License + +MIT |