You will need to the metrics-graphite jar (
http://mvnrepository.com/artifact/com.yammer.metrics/metrics-graphite)

Thanks,

Jun


On Sat, Feb 8, 2014 at 12:40 PM, Alex Gray <alex.g...@inin.com> wrote:

> With the help of my colleague, we got a little further.
> I created a jar from the following source code (see below), but I get a
> NoClassDefFoundError when I try to start kafka.
> I somehow need to tell Kafka to use my custom reporter.
>
> In my server.properties, I'm trying to tell it to use my custom reporter:
> kafka.metrics.reporters=kafka.metrics.KafkaGraphiteReporter
>
> And the jar file lives in /libs, so I know it's in the class path when
> kafka starts (maybe it's not in the correct order in the class path?).
>
> Here is the error from kafka when I try to start it:
> java.lang.NoClassDefFoundError: com/yammer/metrics/reporting/
> GraphiteReporter
>         at kafka.metrics.KafkaGraphiteReporter.init(
> KafkaGraphiteReporter.java:15)
>         at kafka.metrics.KafkaMetricsReporter$$anonfun$
> startReporters$1.apply(KafkaMetricsReporter.scala:60)
>         at kafka.metrics.KafkaMetricsReporter$$anonfun$
> startReporters$1.apply(KafkaMetricsReporter.scala:58)
>         at scala.collection.IndexedSeqOptimized$class.
> foreach(IndexedSeqOptimized.scala:34)
>         at scala.collection.mutable.WrappedArray.foreach(
> WrappedArray.scala:32)
>         at kafka.metrics.KafkaMetricsReporter$.startReporters(
> KafkaMetricsReporter.scala:58)
>         at kafka.Kafka$.main(Kafka.scala:36)
>         at kafka.Kafka.main(Kafka.scala)
>
> Here is the source code.  It's not really doing anything at the moment...
> I just want kafka to use it when it starts up...
> =====================
> package kafka.metrics;
> import java.util.Map;
> import java.util.concurrent.TimeUnit;
>
> import kafka.utils.VerifiableProperties;
>
> import com.yammer.metrics.Metrics;
> import com.yammer.metrics.core.Metric;
> import com.yammer.metrics.core.MetricName;
> import com.yammer.metrics.reporting.GraphiteReporter;
>
> public class KafkaGraphiteReporter implements KafkaMetricsReporter,
> Runnable {
>
>         public void init(VerifiableProperties arg0) {
>                 GraphiteReporter.enable(1, TimeUnit.MINUTES,
>                                 "my.graphite.server.com",
>                                 2003);
>                 System.out.println("Graphite init...");
>                 Thread t = new Thread(this);
>                 t.setDaemon(true);
>                 t.setName("graphitebg");
>                 t.start();
>         }
>
>         public void run() {
>                 try {
>                         while(true) {
>                                 try {
>                                         Thread.sleep(3000);
>                                 } catch (InterruptedException e) {
>
>                                         e.printStackTrace();
>                                 }
>                                 System.out.println("Graphite background
> thread executing");
>                                 GraphiteReporter.enable(1,
> TimeUnit.MINUTES,
>                                                 "my.graphite.server.com",
>                                                 2003);
>
>                                 Map<MetricName, Metric> allMetrics =
> Metrics.defaultRegistry().allMetrics();
>                                 for (MetricName key : allMetrics.keySet())
> {
>                                         System.out.println(key + "=" +
> allMetrics.get(key).toString());
>                                 }
>                         }
>                 } catch (Exception e) {
>                         e.printStackTrace();
>                 }
>         }
> }
>
> =====================
>
> if you have any thoughts on getting this to work, that would be awesome.
>
> Thanks,
>
> Alex
>
>

Reply via email to