Thanks for the quick response, Jun (and many thanks to Jason for confirming
and further investigating the issue). I've tested the patch, and it does
fix the fundamental issue, but I do have a few comments that I'll leave on
the ticket.

On Tue, Jan 27, 2015 at 9:19 AM, Jun Rao <j...@confluent.io> wrote:

> Jason, Kyle,
>
> I created an 0.8.2 blocker
> https://issues.apache.org/jira/browse/KAFKA-1902
> and attached a patch there. Could you test it out and see if it fixes the
> issue with the reporter? The patch adds tags as scope in MetricName.
>
> Thanks,
>
> Jun
>
> On Tue, Jan 27, 2015 at 7:39 AM, Jun Rao <j...@confluent.io> wrote:
>
> > Jason,
> >
> > So, this sounds like a real issue. Perhaps we can fix it just by setting
> > the tag name as the scope. For example, for mbean kafka.server:type=
> > BrokerTopicMetrics,name=BytesInPerSec,topic=test, we can have
> >
> > group: "kafka.server"
> > type: "BrokerTopicMetrics"
> > name: "BytesInPerSec"
> > scope: "topic=test"
> >
> > Do you know if scope can have characters like "=" and "," (e.g., for
> scope
> > like "topic=test,partition=1")?
> >
> > The issue with using mytopic-BytesInPerSec as the name is what we are
> > trying to fix in kafka-1481. Topic name (and clientId, etc) can have dash
> > in it and it's hard to parse.
> >
> > Thanks,
> >
> > Jun
> >
> >
> >
> > On Tue, Jan 27, 2015 at 6:30 AM, Jason Rosenberg <j...@squareup.com>
> wrote:
> >
> >> Remember multiple people have reported this issue. Per topic metrics no
> >> longer appear in graphite (or in any system modeled after the yammer
> >> GraphiteReporter). They are not being seen as unique.
> >>
> >> While these metrics are registered in the registry as separate
> >> ‘MetricName’
> >> instances (varying only by mbeanName), the GraphiteReporter sends the
> >> metrics to graphite using only the 4 fields I describe above.
> >> Consequently,
> >> multiple metrics in the registry get sent to graphite under the same
> name.
> >> Thus these metrics all end up in the same bucket in graphite, trampling
> >> over each other making them useless. They aren’t ‘double counted’ so
> much
> >> as flapping between multiple independent values.
> >>
> >> We actually have our own Reporter class (based off the yammer
> >> GraphiteReporter). Our version sends metrics through kafka which is then
> >> consumed downstream by multiple metric consumers.
> >>
> >> The ConsoleReporter isn’t useful for actually persisting metrics
> anywhere.
> >> It’s just iterating through all the (identically named metrics in the
> >> registry (save for the different mbeanNames))….
> >>
> >> The mbeanName, as constructed, is not useful as a human readable metric
> >> name, to be presented in a browsable tree of metrics, etc. The
> >> ‘group’:’type’:’name’:’scope’ are the pieces that matter.
> >>
> >> The fix here is to produce MetricName instances similar to 0.8.1.1, etc.
> >> In
> >> this case, it should probably be something like:
> >>
> >> group: kafka.server
> >> type: BrokerTopicMetrics
> >> name: mytopic-BytesInPerSec
> >> group: <unused>
> >>
> >> Jason
> >> ​
> >>
> >> On Tue, Jan 27, 2015 at 7:26 AM, Manikumar Reddy <ku...@nmsworks.co.in>
> >> wrote:
> >>
> >> > I have enabled yammer's ConsoleReporter and I am getting all the
> metrics
> >> > (including per-topic metrics).
> >> >
> >> > Yammer's MetricName object implements equals/hashcode methods using
> >> > mBeanName . We are constructing a unique mBeanName for each metric, So
> >> we
> >> > are not missing/overwriting any metrics.
> >> >
> >> > Current confusion is due to  MetricName.name(). This will be same
> >> > (BytesInPerSec) for both broker level and topic level metrics. We need
> >> to
> >> > use MetricName.getMBeanName() to differentiate between broker level
> and
> >> > topic level metrics.
> >> >
> >> > 0.8.1  MBeanName:
> >> > "kafka.server":type="BrokerTopicMetrics",name="AllTopicsBytesInPerSec"
> >> > "kafka.server":type="BrokerTopicMetrics",name="MYTOPIC-BytesInPerSec"
> >> >
> >> > 0.8.2  MBeanName:
> >> > kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec
> >> > kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec,topic=MYTOPIC
> >> >
> >> >
> >> > ConsoleReporter's O/P:
> >> >
> >> >   BytesInPerSec:  <- This is broker level
> >> >              count = 1521
> >> >          mean rate = 3.63 bytes/s
> >> >      1-minute rate = 0.35 bytes/s
> >> >      5-minute rate = 2.07 bytes/s
> >> >     15-minute rate = 1.25 bytes/s
> >> >
> >> >   BytesInPerSec:  <- This is for topic1
> >> >              count = 626
> >> >          mean rate = 1.89 bytes/s
> >> >      1-minute rate = 0.42 bytes/s
> >> >      5-minute rate = 31.53 bytes/s
> >> >     15-minute rate = 64.66 bytes/s
> >> >
> >> >   BytesInPerSec:  <- This is for topic2
> >> >              count = 895
> >> >          mean rate = 3.62 bytes/s
> >> >      1-minute rate = 1.39 bytes/s
> >> >      5-minute rate = 30.08 bytes/s
> >> >     15-minute rate = 50.27 bytes/s
> >> >
> >> > Manikumar
> >> >
> >> > On Tue, Jan 27, 2015 at 1:59 PM, Jason Rosenberg <j...@squareup.com>
> >> wrote:
> >> >
> >> > > Ok,
> >> > >
> >> > > It looks like the yammer MetricName is not being created correctly
> for
> >> > the
> >> > > sub metrics that include a topic. E.g. a metric with an mbeanName
> >> like:
> >> > >
> >> > >
> >> >
> >>
> kafka.server:type=BrokerTopicMetrics,name=BytesRejectedPerSec,topic=mytopic
> >> > >
> >> > > appears to be malformed. A yammer MetricName has 4 fields that are
> >> used
> >> > in
> >> > > creating a graphite metric, that are included in the constructor:
> >> > > group, type, name, scope.
> >> > >
> >> > > In this case, the metric with the above mbeanName has these fields
> >> set in
> >> > > the MetricName:
> >> > >
> >> > > group: "kafka.server"
> >> > > type: "BrokerTopicMetrics"
> >> > > name: "BytesInPerSec"
> >> > > scope: null
> >> > >
> >> > > Thus, the topic metrics all look the same, and get lumped into the
> >> > > top-level BrokerTopicMetrics (and thus that will now be double
> >> counted).
> >> > It
> >> > > looks like the fix for kafka-1481 was where things got broken. It
> >> seems
> >> > to
> >> > > have introduced ‘tags’ in the building of metric names, and then
> those
> >> > tags
> >> > > only get applied to the mbeanName, but get excluded from the metric
> >> name:
> >> > >
> >> > >
> >> >
> >>
> https://github.com/apache/kafka/commit/457744a820d806e546edebbd8ffd33f6772e519f
> >> > >
> >> > > This is a pretty severe issue, since the yammer metrics for these
> >> stats
> >> > > will be double counted in aggregate, and the per-topic stats will be
> >> > > removed.
> >> > >
> >> > > I should note too, in my previous email, I thought that only the
> >> > per-topic
> >> > > BrokerTopicMetrics were missing, but also several other per-topic
> >> metrics
> >> > > are missing too, e.g. under kafka.log, etc.
> >> > >
> >> > > Jason
> >> > > ​
> >> > >
> >> > > On Tue, Jan 27, 2015 at 2:20 AM, Jason Rosenberg <j...@squareup.com>
> >> > wrote:
> >> > >
> >> > > > I can confirm that the per topic metrics are not coming through to
> >> the
> >> > > > yammer metrics registry.  I do see them in jmx (via jconsole), but
> >> the
> >> > > > MetricsRegistry does not have them.
> >> > > > All the other metrics are coming through that appear in jmx.
> >> > > >
> >> > > > This is with single node instance running locally.
> >> > > >
> >> > > > Jason
> >> > > >
> >> > > >
> >> > > >
> >> > > > On Mon, Jan 26, 2015 at 8:30 PM, Manikumar Reddy <
> >> ku...@nmsworks.co.in
> >> > >
> >> > > > wrote:
> >> > > >
> >> > > >> If you are using multi-node cluster, then metrics may be reported
> >> from
> >> > > >> other servers.
> >> > > >> pl check all the servers in the cluster.
> >> > > >>
> >> > > >> On Tue, Jan 27, 2015 at 4:12 AM, Kyle Banker <
> kyleban...@gmail.com
> >> >
> >> > > >> wrote:
> >> > > >>
> >> > > >> > I've been using a custom KafkaMetricsReporter to report Kafka
> >> broker
> >> > > >> > metrics to Graphite. In v0.8.1.1, Kafka was reporting bytes and
> >> > > >> messages in
> >> > > >> > and out for all topics together and for each individual topic.
> >> > > >> >
> >> > > >> > After upgrading to v0.8.2.0, these metrics are no longer being
> >> > > reported.
> >> > > >> >
> >> > > >> > I'm only seeing the following:
> >> > > >> > BrokerTopicMetrics
> >> > > >> > - BytesInPerSec
> >> > > >> > - BytesOutPerSec
> >> > > >> > - BytesRejectedPerSec
> >> > > >> > - MessagesInPerSec
> >> > > >> >
> >> > > >> > What's more, despite lots of successful writes to the cluster,
> >> the
> >> > > >> values
> >> > > >> > for these remaining metrics are all zero.
> >> > > >> >
> >> > > >> > I saw that there was some refactoring of metric naming code.
> Was
> >> the
> >> > > >> > behavior supposed to have changed?
> >> > > >> >
> >> > > >> > Many thanks in advance.
> >> > > >> >
> >> > > >>
> >> > > >
> >> > > >
> >> > >
> >> >
> >>
> >
> >
>

Reply via email to