[ https://issues.apache.org/jira/browse/HADOOP-15230?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Howard Yoo updated HADOOP-15230: -------------------------------- Attachment: HADOOP-15230.002.patch > org.apache.hadoop.metrics2.GraphiteSink is not implemented correctly > -------------------------------------------------------------------- > > Key: HADOOP-15230 > URL: https://issues.apache.org/jira/browse/HADOOP-15230 > Project: Hadoop Common > Issue Type: Bug > Components: metrics > Reporter: Howard Yoo > Priority: Major > Labels: GraphiteSink,, metrics > Attachments: HADOOP-15230.002.patch > > > org.apache.hadoop.metrics2.GraphiteSink's implementation has certain problems > that would make it to generate metrics incorrectly. > The problem lies with line 77 ~ 84 of the GraphiteSink java: > {code:java} > for (MetricsTag tag : record.tags()) { > if (tag.value() != null) { > metricsPathPrefix.append("."); > metricsPathPrefix.append(tag.name()); > metricsPathPrefix.append("="); > metricsPathPrefix.append(tag.value()); > } > } > {code} > It produces point tags having name=value pair in the metrics. However, notice > how the tags are added with '.' as its delimiters. Rather than using the '.' > character, it should follow the following convention mentioned in the latest > graphite doc of using ';' character. > [http://graphite.readthedocs.io/en/latest/tags.html] > Also, the value is not properly being escaped, meaning that if the value has > a '.' character in it, it will easily confuse Graphite to accept it as a > delimiter, rather than the value. A really good prime example is when the > value is a hostname or ip address, > {code:java} > metrics.example.Hostname=this.is.a.hostname.and.this.is.Metrics 10.0{code} > In this example, the since the value of the hostname contains '.', it is > extremely hard for the receiving end to determine which part is hostname and > which part is the rest of the metrics name. A good strategy is to convert any > '.' character in the value to be converted to other characters, such as '_'. > However, the best way would be to follow the latest metrics convention of > using ';' > {code:java} > metrics.example.and.this.is.Metrics;Hostname=this.is.a.hostname 10.0{code} -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-issues-h...@hadoop.apache.org