diff --git a/.gitignore b/.gitignore index 5ee4596b..c030c249 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,4 @@ _opam *.gz *.db .merlin - +*.install diff --git a/README.md b/README.md index 0acfce62..212ec6a2 100644 --- a/README.md +++ b/README.md @@ -5,11 +5,40 @@ This project provides an API for instrumenting server software using [opentelemetry](https://opentelemetry.io/docs), as well as connectors to talk to opentelemetry software such as [jaeger](https://www.jaegertracing.io/). +## Features + +- [x] basic traces +- [x] basic metrics +- [ ] basic logs +- [ ] nice API +- [x] interface with `lwt` +- [x] sync collector relying on ocurl + * [ ] batching, perf, etc. +- [ ] async collector relying on ocurl-multi +- [ ] interface with `logs` (carry context around) + ## Use -- [ ] TODO: basic traces -- [ ] TODO: interface with `logs` (carry context around) -- [ ] TODO: interface with `lwt` +For now, instrument manually: + +```ocaml +module T = Opentelemetry +let (let@) f x = f x + +let foo x = + let@ (tr,sp) = T.Trace.with_ + ~service_name:"myservice" "foo" ~attrs:["hello", `String "world"] in + (* … *) + + let gc = Gc.stat() in + T.Metrics.( + emit [ + gauge ~name:"foo.gc.major_heap_words" [int gc.Gc.heap_words]; + sum ~name:"foo.gc.minor_allocated" [float gc.Gc.minor_words]; + ]); + + (* … *) +``` ## License