如何从零开发一款 OneAgent

本文涉及的产品
应用实时监控服务-应用监控,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
注册配置 MSE Nacos/ZooKeeper,182元/月
简介: Databuff自研轻量级OneAgent,专为智能可观测时代打造。具备低资源占用、自动服务发现、SQL查询支持与采集即治理等特性,兼容多语言插件扩展,助力AI-Agent集成与全栈监控统一管理。

原文链接:https://databuff.com/resourceDetail/blog105

在运维和可观测行业中,已经有不少优秀的终端数据采集器,其中包括不少的开源项目,如Datadog Agent, Elastic Beats,Telegraf等等,它们在一些特定的需求场景中可以很出色的工作。但是,对于一家商业化的可观测工具公司来说,这些数据采集器并没有完全满足当前数据智能对采集端的要求,尤其是现在GenAI、AgenticAI的时代,对数据工具/技能的要求会越来越高。

因此,笔者所在公司耗费了很长时间、很多功夫,从零开始自研一款属于自己的商业化OneAgent,作为可观测智能的数据基石。并且从规划设计之初,我们就着重关注其轻量、易用、可扩展的关键属性。经过近几年的商用打磨,OneAgent已经成熟稳定地运行在众多客户的生产环境。

01

OneAgent 的核心设计理念

● 轻量化:降低资源占用,实现高效采集

基础数据采集时(CPU、内存、磁盘、进程、容器、网络)的资源占用情况: 内存≈50 MB, CPU < 1 % 。

● 易用性:简化操作,自动化服务识别与配置

一键安装、服务自动识别、自动打包、自动关联,最终达到 “无脑安装” 的程序。

● 可拓展性:插件机制助力自定义采集扩展

采用插件机制支持自定义的采集,插件可以使用任何开发语言实现,包括shell脚本、python等。此外,插件可以随时启用和停止,不需要重新启动OneAgent (这同时也体现了易用性)

02

OneAgent 的亮点功能

除了以上几点,OneAgent还有以下几个亮点功能:

● 除了主动采集,还可以接收其它组件推送的数据,如SNMP trap, statsd指标

支持普通用户安装和采集,非Root权限也可以安装

支持使用SQL语法获取实时采集的数据(类似osquery),可以很容易当作目前火热的AI-Agent的Tools使用

● 采集的同时完成数据治理,实现采集即治理,无感知情境富化

● 可视化统一管理,后端Web界面统一管理配置

下图是OneAgent 的数据采集概览图,涵盖了目前常见的几种采集方式。

微信图片_2025-09-17_142403_084.png

图:OneAgent架构图

接下来,详细说明一下,我们是如何实现以上的一些主要特性。

03

如何实现OneAgent的主要特性

1. 实现 OneAgent 轻量化:减少资源占用的技术策略

轻量的重要指标就是在采集期间尽量少的占用资源,尤其是CPU资源,而采集器经常是通过遍历的方式来获取系统的相关信息。比如,在采集进程相关信息时,采集器会递归访问/proc目录,读取每个进程目录下的信息文件。这样一次采集往往会涉及成百上千个内存文件的打开、读取和关闭操作,消耗的CPU资源不容忽视,尤其当系统中的进程比较多时,甚至会影响业务的正常运行。

OneAgent在采集进程信息时,首先会对进程进行分类,对于与业务无关的进程,只需要采集基本的信息即可;而对于业务进程,需要采集更多的详细信息,比如网络连接统计信息。此外,OneAgent不会每次采集都遍历系统目录,只需要定期遍历一次系统目录(比如一小时一次),期间通过Netlink的NETLINK_CONNECTOR子系统可以实时侦听进程的创建和结束事件,从而每次采集只需要关注这些增量信息即可,极大的减少了对系统目录的访问量。

2. 提高易用性:从安装到采集、治理的全自动化

采集器的易用性指不需要过多的人为配置和操作,就能采集到用户和系统需要的数据。OneAgent通过服务自动发现、自动配置、自动关联和打标来减少人工干预并提高准确性。

OneAgent采集进程信息时,根据采集到的信息可以判断是否为需要关注的服务,如采集到进程名为mysqld,说明系统有mysql服务正在运行,同时可以获取mysql侦听的地址和端口,这样就可以自动生成mysql采集插件的配置信息,如果系统启用了该插件,就可以自动采集mysql服务的指标信息。同理,当OneAgent部署在K8S环境中时,OneAgent会根据采集到的Pod信息,自动推断etcd, ApiServer, ControlManager, KubeProxy等组件的连接信息并自动生成配置数据。

此外,OneAgent还会跟踪环境的网络流量并支持常见协议的解析,比如当前主机访问远程的一个Mysql服务器,OneAgent通过网络流量可以识别出Mysql协议,发现远端的Mysql服务器相关信息,自动生成配置数据。同样,如果这时的Mysql采集插件已经启用,就可以自动采集指标信息。

除了自动发现环境中的服务和组件,OneAgent还会自动关联属性,比如采集进程信息时,如果还启用了容器采集或是运行在K8S环境中,那么进程信息中还会关联上容器和Pod的信息。这样,当我们在定位问题时,可以很容易从进程上探至容器和Pod。又比如,当OneAgent从网络流量中提取出一条TCP连接时,它还会根据TCP连接的五元组信息,关联至与该连接相关的进程,因此可以很轻易地将一条传输延迟很高的网络连接定位至某个进程。

3. 扩展性:利用插件机制赋能自定义采集

任何一个采集器都不可能预见到所有需要采集的组件,因此允许用户用自己擅长的方式去自定义采集方式对一个采集器来说是也一项至关重要的特性。OneAgent 通过插件机制实现采集扩展性,而插件的实现方式并不局限于某种开发语言,只要插件的输出格式满足OneAgent要求的规范即可。

我们以shell脚本插件举例说明,如何写一个符合规范的自定义插件:

#!/bin/bash
echo "# system.user.LOGIN_TIME:GAUGE 
echo “# system.user.LAST_LOGIN:GAUGE"
echo "# system.mem.usage:COUNTER|desc text"
echo "123{user=abc, age=18}, 45.33, 2342{email=abc.com}"

可见,这个规范并不复杂,主要包括以下几点:

  1. 插件启动时,首先要输出采集指标的描述信息,包括指标名,指标类型

​ √ 输出行以 # 开头

​ √ 指标描述信息的格式如下:指标名:指标类型|指标描述信息

√指标类型可取值:GAUGE, COUNTER, RATE, MONITONIC, HISTORGRAM

  1. 按行输出采集的指标,指标内容与Promepheus格式一致,多个指标数据以","分隔,每个指标数据包含两部分:数值和标签,标签部分包含在{}。

    通过以上内容,我们大致了解了Databuff-OneAgent的主要工作机制及设计原则。做过数据分析工作的朋友可能深有体会,高质量的数据不仅能大大减少数据预处理的时间,而且也决定着各种机器学习/AI分析的效果。因此,一款优秀的数据采集器值得各行各业的关注。

相关文章
|
25天前
|
Kubernetes Java 调度
无需接入执行器,0 代码改造实现微服务任务调度
本文提出了一种基于云原生的任务调度新方案,不需要依赖SDK,不依赖语言,实现定时调度和分布式跑批。
159 15
|
30天前
|
存储 安全 Java
《数据之美》:Java集合框架全景解析
Java集合框架是数据管理的核心工具,涵盖List、Set、Map等体系,提供丰富接口与实现类,支持高效的数据操作与算法处理。
|
存储 人工智能 安全
智存跃迁,阿里云存储面向 AI 升级全栈数据存储能力
一文总览阿里云存储产品创新与进展!
505 0
|
12天前
|
存储 算法 Java
深入理解JVM:内存管理与垃圾回收机制探索
JVM是Java程序的运行核心,实现跨平台、自动内存管理与高效执行。其架构包括类加载、运行时数据区、执行引擎等模块。内存模型历经演变,JDK 8起以元空间替代永久代,优化GC性能。JVM通过分代回收机制,结合标记清除、复制、整理等算法,管理对象生命周期,提升系统稳定性与性能。
|
17天前
|
人工智能 自然语言处理 安全
SOFA AI 网关基于 Higress 的落地实践
SOFA 商业化团队为满足客户 AI 业务的发展需求,基于开源 Higress 内核构建,推出了 SOFA AI 网关,专为 SOFA 场景深度优化、能力增强,是面向 AI 需求的智能网关解决方案。
156 10
|
17天前
|
消息中间件 人工智能 Apache
阿里云两大 AI 原生实践荣获 2025 年度 OSCAR “开源+”典型案例
恭喜阿里云微服务引擎 MSE、Apache RocketMQ for AI 获权威认可!
129 10
|
1月前
|
消息中间件 人工智能 Kafka
AI 时代的数据通道:云消息队列 Kafka 的演进与实践
云消息队列 Kafka 版通过在架构创新、性能优化与生态融合等方面的突破性进展,为企业构建实时数据驱动的应用提供了坚实支撑,持续赋能客户业务创新。
299 20
kde
|
16天前
|
安全 关系型数据库 Linux
手把手教你用 Docker 部署 Red Hat UBI8 镜像
Red Hat UBI8是官方维护的免费容器基础镜像,轻量安全,兼容性强,适用于各类应用部署。支持Docker快速拉取与运行,提供持久化挂载、Compose编排等企业级方案,是构建容器化应用的理想“地基”。
kde
103 2