Skip to content

Commit c2b43d1

Browse files
authored
Log as warn invalid JMX metrics (#4161)
1 parent 2118769 commit c2b43d1

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

agent/agent-tooling/src/main/java/com/microsoft/applicationinsights/agent/internal/init/PerformanceCounterInitializer.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
import java.util.HashMap;
3232
import java.util.List;
3333
import java.util.Map;
34+
import java.util.Set;
35+
import java.util.concurrent.ConcurrentHashMap;
3436
import org.slf4j.Logger;
3537
import org.slf4j.LoggerFactory;
3638
import org.slf4j.MDC;
@@ -41,6 +43,8 @@ public class PerformanceCounterInitializer {
4143
private static final String METRIC_NAME_REGEXP = "[a-zA-Z0-9_.-/]+";
4244
private static final String INVALID_CHARACTER_REGEXP = "[^a-zA-Z0-9_.-/]";
4345

46+
private static final Set<String> invalidJmxMetrics = ConcurrentHashMap.newKeySet();
47+
4448
public static void initialize(Configuration configuration) {
4549

4650
PerformanceCounterContainer.INSTANCE.setCollectionFrequencyInSec(
@@ -209,6 +213,13 @@ private static void calculateAndRecordValueForAttribute(
209213
value += Double.parseDouble(String.valueOf(obj));
210214
}
211215
} catch (RuntimeException e) {
216+
if (invalidJmxMetrics.add(jmxAttributeData.metricName)) {
217+
try (MDC.MDCCloseable ignored = CUSTOM_JMX_METRIC_ERROR.makeActive()) {
218+
logger.warn(
219+
"{} JMX metric is invalid because only numeric and boolean JMX metric values are supported.",
220+
jmxAttributeData.metricName);
221+
}
222+
}
212223
ok = false;
213224
break;
214225
}

0 commit comments

Comments
 (0)