高手問答第 299 期 —— 零代碼修改實現可觀測性

OSC噠噠 發布于 03/20 18:32
閱讀 6K+
收藏 8

從數據到大模型應用,11 月 25 日,杭州源創會,共享開發小技巧

云原生架構下,由于應用的服務數量多、訪問關系復雜、訪問路徑長,使得可觀測性變得越來越重要。然而傳統的可觀測性實現方法大多依賴于服務主動暴露指標、主動輸出追蹤 Span,這一方面為開發者實現可觀測性帶來了巨大的工作量,另一方面也直接導致服務訪問路徑上全??捎^測性的缺失。
 
eBPF 作為一項火熱技術受到了越來越多的關注,我們清楚 eBPF 的一個絕佳使用場景就是實現可觀測性。但是現有的解決方案多聚焦于實現基礎設施本身的可觀測性,缺乏應用視角,也缺乏與應用自身指標、追蹤等數據的關聯。eBPF 的一大優勢在于它的零侵擾性,我們能否充分享受它帶來的紅利,在零代碼修改、零配置修改、零進程重啟的優勢下,跳出基礎設施視野,將它用于實現云原生應用的可觀測性?
 

OSCHINA 本期高手問答 (3 月 22 日 - 3 月 28 日) 我們請來了向陽老師和大家一起探討關于如何借助 eBPF 零代碼修改實現云原生應用的可觀測性的話題。

可討論的問題包括不限于:

  • eBPF 的使用條件
  • eBPF 對應用性能的影響
  • eBPF 使用過程中的風險
  • eBPF 實現應用可觀測性的典型收益
  • eBPF 能繪制應用調用拓撲嗎
  • eBPF 能繪制分布式追蹤火焰圖嗎
有其他相關的問題,也歡迎提問 !

嘉賓介紹:

向陽,DeepFlow 研發VP,清華大學博士,曾獲得網絡測量領域國際頂級會議IMC頒發的社區貢獻獎,是該會議首次頒發獎項給中國大陸科研人員。畢業后加入云杉網絡,負責DeepFlow,致力于打造一款零侵擾的云原生應用可觀測性產品,希望讓觀測更自動,讓開發者更自由。

為了鼓勵踴躍提問,我們會在問答結束后從提問者中抽取 3 位幸運會員贈予鼠標桌墊一份。

OSChina 高手問答一貫的風格,不歡迎任何與主題無關的討論和噴子。

下面歡迎大家就eBPF相關的問題向 向陽老師 提問,直接回帖提問既可。

加載中
2
yaosaya
yaosaya

高手問答第 299 期 —— 零代碼修改實現可觀測性

@IT2015 @osc_58502968 @buscoop1

恭喜以上3位網友分別獲得鼠標桌墊一份。

請于4月4日12:00前登陸賬號, 私信@yaosaya 告知快遞信息(格式:姓名+電話+地址),逾期視為自動放棄哦~

1
puras
puras

@DeepFlow eBPF目前很火啊,但是落地感覺還需要大廠推出一些開源的產品,在這方面老師怎么看呢?

D
DeepFlow
關注一下我們開源的 DeepFlow:https://github.com/deepflowio/deepflow,一行命令零代碼修改實現分布式追蹤、應用調用拓撲。 我們的企業版做了六七年了,2022 年 5 月份正式開源。
1
o
osc_58502968

@DeepFlow 使用ebpf對于一次請求在單個服務內部跨多個線程流轉的場景如何追蹤呢?

D
DeepFlow
對于 DeepFlow 中 AutoTracing 的原理介紹也可看看這個視頻:https://www.bilibili.com/video/BV1Vg4y1H77y/?spm_id_from=333.337.search-card.all.click
D
DeepFlow
這個問題非常困難,但我們已經有不錯的突破了,可以看看我們的 GitHub 了解最新動態: https://github.com/deepflowio/deepflow 目前我們已經解決了 Golang 中的跨線程場景,接下來會解決其他語言中的跨線程場景。
0
e
ericyan1

@DeepFlow

eBPF  對網卡廠商有啥要求嗎?是否需要對網卡進行適配嗎 

D
DeepFlow
不需要,eBPF 運行與操作系統內核中,只要是內核能拿到網卡流量的都可以。當然 eBPF 不止能拿到流量,還能 Hook 到幾乎所有內核函數上,獲取函數執行時的信息,因此可用于實現應用程序的可觀測性。
0
我是菜雞啊
D
DeepFlow
這里:https://github.com/deepflowio/deepflow 歡迎 star。 頁面尾部有我們的群,歡迎關注。
0
鄒晨
鄒晨

性能和過程的風險能重點突出下,方便后面我們這些小伙伴接入@DeepFlow

D
DeepFlow
eBPF 最重要(沒有之一)的特點是安全性,以往必須編寫內核模塊才能做到的工作現在大都能做到,但區別在于 eBPF 代碼會經過 Verifier 嚴格的驗證,避免出現死循環、內存泄露等問題。
D
DeepFlow
這里記錄了 DeepFlow 的 Hook 點 https://github.com/deepflowio/deepflow/blob/main/agent/src/ebpf/docs/probes-and-maps.md 里面的性能開銷引用自 Brendan Gregg 在《BPF之巔:洞悉Linux系統和應用性能》中的數據。
0
IT2015
IT2015

@DeepFlow eBPF介入后對應用程序性能有損耗嗎 這個占比有多少

D
DeepFlow
性能影響的評估方法、評估代碼、以及數據等,我們最近會放到 GitHub 上,會在這個倉庫中:https://github.com/deepflowio/deepflow
D
DeepFlow
實際上,由于 eBPF 程序會 Hook 至內核函數中執行,它造成的性能損耗比例與應用程序本身的資源消耗相關。例如如果應用本身邏輯非常簡單,耗時不到 1ms,此時 eBPF 介入造成的影響會更大。但對于大量的業務來講通常會有更復雜的計算邏輯、更大的耗時,我們在生產環境上的經驗是大多只會引入 1%~5% 的影響。
D
DeepFlow
這里記錄了 DeepFlow 的 Hook 點 https://github.com/deepflowio/deepflow/blob/main/agent/src/ebpf/docs/probes-and-maps.md 里面的性能開銷引用自 Brendan Gregg 在《BPF之巔:洞悉Linux系統和應用性能》中的數據。
0
光石頭
光石頭

@DeepFlow wasm和ebpf組合的前景如何?會逐步替換容器嗎?

D
DeepFlow
DeepFlow 中會集合 eBPF 和 WASM 兩種技術,主要用于提供一種熱插拔的插件機制,用于實現對私有協議(以及標準協議中的業務字段)進行解析。 在 WASM 非常輕量,目前在一些邊緣云場景中已開始替代 docker 等容器技術了。
0
iman123
iman123

@DeepFlow 現在 eBFPF 似乎目前主要應用于網絡領域,例如內核態網絡包的快速處理和轉發,其他方面都有哪些使用場景,是不是可以看成是基于瀏覽器內核的擴展,在除linux之外的windows、macos上是否可用以及如何使用呢?

D
DeepFlow
eBPF 主要用于服務端,以及主要用于 Linux 操作系統。當然 Windows 也在做一些這方面的支持。 除了網絡領域以外,本次話題主要探討的是使用 eBPF 零侵擾的實現云原生應用的可觀測性,可以看看我們的項目 https://github.com/deepflowio/deepflow
0
b
buscoop1

@DeepFlow eBPF 的零侵擾性,表現為哪些行為?

D
DeepFlow
對于業務進程來講:零代碼修改、零配置修改、零進程重啟。
OSCHINA
登錄后可查看更多優質內容
返回頂部
頂部
一本久久综合亚洲鲁鲁五月天,无翼乌口工全彩无遮挡H全彩,英语老师解开裙子坐我腿中间