Skip to content
This repository was archived by the owner on Aug 23, 2023. It is now read-only.

Commit 57151f2

Browse files
committed
initialize metrics up front
1 parent 43ea289 commit 57151f2

File tree

1 file changed

+33
-11
lines changed

1 file changed

+33
-11
lines changed

cmd/mt-parrot/monitor.go

+33-11
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import (
1212
)
1313

1414
var (
15-
httpError = stats.NewCounter32("parrot.monitoring.error;error=http")
16-
invalidError = stats.NewCounter32("parrot.monitoring.error;error=invalid")
15+
httpError = stats.NewCounter32("parrot.monitoring.error;error=http")
16+
invalidError = stats.NewCounter32("parrot.monitoring.error;error=invalid")
1717
)
1818

1919
type seriesStats struct {
@@ -24,12 +24,23 @@ type seriesStats struct {
2424
deltaSum float64
2525
//the number of timestamps where value != ts
2626
numNonMatching int32
27-
2827
//tracks the last seen non-NaN time stamp (useful for lag
2928
lastSeen uint32
3029
}
3130

31+
type partitionMetrics struct {
32+
//number of missing values for each series
33+
nanCount *stats.Gauge32
34+
//time since the last value was recorded
35+
lag *stats.Gauge32
36+
//total amount of drift between expected value and actual values
37+
deltaSum *stats.Gauge32
38+
//total number of entries where drift occurred
39+
nonMatching *stats.Gauge32
40+
}
41+
3242
func monitor() {
43+
metricsBySeries := initMetricsBySeries()
3344
for tick := range time.NewTicker(queryInterval).C {
3445

3546
query := graphite.ExecuteRenderQuery(buildRequest(tick))
@@ -65,16 +76,27 @@ func monitor() {
6576
}
6677
}
6778

68-
//number of missing values for each series
69-
stats.NewGauge32(fmt.Sprintf("parrot.monitoring.nancount;partition=%d", partition)).Set(int(serStats.nans))
70-
//time since the last value was recorded
71-
stats.NewGauge32(fmt.Sprintf("parrot.monitoring.lag;partition=%d", partition)).Set(int(serStats.lastTs - serStats.lastSeen))
72-
//total amount of drift between expected value and actual values
73-
stats.NewGauge32(fmt.Sprintf("parrot.monitoring.deltaSum;partition=%d", partition)).Set(int(serStats.deltaSum))
74-
//total number of entries where drift occurred
75-
stats.NewGauge32(fmt.Sprintf("parrot.monitoring.nonMatching;partition=%d", partition)).Set(int(serStats.numNonMatching))
79+
metrics := metricsBySeries[partition]
80+
metrics.nanCount.Set(int(serStats.nans))
81+
metrics.lag.Set(int(serStats.lastTs - serStats.lastSeen))
82+
metrics.deltaSum.Set(int(serStats.deltaSum))
83+
metrics.nonMatching.Set(int(serStats.numNonMatching))
84+
}
85+
}
86+
}
87+
88+
func initMetricsBySeries() []partitionMetrics {
89+
var metricsBySeries []partitionMetrics
90+
for p := 0; p < int(partitionCount); p++ {
91+
metrics := partitionMetrics{
92+
nanCount: stats.NewGauge32(fmt.Sprintf("parrot.monitoring.nancount;partition=%d", p)),
93+
lag: stats.NewGauge32(fmt.Sprintf("parrot.monitoring.lag;partition=%d", p)),
94+
deltaSum: stats.NewGauge32(fmt.Sprintf("parrot.monitoring.deltaSum;partition=%d", p)),
95+
nonMatching: stats.NewGauge32(fmt.Sprintf("parrot.monitoring.nonMatching;partition=%d", p)),
7696
}
97+
metricsBySeries = append(metricsBySeries, metrics)
7798
}
99+
return metricsBySeries
78100
}
79101

80102
func buildRequest(now time.Time) *http.Request {

0 commit comments

Comments
 (0)