package opentelemetry
Install
Dune Dependency
Authors
Maintainers
Sources
md5=aa5caa75abb2dd3b8777aec10f69b220
sha512=63538c716f4938a756b0a2fd89edf213bc4fdd636d0f08473cd822da25f751fc3b4faf57926f45edc2e3df4bd51f04ff10e8eed205f05d8be154dcd848166443
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
opentelemetry
should be used to instrument your code and possibly libraries. It doesn't communicate with anything except a backend (default: dummy backend)library
opentelemetry-client-ocurl
is a backend that communicates via http+protobuf with some collector (otelcol, datadog-agent, etc.)
Features
[x] basic traces
[x] basic metrics
[x] basic logs
[ ] nice API
[x] interface with
lwt
[x] sync collector relying on ocurl
[x] batching, perf, etc.
[ ] async collector relying on ocurl-multi
[ ] interface with
logs
(carry context around)
Use
For now, instrument 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();
()
let main () =
Otel.Globals.service_name := "my_service";
Otel.GC_metrics.basic_setup();
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_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 attributes
Collector opentelemetry-client-ocurl
This is a synchronous collector that uses the http+protobuf format to send signals (metrics, traces) to some other collector (eg. otelcol
or the datadog agent).
License
MIT
Semantic Conventions
Not supported yet.
Dependencies (5)
-
pbrt
>= "2.2" & < "3.0.0"
-
ocaml-protoc
>= "2.2" & < "3.0.0"
- ptime
-
ocaml
>= "4.08"
-
dune
>= "2.7"
Dev Dependencies (1)
-
odoc
with-doc
Used by (3)
-
opentelemetry-client-ocurl
= "0.3"
-
opentelemetry-cohttp-lwt
= "0.3"
-
opentelemetry-lwt
= "0.3"
Conflicts
None