Skip to content

Commit 110d57c

Browse files
committed
Improve error handling
1 parent fbce466 commit 110d57c

File tree

4 files changed

+36
-32
lines changed

4 files changed

+36
-32
lines changed

errorhandling.go

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,25 @@ import (
77
)
88

99
func buildErrorMessageForMetrics(err error, settings RequestMetricSettings) error {
10-
settingLine := []string{
11-
fmt.Sprintf("name[%v]", settings.Name),
12-
fmt.Sprintf("filter[%v]", settings.Filter),
10+
settingLine := []string{}
11+
12+
if settings.Name != "" {
13+
settingLine = append(
14+
settingLine,
15+
fmt.Sprintf("name[%v]", settings.Name),
16+
)
17+
}
18+
19+
if settings.Filter != "" {
20+
settingLine = append(
21+
settingLine,
22+
fmt.Sprintf("filter[%v]", settings.Filter),
23+
)
1324
}
14-
return errors.New(fmt.Sprintf("%v: %v", strings.Join(settingLine, " "), err))
25+
26+
if len(settingLine) >= 1 {
27+
err = errors.New(fmt.Sprintf("%v: %v", strings.Join(settingLine, " "), err))
28+
}
29+
30+
return err
1531
}

probe_metrics_list.go

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,8 @@ func probeMetricsListHandler(w http.ResponseWriter, r *http.Request) {
3030
r = r.WithContext(ctx)
3131

3232
var settings RequestMetricSettings
33-
if val, err := NewRequestMetricSettings(r); err == nil {
34-
settings = val
35-
} else {
36-
Logger.Error(err)
33+
if settings, err = NewRequestMetricSettings(r); err != nil {
34+
Logger.Errorln(buildErrorMessageForMetrics(err, settings))
3735
http.Error(w, err.Error(), http.StatusBadRequest)
3836
return
3937
}
@@ -50,8 +48,7 @@ func probeMetricsListHandler(w http.ResponseWriter, r *http.Request) {
5048
list, err := azureInsightMetrics.ListResources(subscription, settings.Filter)
5149

5250
if err != nil {
53-
err = buildErrorMessageForMetrics(err, settings)
54-
Logger.Error(err)
51+
Logger.Errorln(buildErrorMessageForMetrics(err, settings))
5552
http.Error(w, err.Error(), http.StatusBadRequest)
5653
return
5754
}
@@ -74,9 +71,8 @@ func probeMetricsListHandler(w http.ResponseWriter, r *http.Request) {
7471
"result": "success",
7572
}).Inc()
7673
} else {
77-
err = buildErrorMessageForMetrics(err, settings)
7874
Logger.Verbosef("name[%v]subscription[%v] failed fetching metrics for %v", settings.Name, subscription, *val.ID)
79-
Logger.Warningln(err)
75+
Logger.Warningln(buildErrorMessageForMetrics(err, settings))
8076

8177
prometheusMetricRequests.With(prometheus.Labels{
8278
"subscriptionID": subscription,

probe_metrics_resource.go

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package main
22

33
import (
44
"context"
5-
"errors"
65
"fmt"
76
"github.com/prometheus/client_golang/prometheus"
87
"github.com/prometheus/client_golang/prometheus/promhttp"
@@ -29,25 +28,21 @@ func probeMetricsResourceHandler(w http.ResponseWriter, r *http.Request) {
2928
r = r.WithContext(ctx)
3029

3130
var settings RequestMetricSettings
32-
if val, err := NewRequestMetricSettings(r); err == nil {
33-
settings = val
34-
} else {
35-
Logger.Error(err)
31+
if settings, err = NewRequestMetricSettings(r); err != nil {
32+
Logger.Errorln(buildErrorMessageForMetrics(err, settings))
3633
http.Error(w, err.Error(), http.StatusBadRequest)
3734
return
3835
}
3936

4037
if len(settings.Subscriptions) != 1 {
41-
err := errors.New("Invalid subscription, one subscription needs to be specified")
42-
Logger.Error(err)
38+
Logger.Errorln(buildErrorMessageForMetrics(err, settings))
4339
http.Error(w, err.Error(), http.StatusBadRequest)
4440
return
4541
}
4642
subscription := settings.Subscriptions[0]
4743

4844
if len(settings.Target) == 0 {
49-
err := errors.New("Invalid target or target empty")
50-
Logger.Error(err)
45+
Logger.Errorln(buildErrorMessageForMetrics(err, settings))
5146
http.Error(w, err.Error(), http.StatusBadRequest)
5247
return
5348
}
@@ -58,16 +53,15 @@ func probeMetricsResourceHandler(w http.ResponseWriter, r *http.Request) {
5853
result, err := azureInsightMetrics.FetchMetrics(ctx, subscription, target, settings)
5954

6055
if err != nil {
61-
err = buildErrorMessageForMetrics(err, settings)
62-
Logger.Warningln(err)
56+
Logger.Warningln(buildErrorMessageForMetrics(err, settings))
6357
prometheusMetricRequests.With(prometheus.Labels{
6458
"subscriptionID": subscription,
6559
"handler": PROBE_METRICS_RESOURCE_URL,
6660
"filter": "",
6761
"result": "error",
6862
}).Inc()
6963
http.Error(w, err.Error(), http.StatusBadRequest)
70-
return
64+
continue
7165
}
7266

7367
Logger.Verbosef("subscription[%v] fetched metrics for %v", subscription, target)

probe_metrics_scrape.go

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,22 +32,20 @@ func probeMetricsScrapeHandler(w http.ResponseWriter, r *http.Request) {
3232
r = r.WithContext(ctx)
3333

3434
var settings RequestMetricSettings
35-
if val, err := NewRequestMetricSettings(r); err == nil {
36-
settings = val
37-
} else {
38-
Logger.Error(err)
35+
if settings, err = NewRequestMetricSettings(r); err != nil {
36+
Logger.Errorln(buildErrorMessageForMetrics(err, settings))
3937
http.Error(w, err.Error(), http.StatusBadRequest)
4038
return
4139
}
4240
registry, metricGauge := azureInsightMetrics.CreatePrometheusRegistryAndMetricsGauge(settings.Name)
4341

4442
if metricTagName, err = paramsGetRequired(params, "metricTagName"); err != nil {
45-
Logger.Error(err)
43+
Logger.Errorln(buildErrorMessageForMetrics(err, settings))
4644
http.Error(w, err.Error(), http.StatusBadRequest)
4745
return
4846
}
4947
if aggregationTagName, err = paramsGetRequired(params, "aggregationTagName"); err != nil {
50-
Logger.Error(err)
48+
Logger.Errorln(buildErrorMessageForMetrics(err, settings))
5149
http.Error(w, err.Error(), http.StatusBadRequest)
5250
return
5351
}
@@ -61,7 +59,7 @@ func probeMetricsScrapeHandler(w http.ResponseWriter, r *http.Request) {
6159
list, err := azureInsightMetrics.ListResources(subscription, settings.Filter)
6260

6361
if err != nil {
64-
Logger.Error(err)
62+
Logger.Errorln(buildErrorMessageForMetrics(err, settings))
6563
http.Error(w, err.Error(), http.StatusBadRequest)
6664
return
6765
}
@@ -90,7 +88,7 @@ func probeMetricsScrapeHandler(w http.ResponseWriter, r *http.Request) {
9088
"result": "success",
9189
}).Inc()
9290
} else {
93-
Logger.Warningln(err)
91+
Logger.Warningln(buildErrorMessageForMetrics(err, settings))
9492
prometheusMetricRequests.With(prometheus.Labels{
9593
"subscriptionID": subscription,
9694
"handler": PROBE_METRICS_SCRAPE_URL,

0 commit comments

Comments
 (0)