jakubmatyszewski opened a new issue, #14599:
URL: https://github.com/apache/druid/issues/14599

   ### Affected Version
   
   26.0.0
   
   Problem
   ---
   Docs of `druid-overlord-extension` missing details and/or 
`druid.indexer.runner.peonMonitors` not working as expected.
   
   ### Description
   While following [instructions of MM-less 
`druid-overlord-extension`](https://druid.apache.org/docs/latest/development/extensions-contrib/k8s-jobs.html)
 I had a problem with peons still trying to use monitors defined in Overlord's 
runtime.properties.
   
   Docs say:
   > druid.indexer.runner.peonMonitors [JsonArray] - Overrides 
druid.monitoring.monitors. Use this property if you don't want to inherit 
monitors from the Overlord
   
   But even though my overlord runtime.properties looked like this:
   ```
   (...)
   druid.monitoring.monitors=["org.apache.druid.java.util.metrics.JvmMonitor", 
"org.apache.druid.server.metrics.TaskCountStatsMonitor"]
   
   
druid.indexer.runner.peonMonitors=["org.apache.druid.java.util.metrics.JvmMonitor",
 "org.apache.druid.server.metrics.EventReceiverFirehoseMonitor"]
   ```
   in logs of spawned job pods I received following error:
   ```
   1) No implementation for 
org.apache.druid.server.metrics.TaskCountStatsProvider was bound.               
                                                                                
                  
     while locating org.apache.druid.server.metrics.TaskCountStatsProvider
   ```
   However on startup of said pods I saw that peonMonitors were registered 
correctly:
   ```
   2023-07-17T12:33:56,412 INFO [main] org.apache.druid.cli.CliOverlord - * 
druid.indexer.runner.peonMonitors: 
["org.apache.druid.java.util.metrics.JvmMonitor", 
"org.apache.druid.server.metrics.EventReceiverFirehoseMonitor"]     
   ```
   
   Workaround
   ---
   Looking into code, I've found that runtime.properties of Overlord are not 
overridden directly, but rather environment variable called 
`druid_monitoring_monitors` is emptied, peons overwrite this variable and it 
expects to go from here. [This is the 
code](https://github.com/apache/druid/blob/1f6507dd604da089fdb1a0b66f4b7eed06cc9672/extensions-contrib/kubernetes-overlord-extensions/src/main/java/org/apache/druid/k8s/overlord/taskadapter/K8sTaskAdapter.java#L215C15-L215C15).
   
   Workaround for me, just for now is using environment variable in Overlord's 
runtime.properties like this:
   ```
   
druid.monitoring.monitors=${env:druid_monitoring_monitors:-["org.apache.druid.java.util.metrics.JvmMonitor",
 "org.apache.druid.server.metrics.TaskCountStatsMonitor"]}
   ```
   This way I don't have to change overlord's pod spec - it will use default 
array that is provided, but for peon it will be correctly emptied and applied 
with array passed to `druid.indexer.runner.peonMonitors` variable.
   
   Leaving it here in case someone encounters similar issue. I'm not sure if 
I'd manage to propose a PR to change the code, but perhaps at least I will add 
a notice about this in docs soon.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@druid.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@druid.apache.org
For additional commands, e-mail: commits-h...@druid.apache.org

Reply via email to