eBPF 賦能云原生: WizTelemetry 無侵入網絡可觀測實踐

引言

隨著 KubeSphere 企業版 4.2.0 的正式發布,WizTelemetry 可觀測平臺 2.0 也同步亮相。作為本次升級中的重磅模塊之一,它迅速引發了開發與運維團隊的廣泛關注。

本系列文章將系統解讀 WizTelemetry 的核心能力與落地實踐。繼前兩篇介紹了平臺架構與指標日志的深度融合后,本篇作為系列第三篇,將聚焦 WizTelemetry 在網絡可觀測方面的技術設計與 eBPF 應用實踐,展示其如何在云原生環境中實現高性能、全鏈路、無侵擾的網絡監控。

什么是 eBPF?

eBPF(Extended Berkeley Packet Filter)是一項源自 Linux 內核的革命性技術,允許開發者在內核中運行沙盒化程序,無需更改內核源代碼或加載內核模塊。

eBPF 程序是事件驅動的,當內核或用戶程序經過特定的鉤子點(hook point)時觸發執行。這些鉤子點可以包括系統調用、網絡事件、內核函數調用等。通過 JIT 編譯技術,eBPF 程序可以近乎原生編譯代碼的速度高效執行。

eBPF 由于其非侵入性、高效率和安全性,正在成為網絡、安全和可觀測性領域的重要技術基礎。

為什么選擇基于 eBPF 的網絡可觀測?

傳統網絡監控的痛點

  • 代碼侵入:許多工具需要修改應用代碼,增加了開發和維護的復雜性。

  • 視角有限:傳統工具往往只能看到網絡的特定層面,無法提供端到端的全景視圖。

  • 資源開銷大:許多監控解決方案需要占用大量系統資源,尤其在高流量環境中。

  • 技術棧碎片化:不同的監控需求往往需要不同的工具,導致監控生態系統復雜且分散。

eBPF 的獨特優勢

  • ? 無侵入監控:可以在不修改應用代碼的情況下,直接從操作系統內核獲取數據,實現真正的零侵擾監控。

  • ? 全棧可觀測:可以觀測從應用代碼到系統調用、網絡協議棧全鏈路的性能指標。

  • ? 高性能低開銷:eBPF 程序在內核中高效執行,避免了傳統方案中的數據拷貝和上下文切換,大大降低了監控的資源消耗。

  • ? 安全性強:eBPF 程序在加載前經過嚴格的驗證,確保不會破壞系統穩定性。

WizTelemetry 網絡可觀測平臺功能

KubeSphere 4.2.0 中的 WizTelemetry 網絡可觀測平臺基于 eBPF 技術,提供了以下核心特性:

1. 全景網絡拓撲

自動分析四層網絡流量并生成拓撲圖:

  • 網絡流量節點的連接關系
  • 節點間的數據流向與流量速率
  • TCP 健康狀況指標:丟包率和重傳率

全景網絡拓撲不僅可視化了基礎設施的整體連接情況,還能幫助運維人員快速識別網絡瓶頸和異常點。

2. 全景服務拓撲

基于對七層 HTTP 流量的解析,構建服務級別的拓撲視圖,通過服務拓撲可以直觀的了解:

  • 集群內的服務之間的 HTTP 流量
  • 服務依賴與影響面
  • 服務通信性能指標

服務拓撲為開發和運維團隊提供了業務視角的可觀測性,幫助團隊理解服務間的交互模式和性能特征。

3. 服務性能監控

支持對單個服務進行性能監控,包括:

  • RED 指標(RPS、Duration、Error Rate)
  • HTTP 響應數據吞吐量指標
  • 最慢路由 Top 10 分析

服務性能監控幫助用戶及時發現性能異常,追蹤性能下降的根本原因。

4. HTTP 流量日志

通過連接跟蹤與協議解析,提供詳細的 full-body 請求響應日志:

  • 請求方法、URL、頭部
  • 響應狀態碼與時間
  • 請求/響應體大小
  • 客戶端/服務端元信息

這些詳細的 HTTP 日志為故障排查和性能分析提供了豐富的上下文信息。

技術架構

核心組件

WizTelemetry 網絡可觀測平臺主要有以下幾個組件構成:

  • operator:管理 eBPF 應用(K8s CRD)與 bpfman-daemon
  • bpfman-daemon:維護節點上的 eBPF 程序生命周期
  • bpfconductor-agent:管理用戶空間 eBPF 程序,提供指標導出和流量日志收集功能

核心特性

可維護性

通過 K8s 自定義資源可以更好的維護 eBPF 程序生命周期,支持篩選程序部署到的節點(kprobe),篩選程序附加的命令空間、Pod和容器(uprobe),程序版本控制

可擴展性

以標準 OCI 鏡像管理 eBPF 程序字節碼,通過K8s 自定義資源可以輕松擴展 eBPF 應用

安全性

只有 bpfman 守護進程(可被嚴格控制)擁有加載和附加 eBPF 程序所需的特權。eBPF 程序鏡像可以被簽名以驗證字節碼的所有權

數據采集與元數據

網絡可觀測平臺采集的數據包括:

Metrics

  • Network Flow:不同網絡端點之間的網絡指標,包括:物理節點、容器、Kubernetes Pod、服務等之間

  • TCP Stats:包括 TCP 丟棄和重傳指標

  • HTTP:包括客戶端/服務端的請求和響應指標:Duration, Body Size

Logging

  • HTTP 日志:包含詳細的請求和響應信息的 HTTP 流量日志
元數據維度:

Metrics 和 Logging 在云原生環境都進行了元數據關聯,包含:

  • client/server 節點、namespace、pod_name 等上下文維度

可視化能力

WizTelemetry 網絡可觀測提供了用戶友好的可視化界面,包含:

  • 網絡拓撲
  • 服務拓撲
  • 服務性能監控
  • 流量監控
  • HTTP 流量日志

結語

基于 eBPF 的網絡可觀測技術正在重新定義企業如何理解和管理其網絡基礎設施及應用性能。相比傳統的基于代碼插樁的方案,eBPF 技術提供了無侵入、全棧、高性能的可觀測能力,使得企業能夠以前所未有的深度和廣度了解其網絡運行狀況。

KubeSphere 4.2.0 通過引入 WizTelemetry 網絡可觀測功能,為用戶提供了先進的基于 eBPF 的網絡監控能力,進一步增強了 KubeSphere 作為企業級容器平臺的全面可觀測性解決方案。WizTelemetry 網絡可觀測旨在通過創新的技術和技術架構,降低網絡可觀測對應用的侵擾、資源開銷與運維復雜度,為企業提供了一個兼具高效性能與易用性的網絡可觀測平臺。

在云原生時代,網絡可觀測已不再是可選項,而是數字業務成功的必要保障。我們期待與您一起,探索基于 eBPF 的網絡可觀測的無限可能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/93649.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/93649.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/93649.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【JAVA安全-Fastjson系列】Fastjson 1.2.24 反序列化漏洞分析及測試環境構建【復習回顧】

Fastjson 1.2.24 反序列化漏洞分析及測試環境構建 漏洞背景 Fastjson 是阿里巴巴開源的一個高性能 Java JSON 庫,廣泛用于 Java 對象的序列化和反序列化。在 1.2.24 及之前的版本中,存在一個嚴重的安全漏洞,攻擊者可以通過構造惡意的 JSON 字…

關于神經網絡CNN的搭建過程以及圖像卷積的實現過程學習

通過如下博客內容學習了CNN搭建的步驟,按照博主的思路完成了cnn網絡的構建并完成50個epoch的訓練并畫出損失函數的曲線圖時有滿滿的成就感 PyTorch深度學習實戰(3)——使用PyTorch構建神經網絡_pytorch 神經網絡-CSDN博客 通過如下博客內容…

nodejs 實現Excel數據導入數據庫,以及數據庫數據導出excel接口(核心使用了multer和node-xlsx庫)

項目地址:https://gitee.com/LiangDouJun/nodejsExcel 一、實現效果 1、數據庫數據導出 2、excel導入 二、代碼實現 // 根據環境加載對應的配置文件 const env process.env.NODE_ENV || development; require(dotenv).config({ path: .env.${env} });const expr…

VUE2 學習筆記8 v-text/html/cloak/once/pre/自定義

除了之前已經介紹過的v-on v-bind v-for v-if v-show&#xff0c;vue還有很多其他的指令。v-textv-text是Vue內置指令。內置指令&#xff0c;是Vue內部定義好的&#xff0c;開發的時候直接拿來用就行了。v-text用于向其所在的標簽添加文本。<body><div id"root&q…

vue 使用postcss-pxtorem 實現適老化

1. 安裝依賴 npm install postcss-pxtorem -D2. 配置 Vite (vite.config.js) import { defineConfig } from vite import vue from vitejs/plugin-vue import postcsspxtorem from postcss-pxtoremexport default defineConfig({plugins: [vue()],css: {postcss: {plugins: [po…

Rust:高效錯誤處理工具 anyhow

Rust 的 anyhow 庫是一個專注于簡化錯誤處理的工具&#xff0c;特別適合應用程序開發場景。它通過統一的錯誤類型和便捷的 API&#xff0c;減少模板代碼&#xff0c;提升錯誤信息的可讀性。以下是其核心用法及示例&#xff1a;1. 安裝與基礎用法 在 Cargo.toml 中添加依賴&…

Solidity基礎(教程①-簡單數字存儲)

我們來嘗試一個超級簡單的智能合約&#xff0c;它只會做一件事情&#xff1a;存儲一個數字&#xff0c;并且讓我們能修改這個數字。最簡單的 Solidity 代碼// SPDX-License-Identifier: MIT pragma solidity ^0.8.0;// 定義一個智能合約&#xff0c;名字叫做 SimpleStorage (簡…

在 Web3 時代通過自我主權合規重塑 KYC/AML

1. 引言 前序博客有&#xff1a; Ligero 和 Ligetron 中的 MPC 和 ZKLigetron&#xff1a;Nim Network開發的針對AI的zkVMLigetron&#xff1a;基于MPC-In-The-Head范式的zkVM簡介谷歌采用 Ligero 構建其 ZK 技術棧 KYC&#xff08;了解你的客戶&#xff0c;Know Your Custo…

Linux kernel pinctrl子系統簡介

pinctrl(Pin Control)子系統是 Linux 內核中用于統一管理 SoC 引腳(Pin)功能配置的核心子系統,主要解決傳統引腳管理方式中存在的配置分散、驅動沖突、資源管理混亂等問題。尤其在嵌入式系統中,SoC 引腳通常支持多種復用功能(如 GPIO、UART、SPI、I2C、視頻接口等),pi…

web開發常見問題解決方案大全:502/503 Bad Gateway/Connection reset/504 timed out/400 Bad Request/401 Unauthorized

web開發常見問題解決方案大全&#xff1a;502/503 Bad Gateway&#xff0f;Connection reset&#xff0f;504 timed out&#xff0f;400 Bad Request&#xff0f;401 Unauthorized&#xff0f;403 Forbidden 在使用反向代理&#xff08;如 Nginx、HAProxy&#xff09;或正向代…

Vue 3 拖拽排序功能優化實現:從原理到實戰應用

一、引言&#xff1a;為什么需要拖拽排序&#xff1f;在現代Web應用中&#xff0c;交互體驗越來越受到重視。拖拽排序(Drag and Drop)作為一種直觀的用戶交互方式&#xff0c;被廣泛應用于&#xff1a;任務管理工具&#xff08;如Trello的任務卡片排序&#xff09;內容管理系統…

git 使用 rebase 刪除某次 提交

git刪除某次commit記錄 在Git中&#xff0c;要刪除某次commit記錄有幾種不同的實現方法&#xff1a; 方法一&#xff1a;使用git rebase命令和~標記 該方法適用于刪除最近的幾次commit記錄。 首先&#xff0c;使用以下命令查看你需要刪除的commit的記錄 git log找到你要刪除的c…

第2章 cmd命令基礎:常用基礎命令(2)

Hi~ 我是李小咖&#xff0c;主要從事網絡安全技術開發和研究。 本文取自《李小咖網安技術庫》&#xff0c;歡迎一起交流學習&#x1fae1;&#xff1a;https://imbyter.com 本節介紹的命令有時間與日期&#xff08;time/date&#xff09;、顯示目錄&#xff08;dir&#xff09;…

我從農村來到了大城市

從田埂到霓虹初到城市那天&#xff0c;行李箱的滾輪碾過柏油路的震動&#xff0c;和老家泥地上的拖沓感完全不同。站在天橋上往下看&#xff0c;車流像被打翻的調色盤&#xff0c;紅的黃的光在柏油畫布上流淌&#xff0c;我數了三遍才認清那是出租車和公交車的尾燈。第一個月總…

代碼隨想錄算法訓練營第三十六天

LeetCode.1049 最后一塊石頭的重量 II 題目鏈接 最后一塊石頭的重量II 題解 class Solution {public int lastStoneWeightII(int[] stones) {int len stones.length;int sum 0;for(int i 0;i<len;i) sum stones[i];int target sum / 2;int[] dp new int[target 1…

Apache Ignite 的監控與指標(Monitoring and Metrics)

這段文檔是關于 Apache Ignite 的監控與指標&#xff08;Monitoring and Metrics&#xff09; 的介紹&#xff0c;內容非常關鍵&#xff0c;尤其在生產環境中保障系統穩定性和性能時至關重要。 我們來一步步深入解析這段文字&#xff0c;幫助你徹底理解其含義和實際意義。&…

【ssh】ubuntu服務器+本地windows主機,使用密鑰對進行ssh鏈接

目錄1、服務器配置ssh2、本地主機秘鑰對3、上傳公鑰至服務器4、配置服務器的公鑰信息5、測試連接1、服務器配置ssh 使用的服務器系統為 ubuntu系統20.04 首先確認服務器是否已安裝SSH&#xff0c;已安裝的話會返回openssh 的相關信息&#xff0c;返回為空表示未安裝 dpkg -l …

Linux文件fd

文件理解 文件屬性內容 打開文件&#xff1a;本質是進程打開文件&#xff0c;文件沒被打開時候再磁盤上。 操作文件&#xff1a;本質是進程操作文件。 在操作系統內部&#xff0c;一定存在大量被打開的文件&#xff0c;會對其進行管理&#xff0c;每一個被打開的文件&#…

北京-4年功能測試2年空窗-報培訓班學測開-第六十四天-準備面試項目(焦慮)-同學開始面試

今日產出&#xff0c;整理自我介紹&#xff0c;繼續整理第一個項目&#xff0c;學習linux命令很焦慮啊很焦慮&#xff0c;很著急今天本打算結束第一個項目的&#xff0c;但是沒能夠&#xff0c;越說感覺越亂&#xff0c;讓同學聽我講&#xff0c;同學說&#xff0c;要聽睡著了于…

網絡是如何運轉的?——常見網絡協議與網絡分層模型

目錄 基本網絡協議 TCP&#xff08;傳輸控制協議&#xff09; 可靠傳輸&#xff1a;序列號確認應答重傳機制 序列號&#xff08;seq&#xff09; 確認應答&#xff08;ACK&#xff09; 超時重傳 三次握手與四次揮手 三次握手&#xff08;建立連接&#xff09; 四次揮手…