blob: 93b192262126072400b9ec2db946117982ade275 (
plain)
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
|
package server
import (
"time"
)
// All config (.rr.yaml)
// For other section use pointer to distinguish between `empty` and `not present`
type Config struct {
// Server config section
Server struct {
// Command to run as application.
Command string `mapstructure:"command"`
// User to run application under.
User string `mapstructure:"user"`
// Group to run application under.
Group string `mapstructure:"group"`
// Env represents application environment.
Env Env `mapstructure:"env"`
// Relay defines connection method and factory to be used to connect to workers:
// "pipes", "tcp://:6001", "unix://rr.sock"
// This config section must not change on re-configuration.
Relay string `mapstructure:"relay"`
// RelayTimeout defines for how long socket factory will be waiting for worker connection. This config section
// must not change on re-configuration. Defaults to 60s.
RelayTimeout time.Duration `mapstructure:"relayTimeout"`
} `mapstructure:"server"`
RPC *struct {
Listen string `mapstructure:"listen"`
} `mapstructure:"rpc"`
Logs *struct {
Mode string `mapstructure:"mode"`
Level string `mapstructure:"level"`
} `mapstructure:"logs"`
HTTP *struct {
Address string `mapstructure:"address"`
MaxRequestSize int `mapstructure:"max_request_size"`
Middleware []string `mapstructure:"middleware"`
Uploads struct {
Forbid []string `mapstructure:"forbid"`
} `mapstructure:"uploads"`
TrustedSubnets []string `mapstructure:"trusted_subnets"`
Pool struct {
NumWorkers int `mapstructure:"num_workers"`
MaxJobs int `mapstructure:"max_jobs"`
AllocateTimeout string `mapstructure:"allocate_timeout"`
DestroyTimeout string `mapstructure:"destroy_timeout"`
Supervisor struct {
WatchTick int `mapstructure:"watch_tick"`
TTL int `mapstructure:"ttl"`
IdleTTL int `mapstructure:"idle_ttl"`
ExecTTL int `mapstructure:"exec_ttl"`
MaxWorkerMemory int `mapstructure:"max_worker_memory"`
} `mapstructure:"supervisor"`
} `mapstructure:"pool"`
Ssl struct {
Port int `mapstructure:"port"`
Redirect bool `mapstructure:"redirect"`
Cert string `mapstructure:"cert"`
Key string `mapstructure:"key"`
} `mapstructure:"ssl"`
Fcgi struct {
Address string `mapstructure:"address"`
} `mapstructure:"fcgi"`
HTTP2 struct {
Enabled bool `mapstructure:"enabled"`
H2C bool `mapstructure:"h2c"`
MaxConcurrentStreams int `mapstructure:"max_concurrent_streams"`
} `mapstructure:"http2"`
} `mapstructure:"http"`
Redis *struct {
Addrs []string `mapstructure:"addrs"`
MasterName string `mapstructure:"master_name"`
Username string `mapstructure:"username"`
Password string `mapstructure:"password"`
DB int `mapstructure:"db"`
SentinelPassword string `mapstructure:"sentinel_password"`
RouteByLatency bool `mapstructure:"route_by_latency"`
RouteRandomly bool `mapstructure:"route_randomly"`
DialTimeout int `mapstructure:"dial_timeout"`
MaxRetries int `mapstructure:"max_retries"`
MinRetryBackoff int `mapstructure:"min_retry_backoff"`
MaxRetryBackoff int `mapstructure:"max_retry_backoff"`
PoolSize int `mapstructure:"pool_size"`
MinIdleConns int `mapstructure:"min_idle_conns"`
MaxConnAge int `mapstructure:"max_conn_age"`
ReadTimeout int `mapstructure:"read_timeout"`
WriteTimeout int `mapstructure:"write_timeout"`
PoolTimeout int `mapstructure:"pool_timeout"`
IdleTimeout int `mapstructure:"idle_timeout"`
IdleCheckFreq int `mapstructure:"idle_check_freq"`
ReadOnly bool `mapstructure:"read_only"`
} `mapstructure:"redis"`
Boltdb *struct {
Dir string `mapstructure:"dir"`
File string `mapstructure:"file"`
Bucket string `mapstructure:"bucket"`
Permissions int `mapstructure:"permissions"`
TTL int `mapstructure:"TTL"`
} `mapstructure:"boltdb"`
Memcached *struct {
Addr []string `mapstructure:"addr"`
} `mapstructure:"memcached"`
Memory *struct {
Enabled bool `mapstructure:"enabled"`
Interval int `mapstructure:"interval"`
} `mapstructure:"memory"`
Metrics *struct {
Address string `mapstructure:"address"`
Collect struct {
AppMetric struct {
Type string `mapstructure:"type"`
Help string `mapstructure:"help"`
Labels []string `mapstructure:"labels"`
Buckets []float64 `mapstructure:"buckets"`
Objectives []struct {
Num2 float64 `mapstructure:"2,omitempty"`
One4 float64 `mapstructure:"1.4,omitempty"`
} `mapstructure:"objectives"`
} `mapstructure:"app_metric"`
} `mapstructure:"collect"`
} `mapstructure:"metrics"`
Reload *struct {
Interval string `mapstructure:"interval"`
Patterns []string `mapstructure:"patterns"`
Services struct {
HTTP struct {
Recursive bool `mapstructure:"recursive"`
Ignore []string `mapstructure:"ignore"`
Patterns []string `mapstructure:"patterns"`
Dirs []string `mapstructure:"dirs"`
} `mapstructure:"http"`
} `mapstructure:"services"`
} `mapstructure:"reload"`
}
// InitDefaults for the server config
func (cfg *Config) InitDefaults() {
if cfg.Server.Relay == "" {
cfg.Server.Relay = "pipes"
}
if cfg.Server.RelayTimeout == 0 {
cfg.Server.RelayTimeout = time.Second * 60
}
}
|