@@ -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