Commit graph

54 commits

Author SHA1 Message Date
Simon Cruanes
0c275b3aab
use at_exit in trace_tef/tldrs 2025-09-15 09:11:09 -04:00
Simon Cruanes
81096e0d3c
refactor TEF: split into exporter,writer,subscriber
code is a lot cleaner now.
2025-05-07 13:08:22 -04:00
Simon Cruanes
ef50b578f1
refactor(subscriber): timestamps are int64ns now 2025-05-05 15:08:57 -04:00
Simon Cruanes
477cc21bf1
format using 0.27 2025-04-11 12:25:21 -04:00
Simon Cruanes
d737022e11
fix: beware of dummy trace id 2025-04-11 12:25:10 -04:00
Simon Cruanes
cdab1c0956
compat OCaml 4.12 2025-04-09 10:35:11 -04:00
Simon Cruanes
151d80d0f1
breaking: feat(trace): pass a string trace_id in manual spans
- in entering manual spans, we now pass an explicit span_ctx that
  contains a trace_id (bytes) and the parent span id (int64).
- this makes compat with OTEL easier as we want this sort
  of span_ctx to be passed around.
2025-04-09 09:28:09 -04:00
Simon Cruanes
86d4fc25ac
feat trace-tef: print names of non-closed spans upon exit 2025-03-13 20:39:31 -04:00
Simon Cruanes
c5e813170d
fix: block signals in background threads 2025-03-13 15:55:09 -04:00
Simon Cruanes
4dfa319003
feat: add an extensible sum type for extending the library
libraries and collectors can now define their own "events" that
collectors will handle (or not), without having to contribute them to
ocaml-trace at all.
2024-10-29 09:21:09 -04:00
Simon Cruanes
5b1ad7275b
feat subscriber: avoid polyvariants entirely 2024-09-09 15:59:46 -04:00
Simon Cruanes
59db458fec
tef: expose subscriber_jsonl 2024-09-09 14:44:13 -04:00
Simon Cruanes
bebd037803
wip: trace-subscriber package 2024-09-09 14:14:25 -04:00
Simon Cruanes
62837c5193 feat tef: accept a out_channel directly in the collector 2024-08-23 15:17:55 -04:00
Simon Cruanes
0b6dc27556 break tef: use mtime.now, not a counter, for multiproc
this allows us to correlate timestamps among processes on the same
machine.
2024-08-23 15:17:55 -04:00
Simon Cruanes
f8c1d2d972
refactor tef: move event in a side file 2024-08-16 15:45:24 -04:00
Simon Cruanes
d0e159785e
fix in trace-tef now that meta-map can raise Invalid_arg 2024-03-01 15:18:04 -05:00
Simon Cruanes
3c2f804716
add hmap as a depopt (#28)
if present, we use `Hmap.t` as the meta map for manual spans
2024-02-24 11:33:48 -05:00
Simon Cruanes
7f9370e842
refactor: split some parts of trace-tef into trace.private.util 2023-12-25 16:51:52 -05:00
Simon Cruanes
b387729081
share code for implicit spans 2023-12-22 20:15:25 -05:00
Simon Cruanes
ef15941936
functions to enter/exit implicit spans 2023-12-22 20:10:58 -05:00
Simon Cruanes
079949d139
tef: emit last message when worker exits 2023-12-07 16:16:07 -05:00
Simon Cruanes
c16666d214
perf: reduce overhead in trace-tef
we call onto the channel functions less, because they
involve locking. Instead we do all writes into a (reused) buffer
and write it all at once at the end.
2023-12-05 14:52:40 -05:00
Simon Cruanes
c82fb362e8 trace-tef: add Mpsc_queue, adapted from picos; use it in trace_tef 2023-11-28 14:31:16 -05:00
Simon Cruanes
0135a613a9 add ?data to counter_int and counter_float
this makes sense to add metadata in, say, opentelemetry
2023-09-16 21:29:01 -04:00
Simon Cruanes
ba9d3d3d20 small refactor 2023-09-15 10:01:20 -04:00
Simon Cruanes
431811c995
rename add_data_to_current_span; give it span explicitly 2023-09-13 14:43:16 -04:00
Simon Cruanes
e0fe99f500
rename add_data to add_data_to_current_span 2023-09-06 09:50:54 -04:00
Simon Cruanes
4fc81d4ca2
tef: carry additional data for manual spans in the explicit_span's map
the span opening has been emitted already, so we'll emit the metadata at
exit time. We don't need side storage since we already have a hmap.
2023-08-30 20:24:17 -04:00
Simon Cruanes
8a4309b95e
adapt trace-tef to handle adding data after creating span 2023-08-30 20:23:52 -04:00
Simon Cruanes
c683f6331b
add add_data_to_span and add_data_to_explicit_span 2023-08-30 20:23:51 -04:00
Simon Cruanes
20e2bf2f87
tef: docs and small refactor 2023-08-30 08:31:50 -04:00
Simon Cruanes
b467678040
feat tef: write to trace.json if TRACE is either 1 or true 2023-08-30 08:31:49 -04:00
Simon Cruanes
96fb44e6bb
trace-tef: emit function name, if provided, as a metadata key/value pair
the key is "function". It is visible when selecting the span, typically.
2023-08-19 17:13:56 -04:00
Simon Cruanes
0eb6a84982 feat: add ?flavor argument to manual spans. 2023-08-09 00:26:21 -04:00
Simon Cruanes
1b5e827d65 fix inconsistency 2023-08-09 00:26:21 -04:00
Simon Cruanes
50b4691ab6 rename explicit span API 2023-08-09 00:26:21 -04:00
Simon Cruanes
a09a4fc69a refactor collector API as well.
After long discussions with @ELLIOTTCABLE, the collector should only
provide a `with_`-like function for regular spans. This allows
each concurrency library to use its native mechanism for local storage,
which is almost always based on such a scope function.
2023-08-09 00:26:21 -04:00
Simon Cruanes
b44e2f2923 Add explicit spans, for async tracing.
These spans require the user to pass the surrounding span, if any, when
entering a new span. They use the information inside (which is collector
specific) to track what asynchronous task is currently being executed.

Wrappers around `trace`, specific to an async library (e.g. Eio, lwt,
Async, etc.) can then smooth this over by providing a `with_async_span`
construct that uses some implicit contextual storage to carry the
`surrounding` scope around.
2023-08-09 00:26:21 -04:00
Joseph Price
f8cd53ec89 chore: depend on core in trace-tef
This changes trace-tef to depend on trace-core instead of trace, to
avoid clashing with the toplevel's Trace module when starting utop.
2023-07-30 22:56:49 -04:00
Simon Cruanes
c8f88f44ea
details 2023-06-23 15:00:08 -04:00
Simon Cruanes
345dd4a163
feat trace-tef: add a ticker thread to ensure we flush the file regularly 2023-06-23 14:56:05 -04:00
Simon Cruanes
088f2a5e7f
trace-tef: additional argument to with_setup; env for "stdout"/"stderr" 2023-06-12 13:30:06 -04:00
Simon Cruanes
1886ee737e
perf(trace-tef): improve behavior of collector under contention
writers still do one lock+unlock per event, but the collector can read
multiple events at once using Queue.transfer.
2023-06-10 19:30:24 -04:00
Simon Cruanes
8625a33d6b
use better float printer for counters 2023-06-09 23:08:16 -04:00
Simon Cruanes
341f137ebd
add counter_int and counter_float 2023-06-09 23:05:54 -04:00
Simon Cruanes
7958d7bc3b
tef: remove dead code 2023-06-09 22:48:45 -04:00
Simon Cruanes
1735abeb8b
api change: message does not take location
even tracy doesn't have that. Otoh a message should have an optional
span for OTEL.
2023-06-09 16:53:53 -04:00
Simon Cruanes
b6db37fab0
add thread/process name setting 2023-06-09 16:07:49 -04:00
Simon Cruanes
261874bfa8
add optional metadata to messages and spans 2023-06-09 09:54:19 -04:00