Hi,

*Problem:*
Some Kafka 0.8.x MBeans have names composed of things like <consumer
group>-<topic>-<metric name>.  Note how dashes are used as delimiters.
 When <consumer group> and <topic> don't contain the delimiter character
all is good if you want to extract parts of this MBean name by simply
splitting on the delimiter character.  The problem is that dashes are
allowed in topic and group names, so this splitting doesn't work.
Moreover, underscores are also used as delimiters, and they can also be
used in things like topic names.

*Example*:
This MBean's name is composed of <consumer group>-<topic>-BytesPerSec:

kafka.consumer:type="ConsumerTopicMetrics", name="*myGroup**-myTopic**-*
BytesPerSec"

Here we can actually split on "-" and extract all 3 parts from the MBean
name::
* consumer group ('*myGroup*')
* topic ('*myTopic*')
* metric (‘BytesPerSec’)

All good!

But imagine if I named the group: *my-Group*
And if I named the topic: *my-Topic*

Then we'd have:
kafka.consumer:type="ConsumerTopicMetrics", name="*my-Group**-my-Topic**-*
BytesPerSec"

Now splitting on "-" would no longer work!  To extract "my-Group" and
"my-Topic" and "BytesPerSec" parts I would have to know the specific group
name and topic name to look for and could not use generic approach of just
splitting the MBean name on the delimiter.

*Solution*:
The patch in https://issues.apache.org/jira/browse/KAFKA-1481 replaces all
_ and - characters where they are used as delimiters in MBean names with a
"|" character.  Because the "I" character is not allowed in topic names,
consumer groups, host names, splitting on this new and unified delimiter
works.

I hope this explains the problem, the solution, and that this can make it
in the next 0.8.x.

Otis
--
Monitoring * Alerting * Anomaly Detection * Centralized Log Management
Solr & Elasticsearch Support * http://sematext.com/

Reply via email to