opentelemetry-cohttp-lwt

Opentelemetry tracing for Cohttp HTTP servers
README

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 to

  • OTEL_OCAML_DEBUG=1 to print some debug messages from the opentelemetry library ide

  • OTEL_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.

Install
Published
08 Jul 2022
Sources
v0.3.tar.gz
md5=aa5caa75abb2dd3b8777aec10f69b220
sha512=63538c716f4938a756b0a2fd89edf213bc4fdd636d0f08473cd822da25f751fc3b4faf57926f45edc2e3df4bd51f04ff10e8eed205f05d8be154dcd848166443
Dependencies
cohttp-lwt
>= "4.0.0" & < "6.0.0~"
odoc
with-doc
opentelemetry
= version
ocaml
>= "4.08"
dune
>= "2.7"
Reverse Dependencies