Skip to content

Graphite reporter not working for beekeeper-vacuum-tool #50

@massdosage

Description

@massdosage

Describe the bug

The Beekeeper Vacuum Tool doesn't appear to use any of the Graphite Configuration provided in the yml file, it ignores this whether its set to enabled or not. Even with no Graphite Configuration it appears to create and attempt to use a default Dropwizards/Codahale graphite reporter which throws warnings like so:

2020-04-22 20:05:54.397  WARN 15781 --- [           main] c.c.metrics.graphite.GraphiteReporter    : Unable to report to Graphite

java.net.ConnectException: Connection refused (Connection refused)
        at java.base/java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:na]
        at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399) ~[na:na]
        at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242) ~[na:na]
        at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224) ~[na:na]
        at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403) ~[na:na]
        at java.base/java.net.Socket.connect(Socket.java:609) ~[na:na]
        at java.base/java.net.Socket.connect(Socket.java:558) ~[na:na]
        at java.base/java.net.Socket.<init>(Socket.java:454) ~[na:na]
        at java.base/java.net.Socket.<init>(Socket.java:264) ~[na:na]
        at java.base/javax.net.DefaultSocketFactory.createSocket(SocketFactory.java:277) ~[na:na]
        at com.codahale.metrics.graphite.PickledGraphite.connect(PickledGraphite.java:185) ~[metrics-graphite-4.0.5.jar!/:4.0.5]
        at com.codahale.metrics.graphite.GraphiteReporter.report(GraphiteReporter.java:265) ~[metrics-graphite-4.0.5.jar!/:4.0.5]
        at com.codahale.metrics.ScheduledReporter.report(ScheduledReporter.java:237) ~[metrics-core-4.0.5.jar!/:4.0.5]
        at io.micrometer.graphite.GraphiteMeterRegistry.close(GraphiteMeterRegistry.java:94) ~[micrometer-registry-graphite-1.1.3.jar!/:1.1.3]
        at java.base/java.lang.Iterable.forEach(Iterable.java:75) ~[na:na]
        at java.base/java.util.Collections$SetFromMap.forEach(Collections.java:5581) ~[na:na]
        at io.micrometer.core.instrument.composite.CompositeMeterRegistry.close(CompositeMeterRegistry.java:232) ~[micrometer-core-1.1.3.jar!/:1.1.3]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
        at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
        at org.springframework.beans.factory.support.DisposableBeanAdapter.invokeCustomDestroyMethod(DisposableBeanAdapter.java:337) ~[spring-beans-5.1.5.RELEASE.jar!/:5.1.5.RELEASE]
        at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:271) ~[spring-beans-5.1.5.RELEASE.jar!/:5.1.5.RELEASE]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:571) ~[spring-beans-5.1.5.RELEASE.jar!/:5.1.5.RELEASE]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:543) ~[spring-beans-5.1.5.RELEASE.jar!/:5.1.5.RELEASE]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1055) ~[spring-beans-5.1.5.RELEASE.jar!/:5.1.5.RELEASE]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:504) ~[spring-beans-5.1.5.RELEASE.jar!/:5.1.5.RELEASE]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1062) ~[spring-beans-5.1.5.RELEASE.jar!/:5.1.5.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1057) ~[spring-context-5.1.5.RELEASE.jar!/:5.1.5.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1026) ~[spring-context-5.1.5.RELEASE.jar!/:5.1.5.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:975) ~[spring-context-5.1.5.RELEASE.jar!/:5.1.5.RELEASE]
        at org.springframework.boot.SpringApplication.handleRunFailure(SpringApplication.java:834) ~[spring-boot-2.1.3.RELEASE.jar!/:2.1.3.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:327) ~[spring-boot-2.1.3.RELEASE.jar!/:2.1.3.RELEASE]
        at com.expediagroup.beekeeper.vacuum.BeekeeperVacuumTool.main(BeekeeperVacuumTool.java:43) ~[classes!/:na]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
        at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) ~[beekeeper-vacuum-tool-2.1.0-SNAPSHOT.jar:na]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) ~[beekeeper-vacuum-tool-2.1.0-SNAPSHOT.jar:na]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) ~[beekeeper-vacuum-tool-2.1.0-SNAPSHOT.jar:na]
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51) ~[beekeeper-vacuum-tool-2.1.0-SNAPSHOT.jar:na]

2020-04-22 20:05:54.400  WARN 15781 --- [           main] c.c.metrics.graphite.GraphiteReporter    : Unable to report to Graphite

java.net.ConnectException: Connection refused (Connection refused)
        at java.base/java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:na]
        at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399) ~[na:na]
        at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242) ~[na:na]
        at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224) ~[na:na]
        at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403) ~[na:na]
        at java.base/java.net.Socket.connect(Socket.java:609) ~[na:na]
        at java.base/java.net.Socket.connect(Socket.java:558) ~[na:na]
        at java.base/java.net.Socket.<init>(Socket.java:454) ~[na:na]
        at java.base/java.net.Socket.<init>(Socket.java:264) ~[na:na]
        at java.base/javax.net.DefaultSocketFactory.createSocket(SocketFactory.java:277) ~[na:na]
        at com.codahale.metrics.graphite.PickledGraphite.connect(PickledGraphite.java:185) ~[metrics-graphite-4.0.5.jar!/:4.0.5]
        at com.codahale.metrics.graphite.GraphiteReporter.report(GraphiteReporter.java:265) ~[metrics-graphite-4.0.5.jar!/:4.0.5]
        at com.codahale.metrics.ScheduledReporter.report(ScheduledReporter.java:237) ~[metrics-core-4.0.5.jar!/:4.0.5]
        at io.micrometer.graphite.GraphiteMeterRegistry.close(GraphiteMeterRegistry.java:94) ~[micrometer-registry-graphite-1.1.3.jar!/:1.1.3]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
        at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
        at org.springframework.beans.factory.support.DisposableBeanAdapter.invokeCustomDestroyMethod(DisposableBeanAdapter.java:337) ~[spring-beans-5.1.5.RELEASE.jar!/:5.1.5.RELEASE]
        at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:271) ~[spring-beans-5.1.5.RELEASE.jar!/:5.1.5.RELEASE]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:571) ~[spring-beans-5.1.5.RELEASE.jar!/:5.1.5.RELEASE]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:543) ~[spring-beans-5.1.5.RELEASE.jar!/:5.1.5.RELEASE]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingleton(DefaultListableBeanFactory.java:1055) ~[spring-beans-5.1.5.RELEASE.jar!/:5.1.5.RELEASE]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:504) ~[spring-beans-5.1.5.RELEASE.jar!/:5.1.5.RELEASE]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.destroySingletons(DefaultListableBeanFactory.java:1062) ~[spring-beans-5.1.5.RELEASE.jar!/:5.1.5.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1057) ~[spring-context-5.1.5.RELEASE.jar!/:5.1.5.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1026) ~[spring-context-5.1.5.RELEASE.jar!/:5.1.5.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:975) ~[spring-context-5.1.5.RELEASE.jar!/:5.1.5.RELEASE]
        at org.springframework.boot.SpringApplication.handleRunFailure(SpringApplication.java:834) ~[spring-boot-2.1.3.RELEASE.jar!/:2.1.3.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:327) ~[spring-boot-2.1.3.RELEASE.jar!/:2.1.3.RELEASE]
        at com.expediagroup.beekeeper.vacuum.BeekeeperVacuumTool.main(BeekeeperVacuumTool.java:43) ~[classes!/:na]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
        at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) ~[beekeeper-vacuum-tool-2.1.0-SNAPSHOT.jar:na]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) ~[beekeeper-vacuum-tool-2.1.0-SNAPSHOT.jar:na]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) ~[beekeeper-vacuum-tool-2.1.0-SNAPSHOT.jar:na]
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51) ~[beekeeper-vacuum-tool-2.1.0-SNAPSHOT.jar:na]

To remove the above this temporary change has been placed in beekeeper-vacuum-tool's pom.xml:

   <dependency>
      <groupId>com.expediagroup</groupId>
      <artifactId>beekeeper-core</artifactId>
      <version>${project.version}</version>
      <exclusions>
        <!-- TODO: put this back and figure out why graphite config etc. is being ignored by vacuum-tool -->
        <exclusion>
          <groupId>io.micrometer</groupId>
          <artifactId>micrometer-registry-graphite</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

To Reproduce

  • Remove the above exclusion and rebuild beekeeper-vacuum-tool.
  • Perform a run using this and observe the above error.
  • Attempt to configure Graphite and observer that this appears to have no effect.

Expected behavior
Graphite configuration is honoured - disabled when not present or marked accordingly, and used when provided. Default behaviour when no graphite configuration is present is that the default Graphite Reporter in the stack trace above is not operational.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions