[
https://issues.apache.org/jira/browse/HADOOP-15230?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated HADOOP-15230:
------------------------------------
Labels: GraphiteSink, metrics pull-request-available (was: GraphiteSink,
metrics)
> 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
> Assignee: Howard Yoo
> Priority: Major
> Labels: GraphiteSink,, metrics, pull-request-available
> Attachments: HADOOP-15230.007.patch
>
> Time Spent: 10m
> Remaining Estimate: 0h
>
> 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
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]