成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

什么是革命性技術eBPF?為什么可觀測性領域都得用它

系統
本文我們介紹了eBPF是什么,以及它有哪些優勢,同時講解了它在可觀測性領域的一些應用。

如果有一種技術可以監控和采集任何應用信息,支持任何語言,并且應用完全無感知,零侵入,想想是不是很激動,那么這個技術是什么呢?就是eBPF,他應該是最近一兩年非常熱門的技術名詞,我相信你或多或少都看到過,但可能不知道他能做什么,今天我們來講講這個革命性的技術eBPF,以及它在可觀測領域的應用。

一、eBPF是什么?

eBPF(extended Berkeley Packet Filter)是在Linux內核中運行的虛擬機技術,2014年它首次出現在 Linux 內核中,并經過這幾年迭代,目前已經成熟。它提供了一種靈活并且安全的方式來擴展內核功能。eBPF最初是為網絡數據包過濾而設計的,但現在已經擴展到其他領域,如安全監控、性能分析和系統跟蹤等。

eBPF允許用戶在不修改內核源代碼的情況下,通過加載和執行自定義的eBPF程序來擴展內核功能。這些eBPF程序通過Hook機制與內核交互,他們可以對進入和離開內核的事件進行過濾和處理,以實現網絡數據包的監控、性能統計和安全審計等功能。

如下圖,eBPF可以在文件寫入和讀取進行攔截處理,網絡的發送和接受進行攔截處理

這段代碼是一個eBPF過濾器程序,用于在網絡數據包通過時打印源IP地址和目標IP地址。它使用bpf_printk函數來輸出信息到內核日志。

#include <linux/bpf.h>
#include <linux/if_ether.h>
#include <linux/ip.h>
#include <linux/in.h>

SEC("filter")
int print_ip(struct __sk_buff *skb) {
    struct ethhdr *eth = bpf_hdr_pointer(skb);
    struct iphdr *ip = (struct iphdr *)(eth + 1);

    if (eth->h_proto == htons(ETH_P_IP)) {
        bpf_printk("Source IP: %u.%u.%u.%u\n",
                   ip->saddr & 0xFF,
                   (ip->saddr >> 8) & 0xFF,
                   (ip->saddr >> 16) & 0xFF,
                   (ip->saddr >> 24) & 0xFF);

        bpf_printk("Destination IP: %u.%u.%u.%u\n",
                   ip->daddr & 0xFF,
                   (ip->daddr >> 8) & 0xFF,
                   (ip->daddr >> 16) & 0xFF,
                   (ip->daddr >> 24) & 0xFF);
    }

    return XDP_PASS;
}

二、eBPF能做什么?

動態編程內核以實現高效的網絡、可觀測性、追蹤和安全性。

1.可觀測性

eBPF程序是事件驅動的,當內核或用戶程序經過一個 eBPF Hook 時,對應Hook點上加載的eBPF程序就會被執行。從而可以采集相關信息,而且它是完全無侵入,對應用系統來說完全無感知。

想想以前我們用的監控系統Cat、SkyWalking或多或少都有侵入,只是代碼多少的問題,有了它完全不用關心,而且它能對所有運行在linux上面應用進行監控,比如redis、kafka等

2.安全監控和審計

eBPF可以用于實時監控系統的安全事件和異常行為。它可以檢測惡意軟件、網絡攻擊、未經授權的訪問等安全威脅,并觸發警報或采取相應的防御措施。

3.自定義功能擴展

如數據包處理、協議解析、數據轉換等。

三、eBPF在可觀測性方案的應用

可觀測性,也是近幾年非常熱門的話題,因為應用大部分都基于k8s部署,而k8s的網絡模型比較復雜,如果系統出現異常,無法快速定位問題,所以需要有一個的平臺可以去做系統故障定位、性能優化、以及監控等工作,而可觀測性提供了更深入的洞察力和更好的理解,使得再復雜的分布式系統中構建、部署和維護應用程序更加可靠和高效。

如何做好一個可觀測性系統,那么eBPF技術是繞不開的,下面看下eBPF是如何抓取應用數據。

1.eBPF是如何抓取應用數據的

可能有人會問eBPF是怎么抓取數據,因為進入系統內核都是二進制數據,如何知曉是kafka或者mongodb的數據,答案是基于通信協議,每個中間件都是屬于自身的通信協議,比如 redis、mysql、mongodb等,以下為mongodb的原始通信報文,這個報文每幾位代表什么含義,在mongodb官方文檔都有定義

2.mongodb消息解析

由于作者本人的電腦為Mac M系列芯片,對eBPF不怎么兼容,所以我們下面只講原理,如下圖是mongodb通信協議,基于這個協議,可以知曉消息內容、操作類型、響應碼等。

struct MsgHeader {
    int32   messageLength; // total message size, including this
    int32   requestID;     // identifier for this message
    int32   responseTo;    // requestID from the original request
                           //   (used in responses from the database)
    int32   opCode;        // message type
}

https://www.mongodb.com/docs/manual/reference/mongodb-wire-protocol/

基于這個消息協議,eBPF就可以完成數據解析和抽取:

四、基于eBPF構建的可觀測性平臺

目前很多公司都基于 eBPF技術在構建自己的可觀測性平臺,下面介紹一些相關產品

1.阿里云應用監控eBPF版

它是一套針對Kubernetes集群開發的一站式可觀測性產品,它能做到:

  • 代碼無侵入:阿里云應用監控eBPF版通過旁路技術,不需要對代碼進行埋點即可獲取到豐富的網絡性能數據。
  • 語言無關:阿里云應用監控eBPF版在內核層進行網絡協議解析,支持任意語言,任意框架。
  • 高性能:阿里云應用監控eBPF版基于eBPF技術,能以極低的消耗獲取豐富的網絡性能數據。
  • 資源關聯:阿里云應用監控eBPF版通過網絡拓撲,資源拓撲展示相關資源的關聯。
  • 數據多樣:阿里云應用監控eBPF版支持可觀測的各種類型數據(監控指標、鏈路、日志和事件)。
  • 整體性:阿里云應用監控eBPF版通過控制臺的場景設計,關聯起架構感知拓撲、Prometheus監控、告警配置。

部分效果圖:

dashboard

拓撲圖

https://help.aliyun.com/zh/arms/application-monitoring-ebpf/product-overview/what-is-alibaba-cloud-application-monitoring-ebpf-version

2.開源監控系統deepFlow

DeepFlow 開源項目旨在為復雜的云基礎設施及云原生應用提供深度可觀測性。DeepFlow 基于 eBPF 實現了零侵擾(Zero Code)的指標、分布式追蹤、調用日志、函數剖析數據采集,并結合智能標簽(SmartEncoding)技術實現了所有觀測數據的全棧(Full Stack)關聯和高效存取,核心特性如下:

  • 任意 Service 的全景圖:利用 eBPF 零侵擾繪制生產環境的全景圖。
  • 任意 Request 的分布式追蹤:基于 eBPF 的零侵擾分布式追蹤能力,支持任意語言的應用程序,并完整覆蓋網關、服務網格、數據庫、消息隊列、DNS、網卡等各類基礎設施。
  • 任意 Function 的持續性能剖析:以低于 1% 的開銷零侵擾采集生產環境進程的性能剖析數據。
  • 無縫集成流行的可觀測性技術棧:可作為 Prometheus、OpenTelemetry、SkyWalking、Pyroscope 的存儲后端。
  • 存儲性能 10x ClickHouse:基于 SmartEncoding 機制,向所有觀測信號注入標準化的、預編碼的元標簽,相比 ClickHouse 的 String 或 LowCard 方案均可將存儲開銷降低 10x。

部分效果圖:

redis 監控

請求日志

分布式鏈路追蹤

sql 監控

https://github.com/deepflowio/deepflow/blob/main/README-CN.md

3.Skywalking

眾多周知Skywalking基于agent方式采集可觀測性數據,比如java用java agent相關api編寫,其他語言則編寫對應語言的agent,這種方式可行,但是對技術人員要求較高。如果使用eBPF就不存在這種問題,目前看到Skywalking也有往eBPF方向發展

部分效果圖:

引用于吳晟老師SkyWalking2023峰會演講PPT

4.Cilium

Cilium 是一個開源項目,為 Kubernetes 集群和其他容器編排平臺等云原生環境提供網絡、安全和可觀測性,它主要使用的技術就是eBPF

https://cilium.io/

總結

以上我們介紹了eBPF是什么,以及它有哪些優勢,同時講解了它在可觀測性領域的一些應用,希望對你有所幫助。

責任編輯:趙寧寧 來源: 架構成長指南
相關推薦

2023-10-13 13:40:29

2022-12-29 10:16:12

觀察性系統監視

2015-02-12 15:58:59

自動化運維

2013-12-04 16:38:18

Clumsy Ninj手機游戲

2023-10-26 08:47:30

云原生數據采集

2021-11-19 09:40:50

數據技術實踐

2021-06-23 10:00:46

eBPFKubernetesLinux

2020-04-01 23:19:56

聯網汽車物聯網IOT

2010-06-28 11:20:10

思科無線技術

2023-09-13 14:46:46

物聯網醫療保健

2023-03-09 08:00:22

2023-05-18 22:44:09

2023-04-23 17:51:38

可觀測性運維

2010-08-16 10:39:59

虛擬化

2022-06-07 16:40:09

區塊鏈數字貨幣分布式賬本

2009-07-07 22:47:55

2012-08-22 09:40:41

2013-12-09 15:57:52

存儲

2023-11-10 15:03:08

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久天天 | 欧美激情欧美激情在线五月 | 91视频在线看 | 97超碰免费| 伊人精品在线 | 男人av的天堂 | 日日夜夜精品视频 | 日本久久久久久 | 久久精品国产久精国产 | 国产精品福利网 | 天堂一区| 欧美午夜视频 | 亚洲福利网 | 99久久久久久99国产精品免 | 国产福利在线播放 | 人操人免费视频 | 欧美日韩高清 | 黄色片网此 | 91在线观看 | 国产精品一区二区av | 九九久久免费视频 | 中文字幕日韩欧美一区二区三区 | a在线免费观看视频 | 九九在线| 国产高清精品网站 | 亚洲高清视频在线观看 | 国产成人免费在线 | 一区二区三区视频免费看 | 欧美精品久久久久 | www.一级毛片 | 九九热免费视频在线观看 | 一区中文字幕 | 欧美日本韩国一区二区 | 久久久久国产精品午夜一区 | a在线免费观看视频 | 亚洲一区二区三区在线视频 | 欧美激情国产日韩精品一区18 | 成人一区av偷拍 | 国产精品视频中文字幕 | 中文字幕一区二区三区精彩视频 | 久久精品亚洲 |