# Kaze Status Page Configuration # Copy this file to config.yaml and customize for your needs # Site metadata site: name: "Kaze Status" description: "Service Status Page" # logo: "https://example.com/logo.svg" # Optional logo URL # favicon: "https://example.com/favicon.ico" # Optional favicon URL # HTTP server settings server: host: "0.0.0.0" port: 8080 # Storage settings storage: path: "./kaze.db" history_days: 90 # How many days of history to retain (7, 30, or 90) # Display settings display: # Tick aggregation mode for history bar: # ping - Show individual pings (most granular) # minute - Aggregate by minute # hour - Aggregate by hour (default) # day - Aggregate by day (like OpenStatus) tick_mode: hour # Number of ticks/bars to display in the history tick_count: 45 # For 'ping' mode only: # true = Show fixed slots (empty bars for missing data) # false = Grow dynamically as pings come in ping_fixed_slots: true # Timezone for display (e.g., "UTC", "America/New_York", "Local") timezone: "Local" # Show the theme toggle button (true by default) # Set to false to hide the light/dark mode toggle show_theme_toggle: true # Monitor groups groups: - name: "Web Services" # default_collapsed: false # Start collapsed (false = expanded by default) # show_group_uptime: true # Show aggregate uptime percentage (true by default) monitors: - name: "Website" type: https target: "https://example.com" interval: 30s timeout: 10s expected_status: 200 verify_ssl: true - name: "API" type: https target: "https://api.example.com/health" interval: 30s timeout: 10s expected_status: 200 method: GET # headers: # Authorization: "Bearer token" - name: "Infrastructure" # default_collapsed: false # show_group_uptime: true monitors: - name: "Database" type: tcp target: "localhost:5432" interval: 30s timeout: 5s - name: "Redis" type: tcp target: "localhost:6379" interval: 30s timeout: 5s # Incidents and maintenance (optional) incidents: # Scheduled maintenance example - title: "Scheduled Maintenance" status: scheduled message: "Database maintenance window - expect brief interruptions" scheduled_start: "2026-02-01T02:00:00Z" scheduled_end: "2026-02-01T04:00:00Z" affected_monitors: - "Database" # Past incident example (resolved) # - title: "API Performance Degradation" # status: resolved # message: "Users experienced slow API response times" # created_at: "2026-01-15T10:00:00Z" # resolved_at: "2026-01-15T12:30:00Z" # updates: # - time: "2026-01-15T10:30:00Z" # status: investigating # message: "Investigating reports of slow API responses" # - time: "2026-01-15T11:00:00Z" # status: identified # message: "Identified database connection pool exhaustion as root cause" # - time: "2026-01-15T12:30:00Z" # status: resolved # message: "Increased connection pool size. Monitoring for stability." # Monitor Configuration Reference # ================================ # # Common fields for all monitor types: # name: string (required) - Display name for the monitor # type: string (required) - Monitor type: http, https, or tcp # target: string (required) - URL or host:port to monitor # interval: duration - Check interval (default: 30s) # timeout: duration - Request timeout (default: 10s) # # HTTP/HTTPS specific fields: # expected_status: int - Expected HTTP status code (default: 200) # method: string - HTTP method (default: GET) # headers: map[string]string - Custom headers to send # body: string - Request body for POST/PUT/PATCH # verify_ssl: bool - Verify SSL certificate (default: true) # # TCP specific fields: # (none - just needs host:port target) # # Duration format: # Use Go duration strings: 30s, 1m, 5m, 1h, etc. # # Incident statuses: # scheduled - Planned maintenance # investigating - Looking into the issue # identified - Root cause found # monitoring - Fix applied, monitoring # resolved - Issue resolved