55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/hashicorp/logutils"
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
)
|
|
|
|
type configStructure struct {
|
|
// time configuration
|
|
TimeFormat string `json:"time_format"`
|
|
TimeZone *time.Location
|
|
TimeZoneUTC *time.Location
|
|
|
|
// logging
|
|
Log *logutils.LevelFilter
|
|
|
|
// webserver
|
|
WebSrvPort int `json:"webserver_port"`
|
|
WebSrvIP string `json:"webserver_ip"`
|
|
WebSrvReadTimeout int `json:"webserver_read_timeout"`
|
|
WebSrvWriteTimeout int `json:"webserver_write_timeout"`
|
|
WebSrvIdleTimeout int `json:"webserver_idle_timeout"`
|
|
|
|
// prometheus
|
|
Prometheus configPrometheus
|
|
}
|
|
|
|
type configPrometheus struct {
|
|
Temperature *prometheus.GaugeVec
|
|
}
|
|
|
|
var config = configStructure{
|
|
TimeFormat: "2006-01-02 15:04:05",
|
|
Log: &logutils.LevelFilter{
|
|
Levels: []logutils.LogLevel{"TRACE", "DEBUG", "INFO", "WARNING", "ERROR"},
|
|
Writer: os.Stderr,
|
|
},
|
|
WebSrvReadTimeout: 5,
|
|
WebSrvWriteTimeout: 2,
|
|
WebSrvIdleTimeout: 2,
|
|
|
|
Prometheus: configPrometheus{
|
|
Temperature: prometheus.NewGaugeVec(prometheus.GaugeOpts{
|
|
Namespace: "server_room",
|
|
Subsystem: "exhaust",
|
|
Name: "temp",
|
|
Help: "Temperature measured in the server room",
|
|
},
|
|
[]string{"unit"},
|
|
)},
|
|
}
|