1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
# Kaze Status Page Configuration
# Copy this file to config.yaml and customize for your needs
#
# Docker Usage:
# When running in Docker, place this file and the database in a single data directory:
# docker run -d -p 8080:8080 -v $(pwd)/data:/app/data ghcr.io/fuwn/kaze:latest
# The container expects the config at /app/data/config.yaml
# 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" # For Docker single-volume: use "./data/kaze.db" to store in mounted volume
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:
# "Browser" - Use visitor's browser timezone (recommended for public status pages)
# "Local" - Use server's local timezone
# "UTC" - Use UTC timezone
# "America/New_York" - Use specific IANA timezone (e.g., "Europe/London", "Asia/Tokyo")
timezone: "Browser"
# 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
|