ocaml-opentelemetry/opentelemetry/Opentelemetry_trace/index.html
2026-04-06 19:57:49 +00:00

8 lines
10 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Opentelemetry_trace (opentelemetry.Opentelemetry_trace)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 3.1.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> <a href="../../index.html">Index</a> &#x00BB; <a href="../index.html">opentelemetry</a> &#x00BB; Opentelemetry_trace</nav><header class="odoc-preamble"><h1>Module <code><span>Opentelemetry_trace</span></code></h1><p><code>opentelemetry.trace</code> implements a <a href="../../trace/Trace_core/Collector/index.html"><code>Trace_core.Collector</code></a> for <a href="https://v3.ocaml.org/p/trace">ocaml-trace</a>.</p><p>After installing this collector with <a href="#val-setup"><code>setup</code></a>, you can consume libraries that use <code>ocaml-trace</code>, and they will automatically emit OpenTelemetry spans and logs.</p><p><code>Ambient_context</code> is used to propagate the current span to child spans.</p><p><code>Trace_core.extension_event</code> is used to expose OTEL-specific features on top of the common tracing interface, e.g. to set the span kind:</p><pre class="language-ocaml"><code> let@ span = Trace_core.with_span ~__FILE__ ~__LINE__ &quot;my-span&quot; in
Opentelemetry_trace.set_span_kind span Span_kind_client
(* ... *)</code></pre></header><div class="odoc-content"><div class="odoc-spec"><div class="spec module-substitution anchored" id="module-OTEL"><a href="#module-OTEL" class="anchor"></a><code><span><span class="keyword">module</span> OTEL := <a href="../Opentelemetry_core/index.html">Opentelemetry_core</a></span></code></div></div><div class="odoc-spec"><div class="spec module-substitution anchored" id="module-Otrace"><a href="#module-Otrace" class="anchor"></a><code><span><span class="keyword">module</span> Otrace := <a href="../../trace/Trace_core/index.html">Trace_core</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Extensions"><a href="#module-Extensions" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Extensions/index.html">Extensions</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>The extension events for <a href="../../trace/Trace_core/index.html"><code>Trace_core</code></a>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-setup"><a href="#val-setup" class="anchor"></a><code><span><span class="keyword">val</span> setup : <span>unit <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Install the OTEL backend as a <code>Trace</code> collector. The trace collector will use <code>Trace_provider.get</code>, <code>Log_provider.get</code>, and <code>Meter_provider.get</code> to get the current tracer, logger, meter and use that to emit signals.</p><p>This will not do much until a proper <a href="../Opentelemetry_core/Exporter/index.html#type-t"><code>OTEL.Exporter.t</code></a> is installed via <code>OTEL.Sdk.set</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-setup_with_otel_exporter"><a href="#val-setup_with_otel_exporter" class="anchor"></a><code><span><span class="keyword">val</span> setup_with_otel_exporter : <span><a href="../Opentelemetry_core/Exporter/index.html#type-t">OTEL.Exporter.t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Same as <a href="#val-setup"><code>setup</code></a>, but also calls <code>OTEL.Sdk.set otel_exporter</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-setup_with_otel_backend"><a href="#val-setup_with_otel_backend" class="anchor"></a><code><span><span class="keyword">val</span> setup_with_otel_backend : <span><a href="../Opentelemetry_core/Exporter/index.html#type-t">OTEL.Exporter.t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> use setup_with_otel_exporter</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-collector"><a href="#val-collector" class="anchor"></a><code><span><span class="keyword">val</span> collector : <a href="../../trace/Trace_core/index.html#type-collector">Trace_core.collector</a></span></code></div><div class="spec-doc"><p>Make a Trace collector that uses the main OTEL providers to emit traces, metrics, and logs</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-ambient_span_provider"><a href="#val-ambient_span_provider" class="anchor"></a><code><span><span class="keyword">val</span> ambient_span_provider : <a href="../../trace/Trace_core/Ambient_span_provider/index.html#type-t">Trace_core.Ambient_span_provider.t</a></span></code></div><div class="spec-doc"><p>Uses <a href="../../ambient-context/Ambient_context/index.html"><code>Ambient_context</code></a> to provide contextual spans in <a href="../../trace/Trace_core/index.html"><code>Trace_core</code></a>. It is automatically installed by the <a href="#val-collector"><code>collector</code></a>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-link_spans"><a href="#val-link_spans" class="anchor"></a><code><span><span class="keyword">val</span> link_spans : <span><a href="../../trace/Trace_core/index.html#type-span">Otrace.span</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="../../trace/Trace_core/index.html#type-span">Otrace.span</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p><code>link_spans sp1 sp2</code> modifies <code>sp1</code> by adding a span link to <code>sp2</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.11</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-link_span_to_otel_ctx"><a href="#val-link_span_to_otel_ctx" class="anchor"></a><code><span><span class="keyword">val</span> link_span_to_otel_ctx : <span><a href="../../trace/Trace_core/index.html#type-span">Otrace.span</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="../Opentelemetry_core/Span_ctx/index.html#type-t">OTEL.Span_ctx.t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p><code>link_spans sp1 sp_ctx2</code> modifies <code>sp1</code> by adding a span link to <code>sp_ctx2</code>. It must be the case that <code>sp1</code> is a currently active span.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.90</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set_span_kind"><a href="#val-set_span_kind" class="anchor"></a><code><span><span class="keyword">val</span> set_span_kind : <span><a href="../../trace/Trace_core/index.html#type-span">Otrace.span</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="../Opentelemetry_core/Span/index.html#type-kind">OTEL.Span.kind</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p><code>set_span_kind sp k</code> sets the span's kind.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set_span_status"><a href="#val-set_span_status" class="anchor"></a><code><span><span class="keyword">val</span> set_span_status : <span><a href="../../trace/Trace_core/index.html#type-span">Otrace.span</a> <span class="arrow">&#45;&gt;</span></span> <span><a href="../Opentelemetry_core/Span_status/index.html#type-t">OTEL.Span_status.t</a> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.90</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-record_exception"><a href="#val-record_exception" class="anchor"></a><code><span><span class="keyword">val</span> record_exception :
<span><a href="../../trace/Trace_core/index.html#type-span">Otrace.span</a> <span class="arrow">&#45;&gt;</span></span>
<span>exn <span class="arrow">&#45;&gt;</span></span>
<span><a href="../../ocaml/Stdlib/Printexc/index.html#type-raw_backtrace">Stdlib.Printexc.raw_backtrace</a> <span class="arrow">&#45;&gt;</span></span>
unit</span></code></div><div class="spec-doc"><p>Record exception in the current span.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-with_ambient_span"><a href="#val-with_ambient_span" class="anchor"></a><code><span><span class="keyword">val</span> with_ambient_span : <span><a href="../../trace/Trace_core/index.html#type-span">Otrace.span</a> <span class="arrow">&#45;&gt;</span></span> <span><span>(<span>unit <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>with_ambient_span sp f</code> calls <code>f()</code> in an ambient context where <code>sp</code> is the current span.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-with_ambient_span_ctx"><a href="#val-with_ambient_span_ctx" class="anchor"></a><code><span><span class="keyword">val</span> with_ambient_span_ctx : <span><a href="../Opentelemetry_core/Span_ctx/index.html#type-t">OTEL.Span_ctx.t</a> <span class="arrow">&#45;&gt;</span></span> <span><span>(<span>unit <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span>)</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>with_ambient_span_ctx spc f</code> calls <code>f()</code> in a scope where <code>spc</code> is the ambient span-context</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Well_known"><a href="#module-Well_known" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Well_known/index.html">Well_known</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div></div></body></html>