Fork me on GitHub
#observability
<
2024-05-15
>
Saai Sudarsanan07:05:26

Hi, does anyone use ken for tracing? If yes, is it opentelemetry compliant, and also, does it work with async code? If not, what other solutions do you use? We are looking for a solution that supports async code, with adding too much instrumentation overhead.

steffan11:05:56

I have not used https://github.com/amperity/ken, but as far as I can tell there is no OpenTelemetry integration. Which OpenTelemetry signals (logs, traces, metrics) do you wish to add to your application? If you require only logs, then adding a suitable appender to an existing logging solution may be all you need. For OTLP native logging in Clojure, you may find https://github.com/taoensso/telemere a good high performance option. If you need traces and metrics, you may want to look at my library https://github.com/steffan-westcott/clj-otel. It supports any async code that can work with callbacks. Another option is to use just the OpenTelemetry instrumentation agent. This adds high-quality instrumentation for supported libraries without changing any application source code. https://cljdoc.org/d/com.github.steffan-westcott/clj-otel-api/0.2.6/doc/guides#_run_with_the_opentelemetry_instrumentation_agent on how to add the agent to your application.

2
thanks3 1
greglook19:05:32

We use ken, the identifiers it generates are compliant with the opentelemetry spec, but there's no out-of-the-box connector since ken is framework-agnostic. It should be pretty simple to add one if you've got another library which can talk to an OTel endpoint - we wrote something similar for Honeycomb, for example. On the async front, ken is integrated with manifold, since that's the abstraction we use, and that can adapt to core.async and other systems. I'm exploring making the manifold dependency optional, if there's more demand for that.

👍 1
thanks3 1