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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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; 四次挥手…