package opentelemetry
Build not checkedInstall
dune-project
Dependency
Authors
Maintainers
Sources
sha256=a5de04aa33f5b66e4a63377fd868a839814a4ee229c98c84a04bd49926a38e1d
sha512=f0f9956cb6a605826018794a8fa866b5bda622d2aaa82c4cca5e10262ae163a99512ee22ed4ef0c3af0bb4eeabc7aee736fe7830c585879b029b5ef6d4ef2b05
Description
README
Opentelemetry 
This project provides an API for instrumenting server software using opentelemetry, as well as connectors to talk to opentelemetry software such as jaeger.
- library
opentelemetryshould be used to instrument your code and possibly libraries. It doesn't communicate with anything except a backend (default: dummy backend) - library
opentelemetry-client-ocurlis a backend that communicates via http+protobuf with some collector (otelcol, datadog-agent, etc.)
License
MIT
Features
- basic traces
- basic metrics
- basic logs
- nice API
- interface with
lwt sync collector relying on ocurl
- batching, perf, etc.
- async collector relying on ocurl-multi
- interface with
logs(carry context around) - implicit scope (via ambient-context)
Use
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();
()Setup
If you're writing a top-level application, you need to perform some initial configuration.
- Set the
service_name; - configure our ambient-context dependency with the appropriate storage for your environment — TLS, Lwt, Eio ... (see their docs for more details);
- and install a
Collector(usually by calling your collector'swith_setupfunction.)
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 ();
(* … *)Configuration
The library is configurable via Opentelemetry.Config, via the standard opentelemetry env variables, or with some custom environment variables.
OTEL_EXPORTER_OTLP_ENDPOINTsets the http endpoint to send signals toOTEL_OCAML_DEBUG=1to print some debug messages from the opentelemetry library ideOTEL_RESOURCE_ATTRIBUTESsets a comma separated list of custom resource attributes
Collector opentelemetry-client-ocurl
This 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).
Collector opentelemetry-client-cohttp-lwt
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.
Opentelemetry-trace
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.
License
MIT
Semantic Conventions
Not supported yet.
Dependencies (5)
-
pbrt
>= "3.0" & < "4.0" -
ambient-context
< "0.2" - ptime
-
ocaml
>= "4.08" -
dune
>= "2.9"
Dev Dependencies (4)
-
ocamlformat
with-dev-setup & >= "0.24" & < "0.25" -
ocaml-lsp-server
with-dev-setup -
alcotest
with-test -
odoc
with-doc
Used by (4)
-
opentelemetry-client-cohttp-lwt
= "0.7" -
opentelemetry-client-ocurl
= "0.7" -
opentelemetry-cohttp-lwt
= "0.7" -
opentelemetry-lwt
= "0.7"
Conflicts (1)
-
trace
< "0.4" | >= "0.7"
Build status
Results of building opentelemetry with each compiler on check.ci.ocaml.org, run of against opam-repository 7cdc698. All results for this package.
Each result links to its build log. To keep crawlers from overloading the site, build logs require a GitHub sign-in (see ocurrent/opam-health-check). On your first log, GitHub asks you to “Authorize opam-health-check”, the OCurrent app that runs these checks; it sees only your public profile, not your repositories. The sign-in lasts 30 days.
This version is not in the latest run; the versions below are.
| Version | OCaml 4.11 | OCaml 4.14 | OCaml 5.2 | OCaml 5.4 | OCaml 5.5 |
|---|---|---|---|---|---|
| 0.92 | n/a | good | good | good | good |
| 0.91.1 | good | good | good | good | good |
- good Package successfully built
- partial One of the dependencies failed to build
- bad Package failed to build
- n/a Package is not available in this environment
- internal Internal failure