I am trying to add a custom MetricReporter to a running Kafka Connect app (running in distributed mode) which is running in Docker. I have created a custom class: "CustomMetricsReporter" and have set the environment variable in Docker to the following: CONNECT_METRIC_REPORTERS: "com.everbridge.kafka.connect.metrics.CustomMetricsReporter". When starting the connector, we get a ClassNotFoundException being thrown as it can't seem to find the class file (stack trace below).
Where should the jar file with the MetricReporter implementation be placed? I have tried a few places such as "/usr/share/java/kafka", "/usr/share/java/confluent-common", and within the plugin path (didn't expect this to work).
------------------------------------------------------------------------------------------------------
[main] ERROR io.confluent.admin.utils.cli.KafkaReadyCommand - Error while running kafka-ready.
org.apache.kafka.common.KafkaException: Failed create new KafkaAdminClient
at org.apache.kafka.clients.admin.KafkaAdminClient.createInternal(KafkaAdminClient.java:338)
at org.apache.kafka.clients.admin.AdminClient.create(AdminClient.java:62)
at io.confluent.admin.utils.ClusterStatus.isKafkaReady(ClusterStatus.java:138)
at io.confluent.admin.utils.cli.KafkaReadyCommand.main(KafkaReadyCommand.java:150)
Caused by: org.apache.kafka.common.KafkaException: com.everbridge.kafka.connect.metrics.LoggingMetricsReporter ClassNotFoundException exception occurred
at org.apache.kafka.common.config.AbstractConfig.getConfiguredInstances(AbstractConfig.java:357)
at org.apache.kafka.common.config.AbstractConfig.getConfiguredInstances(AbstractConfig.java:332)
at org.apache.kafka.common.config.AbstractConfig.getConfiguredInstances(AbstractConfig.java:319)
at org.apache.kafka.clients.admin.KafkaAdminClient.createInternal(KafkaAdminClient.java:304)
... 3 more
Caused by: java.lang.ClassNotFoundException: com.everbridge.kafka.connect.metrics. CustomMetricsReporter
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.kafka.common.utils.Utils.loadClass(Utils.java:322)
at org.apache.kafka.common.utils.Utils.newInstance(Utils.java:311)
at org.apache.kafka.common.config.AbstractConfig.getConfiguredInstances(AbstractConfig.java:355)