一篇文章带你了解云原生NPM数据采集和指标计算方法

简介: 本文介绍云原生NPM中如何采集TCP连接数据,计算网络指标,并关联应用进程。通过构建包含四元组、收发字节数、延迟等字段的数据结构,结合抓包与系统命令获取PID、UID等信息,实现网络与应用的联动分析,助力快速定位故障根源。

在之前的一篇文章《云原生NPM与传统NPM的差异》中,我们了解到,传统NPM通过对物理设备的网络流量进行镜像,可以统计出网络层面的各种指标,也可以分析出网络延迟、带宽、重传等性能相关的指标。但是在实际工作中发现,网络层面的异常信息只是第一步,定位到产生异常的服务和原因,才能真正解决问题。本篇我们将讲述如何在云原生NPM中获取网络数据及相关网络指标的计算方法,以及如何将网络与具体应用进程进行关联,从而有助于快速地定位到可疑点。

1、设计数据结构

该结构描述了一条TCP网络连接(本篇只关注TCP连接的应用)的主要信息,以该数据结构为基础,可以得到以应用/进程为视角的网络状态。除此之外,还可以增加其它字段,如错误报文数、重传报文数、乱序报文数,等等。图片 4

2、获取字段值

  • ClientIP, ServerIP, ClientPort, ServerPort
    网络连接的四元组。从捕获的网络报文中可以解析出IP和Port信息。TCP连接有三次握手的过程,第一次握手的时候由客户端发起syn请求,根据这个信息可以确定Client。

image.png

  • BytesReceived, BytesSent, PacketsReceived, PacketsSent
    对服务端接收和发送的报文数、字节数进行统计。因为服务端接收就等于客户端发送,所以只需要统计一个方向的数据即可。

Rtt, Crt, Art, Ptt这几个与时间相关的性能指标无法直接从网络报文中获取,需要通过一些算法计算,计算方法如下图所示:

image.png

对于旁路抓包,该图中隐含了一个重要信息:传统的NPM抓包位置要么靠近client, 要么靠近server。而云原生中的NPM要么位于client,要么位于server。这个抓包位置的变化,导致性能指标的计算方法略有区别。

  • Rtt (round trip time)
    计算时要区分该连接的目标地址是否为本机地址,如果是,意味着该连接是远端访问本地的一个服务,按照上图中server角色来计算:T(ack) – T(synack);否则,按client角色来计算:T(synack) – T(syn)
  • Crt (client response time)
    按client角色来计算:T(http-get) – T(ack)
  • Art (application response time)
    按 server 角色来计算: T(http-response) – T(http-get)

  • Ptt (payload transaction time)
    按client 或 server角色都可以,数据传输的总时间。

剩下的两个字段,PID和UID,分别表示进程ID和用户ID,这两个字段的值无法在网络包中获取,需要从操作系统中获取。下图是linux系统下运行 netstat -nopt 的输出。

image.png

从中可以看到一条连接的四元组信息,还有PID和进程名。

到此,我们已经获取了本文开头结构中的所有字段的值。很多的应用日志框架都会默认输出PID信息,因此,通过PID还可以将网络指标与应用的日志进行关联,为相关的故障诊断提供更丰富的上下文信息。

3、结尾

通过对网络数据的分析,可以计算出一些与网络质量相关的关键指标,用于定位与网络相关的故障根因。TCP协议栈本身是一个比较复杂的系统,内部11种状态之间的转换与开销对于外部来说是一个完全的黑盒,但是对于定位问题有时却很关键。那如何观测这些关键信息呢?后续文章将介绍如何使用eBPF来采集内核中的网络指标,敬请期待。

相关文章
|
3月前
|
存储 算法 Java
深入理解JVM:内存管理与垃圾回收机制探索
JVM是Java程序的运行核心,实现跨平台、自动内存管理与高效执行。其架构包括类加载、运行时数据区、执行引擎等模块。内存模型历经演变,JDK 8起以元空间替代永久代,优化GC性能。JVM通过分代回收机制,结合标记清除、复制、整理等算法,管理对象生命周期,提升系统稳定性与性能。
|
4月前
|
人工智能 开发框架 安全
浅谈 Agent 开发工具链演进历程
模型带来了意识和自主性,但在输出结果的确定性和一致性上降低了。无论是基础大模型厂商,还是提供开发工具链和运行保障的厂家,本质都是希望提升输出的可靠性,只是不同的团队基因和行业判断,提供了不同的实现路径。本文按四个阶段,通过串联一些知名的开发工具,来回顾 Agent 开发工具链的演进历程。
840 64
|
4月前
|
人工智能 安全 API
20 万奖金池就位!Higress AI 网关开发挑战赛参赛指南
本次赛事共设三大赛题方向,参赛者可以任选一个方向参赛。本文是对每个赛题方向的参赛指南。
441 37
|
3月前
|
人工智能 运维 Cloud Native
一起聊聊大规模 AI Agent 部署与运维实战
诚挚地邀请您参加将于 11 月 28 日(周五)下午,在北京阿里中心举办的 【企业 AI 原生应用架构升级】主题研讨会。
|
4月前
|
运维 监控 数据可视化
从巴比馒头的“洗菜流水线”,来看“telemetry pipeline”工具的火热兴起
以巴比馒头自动化洗菜为喻,探讨运维领域“数据清洗”难题。DataHub作为国产可视化遥测管道工具,支持多源数据接入与低代码编排,实现日志、指标、链路等数据的高效处理与统一管理,助力企业构建高质量可观测体系。(238字)
|
3月前
|
存储 Java Go
Goroutine间的“灵魂管道”:Channel如何实现数据同步与因果传递?
Channel是Go实现CSP并发模型的核心,通过goroutine间安全的数据传递与同步,避免锁和条件变量的复杂性。其底层基于循环队列与等待队列,支持发送接收、阻塞唤醒等机制,并建立happens-before因果关系,确保并发确定性。
1304 0
|
3月前
|
人工智能 自然语言处理 安全
Serverless AI 原生架构破局「三高」困境
在 AI 大模型浪潮席卷全球的今天,企业纷纷加速拥抱 AI,推动智能客服、内容生成、流程自动化等场景快速落地。然而,许多企业在实践中却遭遇了“三高困境”——成本高、复杂度高、风险高。Serverless AI 原生架构不仅是技术演进,更是企业智能化转型的关键基础设施。它让开发者聚焦业务逻辑,让企业告别“基建焦虑”,让 AI 真正“飞入寻常百姓家”。
|
3月前
|
Windows
系统重装PE工具下载,没有广告,没有劫持,AMpe 工具箱,Edgeless+Hub,ventoy,Finpe
本文推荐多款实用PE工具箱,如AMpe、Ventoy、FirPE、Edgeless+Hub,涵盖系统重装、上网维护等需求,界面美观、操作简便,并提供纯净系统镜像下载站及使用建议,助力高效装机。
627 0
|
3月前
|
SQL 关系型数据库 MySQL
MySQL慢sql的排查与优化
本文详解MySQL慢查询排查与优化,涵盖EXPLAIN执行计划分析、索引失效场景及10大优化方案,如避免全表扫描、合理使用索引、分页与排序优化等,助力提升数据库性能。
MySQL慢sql的排查与优化
|
3月前
|
人工智能 运维 监控
告别重复劳动:使用n8n核心触发器(Cron, Webhook, 手动)开启自动化之旅
在数字时代,n8n作为开源自动化工具,通过手动、定时(Cron)和Webhook三大核心触发器,实现任务的智能调度与流程自动化。掌握它们,即可轻松解放双手,提升效率,开启高效工作新模式。