Skip to content

Commit 954b241

Browse files
committed
improved error handling
1 parent f3619b7 commit 954b241

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ password: oneadmin
1212
# interval: 60
1313

1414
# FQDN and port to run the exporter on
15-
host: frontend.server.com
15+
host: 0.0.0.0
1616
port: 9621
1717

1818
# exporter uri to publish on. defaults to /metrics

one_exporter.go

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ func recordMetrics(config config, logger log.Logger) {
109109
pool, err := controller.Hosts().Info()
110110
if err != nil {
111111
level.Error(logger).Log("msg", "error retrieving hosts info", "error", err)
112-
panic(err)
112+
return
113113
}
114114

115115
type metrics struct {
@@ -155,7 +155,7 @@ func recordMetrics(config config, logger log.Logger) {
155155
}
156156
}
157157

158-
func newConfig(fileName string, logger log.Logger) config {
158+
func newConfig(fileName string, logger log.Logger) (config, error) {
159159

160160
viper.SetDefault("endpoint", "") // "" will be set to "http://localhost:2633/RPC2" by goca
161161
viper.SetDefault("interval", 60)
@@ -176,20 +176,18 @@ func newConfig(fileName string, logger log.Logger) config {
176176

177177
err := viper.ReadInConfig()
178178
if err != nil {
179-
level.Error(logger).Log("msg", "error reading config file", "error", err)
180-
panic(err)
179+
return config{}, err
181180
}
182181

183182
return config{
184183
user: viper.Get("user").(string),
185184
password: viper.Get("password").(string),
186-
endpoint: "",
185+
endpoint: viper.Get("endpoint").(string),
187186
interval: viper.Get("interval").(int),
188187
host: viper.Get("host").(string),
189188
port: viper.Get("port").(int),
190189
path: viper.Get("path").(string),
191-
}
192-
190+
}, nil
193191
}
194192

195193
func allowedLevel(logLevel string) level.Option {
@@ -216,7 +214,12 @@ func main() {
216214
logger = level.NewFilter(logger, allowedLevel(*logLevel))
217215
level.Info(logger).Log("msg", "starting exporter for OpenNebula")
218216

219-
config := newConfig(*cfgFile, logger)
217+
config, err := newConfig(*cfgFile, logger)
218+
if err != nil {
219+
level.Error(logger).Log("error", err)
220+
return
221+
}
222+
220223
level.Debug(logger).Log("msg", "loaded config", "user", config.user, "endpoint", config.endpoint)
221224

222225
initCollectors()
@@ -225,6 +228,10 @@ func main() {
225228

226229
level.Info(logger).Log("msg", "starting exporter", "host", config.host, "port", config.port, "path", config.path)
227230
http.Handle(config.path, promhttp.Handler())
228-
http.ListenAndServe(config.host+":"+strconv.Itoa(config.port), nil)
231+
232+
err = http.ListenAndServe(config.host+":"+strconv.Itoa(config.port), nil)
233+
if err != nil {
234+
level.Error(logger).Log("error", err)
235+
}
229236

230237
}

0 commit comments

Comments
 (0)