Slackbot
06/09/2023, 6:44 AMAnanya Bhushan
06/09/2023, 6:46 AMAbhishek Balaji Radhakrishnan
06/09/2023, 7:38 AM/Users/ananya/Downloads/apache-druid-26.0.0/extensions/druid-extensions-contrib-firehose-segment-push
that you’ve specified in your loadList
. Can you confirm that the extension exists in that path?
Also, fwiw, I can’t find the specific extension in this list https://druid.apache.org/docs/latest/development/extensions.html , of course unless you’re using a proprietary oneAnanya Bhushan
06/09/2023, 9:29 AMAbhishek Balaji Radhakrishnan
06/09/2023, 3:45 PMRealTimeMetricsMonitor
is obsolete - please remove it from your monitors
list and give it a try. Also, there’s a related thread https://www.druidforum.org/t/unable-to-configure-specific-emiiter/6454/2Ananya Bhushan
06/10/2023, 6:56 AMRealTimeMetricsMonitor
, many of the errors are gone except I am getting the following error in middleManager.stdout.log
Exception in thread "main" java.lang.RuntimeException: com.google.inject.CreationException: Unable to create injector, see the following errors:
1) No implementation for org.apache.druid.server.metrics.QueryCountStatsProvider was bound.
while locating org.apache.druid.server.metrics.QueryCountStatsProvider
for the 1st parameter of org.apache.druid.server.metrics.QueryCountStatsMonitor.<init>(QueryCountStatsMonitor.java:40)
while locating org.apache.druid.server.metrics.QueryCountStatsMonitor
at org.apache.druid.server.metrics.MetricsModule.getMonitorScheduler(MetricsModule.java:110) (via modules: com.google.inject.util.Modules$OverrideModule -> com.google.inject.util.Modules$OverrideModule -> org.apache.druid.server.metrics.MetricsModule)
at org.apache.druid.server.metrics.MetricsModule.getMonitorScheduler(MetricsModule.java:110) (via modules: com.google.inject.util.Modules$OverrideModule -> com.google.inject.util.Modules$OverrideModule -> org.apache.druid.server.metrics.MetricsModule)
while locating org.apache.druid.java.util.metrics.MonitorScheduler
at org.apache.druid.server.metrics.MetricsModule.configure(MetricsModule.java:95) (via modules: com.google.inject.util.Modules$OverrideModule -> com.google.inject.util.Modules$OverrideModule -> org.apache.druid.server.metrics.MetricsModule)
while locating org.apache.druid.java.util.metrics.MonitorScheduler annotated with @com.google.inject.name.Named(value=ForTheEagerness)
1 error
at org.apache.druid.cli.GuiceRunnable.makeInjector(GuiceRunnable.java:88)
at org.apache.druid.cli.ServerRunnable.run(ServerRunnable.java:62)
at org.apache.druid.cli.Main.main(Main.java:112)
Caused by: com.google.inject.CreationException: Unable to create injector, see the following errors:
1) No implementation for org.apache.druid.server.metrics.QueryCountStatsProvider was bound.
while locating org.apache.druid.server.metrics.QueryCountStatsProvider
for the 1st parameter of org.apache.druid.server.metrics.QueryCountStatsMonitor.<init>(QueryCountStatsMonitor.java:40)
while locating org.apache.druid.server.metrics.QueryCountStatsMonitor
at org.apache.druid.server.metrics.MetricsModule.getMonitorScheduler(MetricsModule.java:110) (via modules: com.google.inject.util.Modules$OverrideModule -> com.google.inject.util.Modules$OverrideModule -> org.apache.druid.server.metrics.MetricsModule)
at org.apache.druid.server.metrics.MetricsModule.getMonitorScheduler(MetricsModule.java:110) (via modules: com.google.inject.util.Modules$OverrideModule -> com.google.inject.util.Modules$OverrideModule -> org.apache.druid.server.metrics.MetricsModule)
while locating org.apache.druid.java.util.metrics.MonitorScheduler
at org.apache.druid.server.metrics.MetricsModule.configure(MetricsModule.java:95) (via modules: com.google.inject.util.Modules$OverrideModule -> com.google.inject.util.Modules$OverrideModule -> org.apache.druid.server.metrics.MetricsModule)
while locating org.apache.druid.java.util.metrics.MonitorScheduler annotated with @com.google.inject.name.Named(value=ForTheEagerness)
1 error
at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:470)
at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:184)
at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
at com.google.inject.Guice.createInjector(Guice.java:99)
at com.google.inject.Guice.createInjector(Guice.java:73)
at com.google.inject.Guice.createInjector(Guice.java:62)
at org.apache.druid.initialization.ExtensionInjectorBuilder.build(ExtensionInjectorBuilder.java:49)
at org.apache.druid.initialization.ServerInjectorBuilder.build(ServerInjectorBuilder.java:118)
at org.apache.druid.initialization.ServerInjectorBuilder.makeServerInjector(ServerInjectorBuilder.java:73)
at org.apache.druid.cli.GuiceRunnable.makeInjector(GuiceRunnable.java:85)
... 2 moreAbhishek Balaji Radhakrishnan
06/10/2023, 4:43 PMQueryCountStatsProvider
monitor to druid.indexer.runner.javaOpts
If that doesn’t work, alternatively, you can try adding QueryCountStatsMonitor
selectively to broker, router and the historical runtime.properties
and remove it from common.runtime.properties
so the middle manager doesn’t pick it up.Ananya Bhushan
06/11/2023, 6:11 PMAnanya Bhushan
06/11/2023, 6:12 PMAnanya Bhushan
06/11/2023, 6:13 PMAbhishek Balaji Radhakrishnan
06/11/2023, 7:03 PMGET
or`POST` request with a sample payload to your http endpoint?
3. Do you’ve any query workload in Druid? If not, try running a few SELECT
queries. I doubt the QueryCountStatsMonitor
will emit any query metrics if there are no queries.
4. The druid.emitter.http.flush*
properties determine the different thresholds when metrics are flushed, so I’d suggest looking into it if you’ve misconfigured something there or the defaults are high.Ananya Bhushan
06/12/2023, 7:04 AMAnanya Bhushan
06/12/2023, 7:05 AMAbhishek Balaji Radhakrishnan
06/13/2023, 1:45 AMdruid.module.enable="druid-metrics"
? I don’t see that config in the Druid docs
2. I see JvmMonitor
in set up in common runtime properties, do you see any jvm metrics in your http endpoint?
3. Specifically for QueryCountStatsMonitor
, do you’ve them added in druid.monitoring.monitors
in auto/broker/runtime.properties
and auto/historical/runtime.properties
?Ananya Bhushan
06/13/2023, 4:07 AMAnanya Bhushan
06/13/2023, 4:07 AMorg.apache.druid.server.metrics.MonitorsConfig
, problem: java.lang.ClassNotFoundException: QueryCountStatsMonitor
at [Source: UNKNOWN; line: -1, column: -1].
at org.apache.druid.guice.JsonConfigProvider.bind(JsonConfigProvider.java:151) (via modules: com.google.inject.util.Modules$OverrideModule -> com.google.inject.util.Modules$OverrideModule -> org.apache.druid.server.metrics.MetricsModule)
at org.apache.druid.guice.JsonConfigProvider.bind(JsonConfigProvider.java:151) (via modules: com.google.inject.util.Modules$OverrideModule -> com.google.inject.util.Modules$OverrideModule -> org.apache.druid.server.metrics.MetricsModule)
while locating com.google.common.base.Supplier<org.apache.druid.server.metrics.MonitorsConfig>
at org.apache.druid.guice.JsonConfigProvider.bind(JsonConfigProvider.java:152) (via modules: com.google.inject.util.Modules$OverrideModule -> com.google.inject.util.Modules$OverrideModule -> org.apache.druid.server.metrics.MetricsModule)
while locating org.apache.druid.server.metrics.MonitorsConfig
for the 2nd parameter of org.apache.druid.server.metrics.MetricsModule.getMonitorScheduler(MetricsModule.java:110)
at org.apache.druid.server.metrics.MetricsModule.getMonitorScheduler(MetricsModule.java:110) (via modules: com.google.inject.util.Modules$OverrideModule -> com.google.inject.util.Modules$OverrideModule -> org.apache.druid.server.metrics.MetricsModule)
while locating org.apache.druid.java.util.metrics.MonitorScheduler
at org.apache.druid.server.metrics.MetricsModule.configure(MetricsModule.java:95) (via modules: com.google.inject.util.Modules$OverrideModule -> com.google.inject.util.Modules$OverrideModule -> org.apache.druid.server.metrics.MetricsModule)
while locating org.apache.druid.java.util.metrics.MonitorScheduler annotated with @com.google.inject.name.Named(value=ForTheEagerness)Abhishek Balaji Radhakrishnan
06/14/2023, 3:33 AM"org.apache.druid.server.metrics.QueryCountStatsMonitor"
Specifically, try adding this in your broker and historical runtime properties: druid.monitoring.monitors=["org.apache.druid.server.metrics.QueryCountStatsMonitor"]
Ananya Bhushan
06/14/2023, 3:43 AMAbhishek Balaji Radhakrishnan
06/14/2023, 3:57 AMERROR [HttpPostEmitter-1] org.apache.druid.java.util.emitter.core.HttpPostEmitter - Failed to send events to url[<http://localhost:8090/druid/metrics>]
If you don’t see the request erroring out, at the very least I’d expect to see warnings if the http server is rejecting the request for whatever reason (I spun a python server locally python3 -m http.server 8090
and can see warnings and errors if misconfigured):
WARN [HttpPostEmitter-1] org.apache.druid.java.util.common.RetryUtils - Retrying (2 of 2) in 1,976ms.
org.apache.druid.java.util.common.ISE: Emissions of events not successful[501: Unsupported method ('POST')], with message[<!DOCTYPE HTML>
Ananya Bhushan
06/14/2023, 5:01 AM<http://localhost:8090/druid/metrics>
all I am seeing is [ ]. And in the spring boot application's log, I am seeing these messages:
[2m2023-06-14T102830.689+05:30[0;39m [32mDEBUG[0;39m [35m1920[0;39m [2m---[0;39m [2m[nio-8090-exec-2][0;39m [36mo.s.w.s.m.m.a.HttpEntityMethodProcessor [0;39m [2m:[0;39m Using 'application/json', given [/] and supported [application/json, application/*+json]
[2m2023-06-14T102830.689+05:30[0;39m [32mDEBUG[0;39m [35m1920[0;39m [2m---[0;39m [2m[nio-8090-exec-2][0;39m [36mo.s.w.s.m.m.a.HttpEntityMethodProcessor [0;39m [2m:[0;39m Writing [{timestamp=Wed Jun 14 102830 IST 2023, status=404, error=Not Found, path=/druid/metrics}]
[2m2023-06-14T102830.690+05:30[0;39m [32mDEBUG[0;39m [35m1920[0;39m [2m---[0;39m [2m[nio-8090-exec-2][0;39m [36mo.s.web.servlet.DispatcherServlet [0;39m [2m:[0;39m Exiting from "ERROR" dispatch, status 404
[2m2023-06-14T102830.823+05:30[0;39m [32mDEBUG[0;39m [35m1920[0;39m [2m---[0;39m [2m[nio-8090-exec-3][0;39m [36mo.s.web.servlet.DispatcherServlet [0;39m [2m:[0;39m POST "/druid/metrics", parameters={}
[2m2023-06-14T102830.823+05:30[0;39m [32mDEBUG[0;39m [35m1920[0;39m [2m---[0;39m [2m[nio-8090-exec-3][0;39m [36mo.s.w.s.handler.SimpleUrlHandlerMapping [0;39m [2m:[0;39m Mapped to ResourceHttpRequestHandler [classpath [META-INF/resources/], classpath [resources/], classpath [static/], classpath [public/], ServletContext [/]]
[2m2023-06-14T102830.823+05:30[0;39m [32mDEBUG[0;39m [35m1920[0;39m [2m---[0;39m [2m[nio-8090-exec-3][0;39m [36mo.s.w.s.r.ResourceHttpRequestHandler [0;39m [2m:[0;39m Resource not found
[2m2023-06-14T102830.823+05:30[0;39m [32mDEBUG[0;39m [35m1920[0;39m [2m---[0;39m [2m[nio-8090-exec-3][0;39m [36mo.s.web.servlet.DispatcherServlet [0;39m [2m:[0;39m Completed 404 NOT_FOUND
[2m2023-06-14T102830.824+05:30[0;39m [32mDEBUG[0;39m [35m1920[0;39m [2m---[0;39m [2m[nio-8090-exec-3][0;39m [36mo.s.web.servlet.DispatcherServlet [0;39m [2m:[0;39m "ERROR" dispatch for POST "/error", parameters={}
[2m2023-06-14T102830.824+05:30[0;39m [32mDEBUG[0;39m [35m1920[0;39m [2m---[0;39m [2m[nio-8090-exec-3][0;39m [36ms.w.s.m.m.a.RequestMappingHandlerMapping[0;39m [2m:[0;39m Mapped to org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController#error(HttpServletRequest)Ananya Bhushan
06/14/2023, 7:28 AMAbhishek Balaji Radhakrishnan
06/14/2023, 6:07 PMWARN [HttpPostEmitter-1] org.apache.druid.java.util.common.RetryUtils - Retrying (1 of 2) in 1,062ms.
java.util.concurrent.ExecutionException: java.net.ConnectException: Connection refused: localhost/[0:0:0:0:0:0:0:1]:8090
I’d suggest debugging your server code to see why that’s the case. Also, try setting the host explicitly to 127.0.0.1
or another ip instead of localhost
. Because if your loopback is incorrectly setup, the address resolution from localhost
to an ip address can go wrong. Hope that helpsAnanya Bhushan
06/21/2023, 5:56 PMAbhishek Balaji Radhakrishnan
06/25/2023, 9:42 PMpython3 -m http.server 8090
) and confirm that the server receives Druid metrics successfully, I’d look more closely into the http java program