38 lines
1.4 KiB
Go
38 lines
1.4 KiB
Go
package config
|
|
|
|
import (
|
|
"flag"
|
|
"time"
|
|
)
|
|
|
|
type Config struct {
|
|
Port int
|
|
Host string
|
|
CollectRunningVMs bool
|
|
CollectStorage bool
|
|
MetricsPrefix string
|
|
LogLevel string
|
|
QMTerminalTimeout time.Duration
|
|
QMMaxTTL time.Duration
|
|
QMRand time.Duration
|
|
QMMonitorDeferClose bool
|
|
ShowVersion bool
|
|
}
|
|
|
|
func Parse() Config {
|
|
c := Config{}
|
|
flag.IntVar(&c.Port, "port", 9116, "HTTP server listen port")
|
|
flag.StringVar(&c.Host, "host", "0.0.0.0", "HTTP server bind address")
|
|
flag.BoolVar(&c.CollectRunningVMs, "collect-running-vms", true, "collect KVM VM metrics")
|
|
flag.BoolVar(&c.CollectStorage, "collect-storage", true, "collect storage pool metrics")
|
|
flag.StringVar(&c.MetricsPrefix, "metrics-prefix", "pve", "metric name prefix")
|
|
flag.StringVar(&c.LogLevel, "loglevel", "INFO", "log level (DEBUG, INFO, WARNING, ERROR)")
|
|
flag.DurationVar(&c.QMTerminalTimeout, "qm-terminal-timeout", 10*time.Second, "qm monitor command timeout")
|
|
flag.DurationVar(&c.QMMaxTTL, "qm-max-ttl", 600*time.Second, "cache TTL for qm monitor data")
|
|
flag.DurationVar(&c.QMRand, "qm-rand", 60*time.Second, "randomness for qm cache expiry")
|
|
flag.BoolVar(&c.QMMonitorDeferClose, "qm-monitor-defer-close", true, "defer closing unresponsive qm sessions")
|
|
flag.BoolVar(&c.ShowVersion, "version", false, "print the version and exit")
|
|
flag.Parse()
|
|
return c
|
|
}
|