[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)