Page
Library
Module
Module type
Parameter
Class
Class type
Source
This project provides an API for instrumenting server software using opentelemetry, as well as connectors to talk to opentelemetry software such as jaeger.
opentelemetry should be used to instrument your code and possibly libraries. It doesn't communicate with anything except a backend (default: dummy backend)opentelemetry-client-ocurl is a backend that communicates via http+protobuf with some collector (otelcol, datadog-agent, etc.)MIT
lwtlogs (carry context around)For now, instrument traces/spans, logs, and metrics manually:
module Otel = Opentelemetry
let (let@) f x = f x
let foo () =
let@ scope = Otel.Trace.with_ "foo"
~attrs:["hello", `String "world"] in
do_work();
Otel.Metrics.(
emit [
gauge ~name:"foo.x" [int 42];
]);
do_more_work();
()If you're writing a top-level application, you need to perform some initial configuration.
service_name;Collector (usually by calling your collector's with_setup function.)For example, if your application is using Lwt, and you're using ocurl as your collector, you might do something like this:
let main () =
Otel.Globals.service_name := "my_service";
Otel.GC_metrics.basic_setup();
Ambient_context.with_storage_provider (Ambient_context_lwt.storage ()) @@ fun () ->
Opentelemetry_client_ocurl.with_setup () @@ fun () ->
(* … *)
foo ();
(* … *)The library is configurable via Opentelemetry.Config, via the standard opentelemetry env variables, or with some custom environment variables.
OTEL_EXPORTER_OTLP_ENDPOINT sets the http endpoint to send signals toOTEL_OCAML_DEBUG=1 to print some debug messages from the opentelemetry library ideOTEL_RESOURCE_ATTRIBUTES sets a comma separated list of custom resource attributesThis is a synchronous collector that uses the http+protobuf format to send signals (metrics, traces, logs) to some other collector (eg. otelcol or the datadog agent).
This is a Lwt-friendly collector that uses cohttp to send signals to some other collector (e.g. otelcol). It must be run inside a Lwt_main.run scope.
The optional library opentelemetry.trace, present if trace is installed, provides a collector for trace. This collector forwards and translates events from trace into opentelemetry. It's only useful if there also is also a OTEL collector.
MIT
Not supported yet.