jmxtrans / jmxtrans-agent

Java Agent based JMX metrics exporter.
MIT License
178 stars 110 forks source link

Ability to exclude/filter attributes #110

Open dhay opened 6 years ago

dhay commented 6 years ago

In our applications, we use the Codahale/Dropwizard metrics library to publish our metrics to JMX. Rather than configure each metric, I'd like to grab everything under a particular domain. For example, something like this:

<query objectName="MyApplication-metrics:type=*,group=*,name=*"
       resultAlias="app.%type%.%group%.%name%.#attribute#"/>

However, because of the way the metrics are published to JMX, I end up with metrics that aren't really metrics. For example:

myapplication.app.API.ALL_statusSeries_5xx.responseTime.RateUnit events/second 1505500740
myapplication.app.API.ALL_statusSeries_5xx.responseTime.DurationUnit milliseconds 1505500740

What I'd really like to do is specify a set of attributes not to include. The configuration might look something like this:

<query objectName="MyApplication-metrics:type=*,group=*,name=*"
       excludeAttributes="RateUnit,DurationUnit"
       resultAlias="app.%type%.%group%.%name%.#attribute#"/>

I'm guessing that some might want to do something similar when processing CompositeData, though I don't personally have that need at the moment.

Thanks!

dhay commented 6 years ago

Another way to solve this would be to overload the attribute and attributes field such that any attributes preceded by a minus sign (-) would be excluded. I've started a branch using this approach for a future pull request.

For example

<query objectName="MyApplication-metrics:type=*,group=*,name=*"
       attributes="-RateUnit,-DurationUnit"
       resultAlias="app.%type%.%group%.%name%.#attribute#"/>
cyrille-leclerc commented 6 years ago

smart idea @dhay !