[HN Gopher] DeepFlow - open-source eBPF Distributed Tracing
___________________________________________________________________
DeepFlow - open-source eBPF Distributed Tracing
Author : shlosky
Score : 72 points
Date : 2024-01-09 18:31 UTC (4 hours ago)
(HTM) web link (deepflow.io)
(TXT) w3m dump (deepflow.io)
| bigcat12345678 wrote:
| Nice project, have been following this project casually for a
| while. The standout feature is to trace RPC flow across network
| connections, through packet tracing.
| nimrody wrote:
| How can it tie requests arriving at a service and generating
| additional downstream requests?
|
| Distributed tracing needs some common token all requests share
| to identify all RPCs that should be associated with a specific
| incoming request.
| archivator wrote:
| Take a look at Core Feature #2 in this post -
| https://deepflow.io/ebpf-the-key-technology-to-
| observability...
|
| It looks like it's using tcp flow tuple + tcp_seq to join
| things.
| Eridrus wrote:
| It looks like it depends on applications either using threads
| or go routines for concurrency:
|
| > When collecting invocation logs through eBPF and cBPF,
| DeepFlow calculates information such as syscall_trace_id,
| thread_id, goroutine_id, cap_seq, tcp_seq based on the system
| call context. This allows for distributed tracing without
| modifying application code or injecting TraceID and SpanID.
| Currently, DeepFlow can achieve Zero Code distributed tracing
| for all cases except for cross-thread communication (through
| memory queues or channels) and asynchronous invocations.
| mdaniel wrote:
| Apache 2, if that interests you:
| https://github.com/deepflowio/deepflow/blob/v6.4.7/LICENSE
|
| heh, GitHub also has "symbol navigation" turned on for that
| license file but I didn't dig into it to find out what source
| language it thinks the file is
| javierhonduco wrote:
| Haven't checked the source code yet, wondering if profiling of
| code without frame pointes is supported. Curious on their
| approach.
| reactordev wrote:
| It uses eBPF to provide instrumentation of the kernel calls up
| as well as hooking into networking for http2 pgsql etc. Since
| it's running the process in eBPF it's essentially sandboxed and
| all memory, kernel function calls, and even profiling, is an
| option. They have an agent that collects this information and
| sends to the server over RPC (protobuf/grpc). You should check
| it out (however, some of the docs are in Chinese).
___________________________________________________________________
(page generated 2024-01-09 23:00 UTC)