aboutsummaryrefslogtreecommitdiff
path: root/config.example.yaml
blob: 81297c5c14a3828bbfea10592384142dc456eccc (plain) (blame)
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