可观测栈组件多、依赖密,是信创替换里最难啃的骨头之一。本文记录炬鲸 OBSERVE 全链路迁移到鲲鹏、飞腾、海光三种国产 CPU 的过程,覆盖镜像构建、依赖兼容、性能对比与回滚预案,给出可复用的落地清单。
业务系统替换到国产 CPU 往往只动应用层,但可观测平台要下沉到内核与容器运行时:采集器跑在每个节点上,Agent 要适配 glibc 与内核版本,存储引擎吃 CPU 指令集特性。组件多、依赖密、且一旦停摆,全公司的告警和排障能力一起下线。
我们把炬鲸 OBSERVE 全链路迁移到三类国产芯片:鲲鹏 920(ARM)、飞腾 S2500(ARM)、海光 C86(x86 兼容)。下面是可复用的落地清单。
采集器和各服务组件统一走多架构镜像,用 buildx 一条命令出三份:
docker buildx build --platform linux/amd64,linux/arm64 -t registry.local/observe/agent:3.2.1 --push .
要点:
debian:bookworm-slim 换成多架构官方镜像,避免自己拼架构标签。-target bpfel 与 bpfeb 的大小端差异。迁移中踩到最多的三类坑:
bpftool feature probe,确认 kprobe、tracepoint 可用再上 eBPF 采集器,否则退回到基于 /proc 的采集。-XX:+UseG1GC 的默认行为有差异,压测后重新调堆与 GC 线程数,不要照搬 x86 的参数。迁移不是「搬过去能跑」就完事,要重做容量规划。我们压测结论(采集 Agent 单节点,10k 日志/s):
| 指标 | x86 基线 | 鲲鹏 920 | 飞腾 S2500 |
| --- | --- | --- | --- |
| 采集吞吐 | 100% | 92% | 87% |
| CPU 占用 | 100% | 108% | 115% |
| 内存占用 | 100% | 96% | 99% |
ARM 单核弱一些,但核数多。压测后按实际吞吐把采集器副本数上调 10%~20%,存储层 Shard 数不变、但监控分片迁移时的 rebalance 阈值要重新设。
信创替换切忌一步到位,我们的灰度顺序是:
每一步都保留「切回 x86」的开关:DNS 或 LB 层一键改权重即可回滚,不依赖数据层还原。
bpftool feature probe,按能力降级采集。把这套清单跑顺,可观测栈的信创替换是可控的,真正花时间的是压测和参数重调,而不是编译本身。