aboutsummaryrefslogtreecommitdiff

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

# 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

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

- 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

- 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

# Development build
make build

# Production build (optimized)
make build-prod

# Cross-platform builds
make build-all

Docker

# Build image
docker build -t kaze .

# Run with single data volume (recommended)
# Place config.yaml in your data directory before running
mkdir -p data
cp config.example.yaml data/config.yaml
# Edit data/config.yaml and set storage.path to "./data/kaze.db"
docker run -d -p 8080:8080 -v $(pwd)/data:/app/data kaze

# Or run with separate mounts (legacy)
docker run -p 8080:8080 -v ./config.yaml:/app/config.yaml -v ./data:/app/data 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