【开源项目实践指南】如何快速开始体验与部署HUATUO?

B站影视 港台电影 2025-08-28 09:24 2

摘要:HUATUO(华佗)是滴滴自研并开源的云原生操作系统可观测性项目,聚焦解决云原生环境中故障现场缺失、复现困难、诊断成本高等问题。在2025 CCF中国开源大会上,滴滴正式将HUATUO(华佗) 开源成果捐赠给中国计算机学会(CCF),并加入其重点孵化项目序列。

HUATUO(华佗)是滴滴自研并开源的云原生操作系统可观测性项目,聚焦解决云原生环境中故障现场缺失、复现困难、诊断成本高等问题。在2025 CCF中国开源大会上,滴滴正式将HUATUO(华佗) 开源成果捐赠给中国计算机学会(CCF),并加入其重点孵化项目序列。

华佗项目GitLink地址

CCF开源发展技术委员会将开展HUATUO项目专题介绍,第一期为大家带来《如何快速开始体验、部署 HUATUO ?》。该文档分别从极速体验、快速开始、编译部署三部分说明。

1

极速体验

该部分可以帮助你快速了解前端效果。你可以直接在前端大盘进行一些查询操作,如查看异常事件概览、异常事件上下文信息、指标曲线等。

- 访问大盘:

账户:huatuo 密码:huatuo1024

-大盘示例:

Events, AutoTracing 大盘

宿主机 Metrics 大盘

容器 Metrics 大盘

2

快速开始

2.1 快速运行

如果你想了解底层原理,将 HUATUO 部署到自己的监控系统。你可以通过 docker 启动已经编译好的容器镜像(注意:该方式默认关闭了获取容器信息功能,和 ES 存储功能)。

直接运行:$ docker run --privileged --Cgroupns=host --network=host -v /sys:/sys -v /run:/run huatuo/huatuo-bamai:latest获取指标:在另外一个终端获取指标$ curl -s localhost:19704/metrics查看异常事件 (Events, AutoTracing):HUATUO 会将采集到的内核异常事件信息在 ES 存储一份(已关闭),同时在本地目录 ./record 留存一份。注意:通常该路径下没有任何文件(正常状态的系统不会触发事件采集),你可以通过构造异常场景或者修改配置文件阈值产生事件。

2.2 快速搭建

如果你想更进一步了解 HUATUO 运行机制、架构设计、监控大盘、自定义部署等。通过 docker compose,可以快速地在本地搭建部署一套完整的环境。

$ docker compose --project-directory ./build/docker up

该命令拉取最新镜像,同时启动 elasticsearch, prometheus, grafana,huatuo-bamai 等组件。命令执行成功后,打开浏览器访问 http://localhost:3000 即可浏览监控大盘(grafana 默认管理员账户:admin 密码:admin; 由于你的系统处于正常状态,Events, AutoTracing 大盘里通常没有数据)。

3

编译部署

3.1 编译

为隔离开发者本地环境和简化编译流程,我们提供容器化编译方式,你可以直接通过 docker build,构建完成的镜像(包含底层采集器 huatuo-bamai、bpf obj、工具等)。在项目根目录运行:

$ docker build --network host -t huatuo/huatuo-bamai:latest .

3.2 运行

运行容器:$ docker run --privileged --cgroupns=host --network=host -v /sys:/sys -v /run:/run huatuo/huatuo-bamai:latest或从容器 /home/huatuo-bamai 路径下拷贝出所有文件后本地手动运行:$ ./huatuo-bamai --region example --config huatuo-bamai.conf托管:可使用 systemd/supervisord/k8s-DaemonSet 等方式托管运行。

3.3 配置

配置容器信息

HUATUO 通过调用 kubelet 接口获取POD/容器信息。你可以根据实际环境配置访问接口和证书,配置为空“”,表示禁用该功能。

[Pod]
KubeletPodListURL = "http://127.0.0.1:10255/pods"
KubeletPodListHTTPSURL = "https://127.0.0.1:10250/pods"
KubeletPodCACertPath = "/etc/kubernetes/ca.pem"
KubeletPodClientCertPath = "/var/lib/kubelet/pki/kubelet-client-current.pem"

配置存储

指标存储 (Metric): 所有的指标都存储在 prometheus,你可以通过访问 :19704/metrics 接口获取指标。异常事件存储 (Events, AutoTracing): 所有的内核事件,和 Autotracing 事件都存储在 ES。注意:如果配置为空表示不启动 ES 存储,只在本地目录 ./record 存储事件。ES 存储配置如下:[Storage.ES]
Address = "http://127.0.0.1:9200"
Username = "elastic"
Password = "huatuo-bamai"
Index = "huatuo_bamai"本地存储配置如下:# tracer's record data
# Path: all but the last element of path for per tracer
# RotationSize: the maximum size in Megabytes of a record File before it gets rotated for per subsystem
# MaxRotation: the maximum number of old log files to retain for per subsystem
[Storage.LocalFile]
Path = "./record"
RotationSize = 100
MaxRotation = 10

事件阈值

所有的内核事件采集 Events 和 AutoTracing 都可以配置触发阈值。默认的阈值都是在实际生产环境反复验证后的经验数据,你可以根据自身需求,在 huatuo-bamai.conf 中修改阈值。

资源限制

为保障物理机稳定性,我们对采集器进行了资源限制,其中 LimitInitCPU 表示采集器启动阶段占用的 CPU 资源,LimitCPU/LimitMem 表示采集器启动成功后常态占用的资源限制:

[RuntimeCgroup]
LimitInitCPU = 0.5
LimitCPU = 2.0
# limit memory (MB)
LimitMem = 2048

来源:CCFvoice

相关推荐