|
| 1 | +--- |
| 2 | +title: Artifact Evaluation for DeepFlow |
| 3 | +permalink: /auto-tracing/artifact-evaluation |
| 4 | +--- |
| 5 | + |
| 6 | +# 1 DeepFlow paper |
| 7 | + |
| 8 | +We attach our submitted paper for the committee's reference. |
| 9 | +[Network-Centric Distributed Tracing with DeepFlow: Troubleshooting Your Microservices in Zero Code](https://github.com/deepflowio/deepflow/blob/AEC/docs/deepflow_sigcomm2023.pdf) |
| 10 | + |
| 11 | +# 2 Source code |
| 12 | + |
| 13 | +[https://github.com/deepflowio/deepflow/tree/AEC](https://github.com/deepflowio/deepflow/tree/AEC) |
| 14 | + |
| 15 | + |
| 16 | +Currentlyource code includes the following core modules: |
| 17 | +- agent |
| 18 | + |
| 19 | + It is used to capture trace data using pre-defined eBPF instrumentation hooks and instrumentation extensions. In addition, the Agent is responsible for integrating metrics and tags from third-party frameworks or cloud platforms and transmitting them to the Server. |
| 20 | + Among them, "agent/src/ebpf" is the source code related to eBPF, which is divided into two parts: |
| 21 | +kernel :The source code of the eBPF program, will be compiled into bytecode and loaded into the kernel. |
| 22 | +user:Used for load eBPF bytecode, and receiving tracing data. |
| 23 | + |
| 24 | +- server |
| 25 | + |
| 26 | + It is responsible for storing spans in the database and assembling them into traces when users query. |
| 27 | + |
| 28 | +# 3 How to install and run artifact |
| 29 | + |
| 30 | +We have prepared a demo of a microservice for your review, sourced from [this GitHub repository](https://github.com/istio/istio/tree/master/samples/bookinfo). |
| 31 | +Please follow the instructions in the document below to install and run artifact: |
| 32 | + |
| 33 | +- [Deploying Istio Bookinfo Demo](https://deepflow.io/docs/auto-tracing/istio-bookinfo-demo/). |
| 34 | +- [Deploying DeepFlow to monitor a single K8s cluster](https://deepflow.io/docs/install/single-k8s/). |
| 35 | + |
| 36 | +We have set up an online accessible environment for you. Please [click here](https://ce-demo.deepflow.yunshan.net/d/Distributed_Tracing/distributed-tracing?var-namespace=deepflow-ebpf-istio-demo&from=deepflow-doc) to access it. |
| 37 | + |
| 38 | +# 4 Artifact Operating Instructions |
| 39 | + |
| 40 | +According to the introduction in Section 3, you can build and run the artifact on your own, or you can [click here](https://ce-demo.deepflow.yunshan.net/d/Distributed_Tracing/distributed-tracing?var-namespace=deepflow-ebpf-istio-demo&from=deepflow-doc) to access it directly online. |
| 41 | +Go to Grafana, open the `Distributed Tracing` Dashboard, and after selecting `namespace` = `deepflow-ebpf-istio-demo`, you can choose a specific call to trace. |
| 42 | + |
| 43 | +The following video demonstrates the procedure: |
| 44 | + |
| 45 | +<video width="100%" height="100%" controls autoplay> |
| 46 | + <source src="http://yunshan-guangzhou.oss-cn-beijing.aliyuncs.com/yunshan-ticket/mp4/c1689f803a82f9198060c646f3306921_20230809113130.mp4" type="video/mp4"> |
| 47 | +</video> |
| 48 | + |
| 49 | +In the `Flame Graph`, you will observe associations among all spans. Here,`S` represents system spans, which are collected by attaching eBPF programs to application service system call interfaces. `N` represents network spans, and the data is collected using the `AF_PACKET` method. These data are correlated using the following four field values: |
| 50 | + |
| 51 | +- `syscall_trace_id_request` and `syscall_trace_id_responseare` trace IDs generated based on the same thread or coroutine, enabling intra-microservice data tracing (association of spans within microservices). |
| 52 | +- `req_tcp_seq` and `resp_tcp_seq` are TCP sequence numbers used for associating client and server spans. |
| 53 | + |
| 54 | +You can click on `Related Data` in order to view the connections between all spans. |
0 commit comments