eBPF 实践 -- 网络可观测

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
云拨测,每月3000次拨测额度
简介: 观测云采集器,是一款开源、一体式的数据采集 Agent,它提供全平台操作系统支持,拥有全面数据采集能力,涵盖基础设施、指标、日志、应用性能、用户访问以及安全巡检等各种场景。通过 eBPF 技术的引入,观测云采集器实践了网络传输层和应用层的部分协议的可观测。

简介

观测云采集器,是一款开源、一体式的数据采集 Agent,它提供全平台操作系统支持,拥有全面数据采集能力,涵盖基础设施、指标、日志、应用性能、用户访问以及安全巡检等各种场景。通过 eBPF 技术的引入,观测云采集器实践了网络传输层和应用层的部分协议的可观测。

采集器架构

  • 采集管理:配置加载模块用于配置动态管理与采集插件的开启关闭;监视器模块用于查看采集器资源使用、采集插件开启、数据处理器脚本工作状况、采集器外部数据接入API 的响应与延迟信息等
  • 数据采集:采集器不仅可以通过内置插件进行数据采集,还能接入外部数据源,如云原生计算基金会下的可观测项目 OTEL 的链路、指标数据等
  • 数据清洗:在采集插件生成数据后和数据上传之间的数据清洗层,用户可以通过编程介入,如使用可编程数据处理器的语言编写脚本修改 Point ,使用内置函数分析提取网络数据中 IP 归属的城市、省份和国家到 Point 中;脚本支持动态加载和卸载
  • 数据上传:采集器对各种数据进行分类上传,类别有日志、指标、链路、网络等,所有类别的数据均使用 Point 结构封装,每一个 Point 代表一条数据,大致由四个部分:名字、 标签字典、字段字典以及时间戳构成 (其名字可以是指标名 cpu, 日志来源 nginx ,网络的 httpflow等)

ebpf_1.png

eBPF 技术应用

观测云采集器使用了三种类型的 eBPF 程序:socket filter、kprobe、uprobe,能够抓取以太网帧、跟踪与 socket 和 TCP/IP 协议栈相关的内核函数以及用户共享库函数,实现网络协议可观测。下图介绍观测云采集器如何实践 eBPF 技术进行主机上的网络观测。

ebpf_2.png

数据采集

观测云采集器的 eBPF 网络观测功能采集并生成了三个数据集,分别为 netflow, dnsflow 和 httpflow,其 tag 基本相同,以下是其 tag 名与描述。

Tag 描述
src_ip 源 IP
dst_ip 目标 IP
src_port 源端口
dst_port 目标端口
transport tcp 或 udp
family IPv4 或 IPv6
direction 传输方向(incoming/outgoing)
srciptype 源 IP 类型 (other/private/multicast)
dstiptype 目标 IP 类型 (other/private/multicast)
host 主机名
source 数据源(netflow,httpflow,dnsflow)
pid 进程 id,仅 netflow
dst_domain 仅 netflow,来自 dnsflow 抓包记录
srck8snamespace 源 service 归属的 namespace
srck8sdeployment_name 源 serivce 归属的 deployment
srck8sservice_name 源 service
srck8spod_name 源 pod
dstk8snamespace 目标 service 归属的 namespace
dstk8sdeployment_name 目标 serivce 归属的 deployment
dstk8sservice_name 目标 service
dstk8spod_name 目标 pod
sub_source 子来源,默认 N/A,如若为 Kubernetes 流量则为 K8s

传输层网络观测

  • 采集器使用 kprobe 类型 eBPF 程序获取部分内核函数的输入与返回值
  • 通过 inetbind(6) 函数判断 srcip + src_port 是否为服务端
  • 通过协议栈 tcp\udp 以及 ip 相关的内核函数,获取服务与客户端之间的流量大小以及 TCP 协议的连接的建立与关闭次数、重传和 RTT 信息
Field 描述
bytes_read 接收字节数
bytes_written 发送字节数
retransmits 重传次数
rtt rtt
rtt_var rtt_var
tcp_closed TCP 连接关闭次数
tcp_established TCP 连接建立次数

应用层网络观测

  • 采集器使用 AF_PACKET + BPF 在采集器上分析 DNS 请求,以支持 CentOS(RedHat)7.6 (其不支持 socket filter 类型 eBPF 程序),记录请求信息支持 netflow 进行域名反向解析;
  • 对于 HTTP 请求使用 socket filter 和 uprobe 类型 eBPF 程序实现 HTTP(S) 请求分析。

下面的为采集 dns 协议生成的字段 和 http 协议生成字段。

Field 名(dns) 描述
count 一个采集周期内的请求总数
latency DNS 平均请求响应时间间隔
latency_max DNS 最大请求的响应时间间隔
rcode DNS 响应码: 0 - NoError, 1 - FormErr, 2 - ServFail, 3 - NXDomain, 4 - NotImp, 5 - Refused, ...
Field 名(http) 描述
count 一个采集周期内的请求总数
http_version 1.1 / 1.0 ...
latency TTFB
method GET/POST...
path 请求路径
status_code 状态码,如 200, 301, 404 ...
truncated 请求路径长度达到采集的(约 150)字节上限,存在截断可能

用户地理分布及 TCP 时延

通过内置数据处理器编写脚本,来解析 ip 并获取 ip 归属的省份、国家等信息作为标签追加到生成的 Point 上,并在观测云前端创建仪表板。下图通过世界地图和中国地图展示 netflow 中客户端 ip 的地理分布和服务端之间的 tcp 时延。

ebpf_3.png

主机间四层网络拓扑

下图为当前工作空间内部署了观测云采集器并开启了 eBPF 网络采集器的主机间的网络拓扑图,图上我们可以看到主机间的数据发送与接受的字节数和网络波动等信息。

ebpf_4.png

K8s Pod 间网络拓扑

当 eBPF 采集插件获取到 K8S 的 ip 和端口信息后将自动追加到生成的数据上,通过观测云前端构建不同的网络拓扑图,下图是构建的 Pod 网络拓扑关系图。

ebpf_5.png

K8s Deployment 间网络拓扑

下图是构建的 Deployment 网络拓扑关系图,从图中可以看到 nginx deployment 上的 HTTP 协议的每秒请求数和请求错误率。

ebpf_6.png

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
1天前
|
网络协议 网络架构 Python
Python 网络编程基础:套接字(Sockets)入门与实践
【5月更文挑战第18天】Python网络编程中的套接字是程序间通信的基础,分为TCP和UDP。TCP套接字涉及创建服务器套接字、绑定地址和端口、监听、接受连接及数据交换。UDP套接字则无连接状态。示例展示了TCP服务器和客户端如何使用套接字通信。注意选择唯一地址和端口,处理异常以确保健壮性。学习套接字可为构建网络应用打下基础。
18 7
|
1天前
|
机器学习/深度学习 算法
揭秘深度学习中的对抗性网络:理论与实践
【5月更文挑战第18天】 在深度学习领域的众多突破中,对抗性网络(GANs)以其独特的机制和强大的生成能力受到广泛关注。不同于传统的监督学习方法,GANs通过同时训练生成器与判别器两个模型,实现了无监督学习下的高效数据生成。本文将深入探讨对抗性网络的核心原理,解析其数学模型,并通过案例分析展示GANs在图像合成、风格迁移及增强学习等领域的应用。此外,我们还将讨论当前GANs面临的挑战以及未来的发展方向,为读者提供一个全面而深入的视角以理解这一颠覆性技术。
|
2天前
|
人工智能 安全 网络安全
构筑安全防线:云计算中的网络安全策略与实践
【5月更文挑战第17天】 随着云计算的迅猛发展,企业纷纷将数据和应用迁移至云端以提升效率和降低成本。然而,这一转变也带来了前所未有的安全挑战。本文深入探讨了在动态且复杂的云环境中,如何通过一系列创新的网络安全策略和技术手段来确保数据的保密性、完整性和可用性。我们将从云服务模型出发,分析不同服务层次的安全风险,并提出相应的防御机制。接着,文章将聚焦于网络安全的最新趋势,包括使用人工智能进行威胁检测、区块链在数据完整性保护中的应用,以及零信任网络架构的实现。最后,本文将讨论信息安全管理的最佳实践,强调安全意识培训和持续监控的重要性。
|
3天前
|
监控 安全 网络安全
云端防御:云计算环境下的网络安全策略与实践
【5月更文挑战第16天】 随着企业逐渐将数据和服务迁移至云平台,云计算环境的安全性成为了业界关注的焦点。本文深入探讨了在复杂多变的云服务模型中,如何通过创新的网络安全技术和策略来确保信息的完整性、机密性和可用性。文章分析了云计算环境中存在的安全挑战,并提出了相应的解决方案和最佳实践,以帮助组织构建一个既灵活又安全的云基础设施。
|
3天前
|
存储 安全 网络安全
云端守卫:云计算环境下的网络安全策略与实践
【5月更文挑战第16天】 随着企业和个人用户对计算资源的需求不断增长,云计算以其灵活性、可扩展性和成本效益成为了首选解决方案。然而,云服务的广泛采用也带来了新的安全挑战。本文旨在探讨在动态复杂的云计算环境中维护网络安全的策略和最佳实践。通过分析云服务模式(IaaS、PaaS、SaaS)的安全需求,结合最新的加密技术、访问控制机制以及合规性要求,本文提出了一系列创新的网络安全框架和应对措施,以保障数据的安全性和完整性,确保企业在享受云计算带来的便利同时,能够有效防御网络威胁和攻击。
|
3天前
|
监控 安全 算法
网络安全与信息安全:防范之道与实践策略
【5月更文挑战第16天】在数字化时代,网络安全和信息安全已成为个人和企业不可忽视的议题。本文将深入探讨网络安全漏洞的概念、加密技术的重要性以及提升安全意识的必要性,旨在为读者提供一套综合性的网络安全防护策略。通过对常见网络威胁的分析,我们揭示了安全漏洞的本质及其对信息系统的潜在影响。同时,文章还将详细介绍加密技术的基本原理和应用场景,以及如何通过教育和培训提高用户的安全意识,从而构建更为坚固的信息防线。
|
4天前
|
SQL 安全 网络安全
构建安全防线:云计算环境中的网络安全策略与实践
【5月更文挑战第14天】 随着企业逐渐将关键业务流程迁移到云端,云计算服务的安全性成为不容忽视的重要议题。本文深入探讨了在动态且复杂的云环境中实施有效的网络安全措施的策略和技术。通过分析当前云计算模型中的安全挑战,我们提出了一系列创新的安全框架和防御机制,旨在保护数据完整性、确保业务连续性并抵御不断演变的网络威胁。文中不仅涵盖了理论分析和案例研究,还对未来云计算安全技术的发展趋势进行了预测。
|
4天前
|
存储 安全 网络安全
构筑安全之盾:云计算环境下的网络安全策略与实践
【5月更文挑战第11天】 在数字化时代,云计算已成为企业及个人存储、处理和访问数据的重要平台。然而,随着云服务的广泛采用,网络安全威胁也随之增加,给信息保护带来了前所未有的挑战。本文深入探讨了云计算环境中的网络安全策略,包括加密技术、身份验证、访问控制及入侵检测系统等,旨在为读者提供一个关于如何在云服务中维护信息安全的全面视角。同时,文中还分析了当前云安全领域面临的主要挑战,并提出了未来可能的发展方向,以期对构建更为安全、可靠的云计算环境做出贡献。
9 0
|
4天前
|
监控 安全 网络安全
云端防御战线:云计算环境下的网络安全策略与实践
【5月更文挑战第10天】 在数字化转型的浪潮中,云计算作为支撑企业运营的骨干技术之一,其安全性问题备受关注。随着云服务模式的多样化和复杂化,传统的网络安全防护机制已难以完全适用于云环境。本文深入探讨了云计算环境中特有的安全威胁,分析了云计算服务模型(IaaS、PaaS、SaaS)的安全挑战,并提出了相应的安全策略与最佳实践。通过采用多层次防御架构、强化身份认证与访问控制、实施数据加密与隐私保护措施以及建立持续监控与响应机制,旨在为组织在享受云计算带来的便捷性的同时,确保其数据和服务的安全性。
|
4天前
|
运维 安全 网络协议
即时通讯安全篇(十四):网络端口的安全防护技术实践
网络端口因其数量庞大、端口开放和关闭的影响评估难度大,业务影响程度高、以及异常识别技术复杂度高等特点给网络端口安全防护带来了一定的挑战,如何对端口风险进行有效治理几乎是每个企业安全团队在攻击面管理工作中持续探索的重点项。
22 0