[ 
https://issues.apache.org/jira/browse/HADOOP-15230?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16363309#comment-16363309
 ] 

ASF GitHub Bot commented on HADOOP-15230:
-----------------------------------------

GitHub user howardyoo opened a pull request:

    https://github.com/apache/hadoop/pull/340

    fixes GraphiteSink to support point tags in correct format

    Fixed GraphiteSink to support point tags in correct format, having appeared 
at the end and also having no space as its name and value pair.
    [JIRA Ticket](https://issues.apache.org/jira/browse/HADOOP-15230)


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/howardyoo/hadoop origin/HADOOP-15230

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/hadoop/pull/340.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #340
    
----
commit 70ff7d7bd562df03a86ea8819cac07606ba3b70e
Author: Howard Yoo <yooh@...>
Date:   2018-02-14T01:01:02Z

    fixes GraphiteSink to support point tags in correct format
    
    Fixed GraphiteSink to support point tags in correct format, having appeared 
at the end and also having no space as its name and value pair.

----


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

Reply via email to