in ambari-metrics-kafka-sink/src/main/java/org/apache/hadoop/metrics2/sink/kafka/KafkaTimelineMetricsReporter.java [503:520]
protected String sanitizeName(MetricName name) {
if (name == null) {
return "";
}
final String qualifiedTypeName = name.getGroup() + "." + name.getType() + "." + name.getName();
final String metricName = name.hasScope() ? qualifiedTypeName + '.' + name.getScope() : qualifiedTypeName;
final StringBuilder sb = new StringBuilder();
for (int i = 0; i < metricName.length(); i++) {
final char p = metricName.charAt(i);
if (!(p >= 'A' && p <= 'Z') && !(p >= 'a' && p <= 'z') && !(p >= '0' && p <= '9') && (p != '_') && (p != '-')
&& (p != '.') && (p != '\0')) {
sb.append('_');
} else {
sb.append(p);
}
}
return sb.toString();
}