Skip to content

Commit c40ba85

Browse files
committed
check_temperature: fix duplicate metrics
when having multiple hwmon* folder, the sensors package returns the same label multiple times. Simply append a counter then.
1 parent 2182146 commit c40ba85

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

pkg/snclient/check_temperature.go

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -81,22 +81,31 @@ func (l *CheckTemperature) Check(ctx context.Context, _ *Agent, check *CheckData
8181
log.Debugf("os specific sensors error: %s: %w", err.Error(), err)
8282
}
8383

84+
duplicates := map[string]int{}
8485
for i := range merged {
85-
l.addSensor(check, &merged[i])
86+
l.addSensor(check, &merged[i], duplicates)
8687
}
8788

8889
return check.Finalize()
8990
}
9091

91-
func (l *CheckTemperature) addSensor(check *CheckData, sensor *temperatureStat) {
92+
func (l *CheckTemperature) addSensor(check *CheckData, sensor *temperatureStat, duplicates map[string]int) {
9293
fields := utils.FieldsN(strings.ReplaceAll(sensor.SensorKey, "_", " "), 2)
9394
name := fields[0]
9495
label := fields[0]
9596
if len(fields) >= 2 {
9697
label = fields[1]
9798
}
99+
sensorKey := sensor.SensorKey
100+
if num, ok := duplicates[label]; ok {
101+
duplicates[label] = num + 1
102+
label = fmt.Sprintf("%s.%d", label, num)
103+
sensorKey = fmt.Sprintf("%s.%d", sensorKey, num)
104+
} else {
105+
duplicates[label] = 1
106+
}
98107
entry := map[string]string{
99-
"sensor": sensor.SensorKey,
108+
"sensor": sensorKey,
100109
"name": name,
101110
"label": label,
102111
"temperature": fmt.Sprintf("%f", sensor.Temperature),
@@ -114,13 +123,13 @@ func (l *CheckTemperature) addSensor(check *CheckData, sensor *temperatureStat)
114123
}
115124

116125
check.result.Metrics = append(check.result.Metrics, &CheckMetric{
117-
ThresholdName: sensor.SensorKey,
118-
Name: sensor.SensorKey,
126+
ThresholdName: sensorKey,
127+
Name: sensorKey,
119128
Value: sensor.Temperature,
120129
Min: &sensor.Min,
121130
Max: &sensor.High,
122-
Warning: check.ExpandMetricMacros(check.TransformMultipleKeywords([]string{"temp", "temperature"}, sensor.SensorKey, check.warnThreshold), entry),
123-
Critical: check.ExpandMetricMacros(check.TransformMultipleKeywords([]string{"temp", "temperature"}, sensor.SensorKey, check.critThreshold), entry),
131+
Warning: check.ExpandMetricMacros(check.TransformMultipleKeywords([]string{"temp", "temperature"}, sensorKey, check.warnThreshold), entry),
132+
Critical: check.ExpandMetricMacros(check.TransformMultipleKeywords([]string{"temp", "temperature"}, sensorKey, check.critThreshold), entry),
124133
})
125134

126135
check.listData = append(check.listData, entry)

0 commit comments

Comments
 (0)