We use Drone extensively and we’re trying to get more insight into what our jobs are doing all the time. Would it be possible to emit tracing data from the Drone runner with spans for the different steps? Ideally we’d like to create something like this:
To get this working the Drone runner would run a process in the background or between steps that receives events and can emit tracing data.
I’m not familiar yet with Drone and the plugin API, is it possible to run a process in the background using the plugin system?
@Koenraad thanks for taking the time to write this up. Open telemetry is really cool and I am definitely interested in how it could be leverage in Drone.
I’m not familiar yet with Drone and the plugin API, is it possible to run a process in the background using the plugin system?
I don’t think this would work as a plugin. I do not have a ton of knowledge around orbs, but that feels more like a workaround than an ideal implementation. I think ideally opentelemtry would need to be integrated directly into the core codebase. This is obviously not something we would do without considerable thought and design, which means it would need to go through our formal proposal process before any code is written.
To get this working the Drone runner would run a process in the background or between steps that receives events and can emit tracing data.
The runner cannot receive events from third party systems so this would not be an option. The runners would need to push telemetry data to a central system. If this is not possible with opentelemtry it would probably be a deal breaker at this stage.
Agree that integrating this into the codebase would be the best solution I don’t mind starting a proposal
This wasn’t super clear in my post but we don’t need to receive events from an external source. The process that is creating the trace data has to be notified about events from Drone itself (i.e. a step has started, a step finished, a step failed,…), it will then generate a span with the metadata available and push this to an external system (your tracing backend of choice).
Drone would need a little bit of user-supplied configuration: the endpoint and headers/api key.