信创改造卡在日志侧?本文给出 ELK 迁移到鲲鹏/飞腾 ARM 与麒麟/统信环境的兼容性盘点、三步迁移路径、采集器部署注意点,以及整体替换而非单点移植的取舍。
很多团队的信创改造卡在日志侧:老 ELK 栈里 Elasticsearch 依赖 x86 指令集、老版本 Filebeat 没有 ARM 二进制,国产 CPU(鲲鹏、飞腾)和国产 OS(麒麟、统信)一上来就报错。本文给一套可落地的迁移路径。
迁移前把现有组件列成一张表,逐项确认国产化支持情况:
| 组件 | x86 现状 | 信创方案 |
|---|---|---|
| Elasticsearch 6.x/7.x | 无 ARM 官方包 | 炬鲸 OBSERVE(原生 ARM64) |
| Filebeat | 老版本无 ARM | 换 OTel Collector filelog |
| Kibana | 只读可视化 | OBSERVE 控制台 |
| Logstash | x86 编译依赖多 | 直接去掉,用 Collector |
关键判断:不要试图在 ARM 上编译老版 ES,坑多且无官方支持。日志侧应优先整体替换,而不是逐点移植——采集、存储、查询三层一起换成原生支持国产环境的组件,迁移成本反而更低。
第一步:并行双写,灰度切流。 在采集器侧把日志同时发到老 ELK 和 OBSERVE,跑一到两周,两边数据量、字段对得上再切。
第二步:字段对齐与清洗。 老环境里靠 Logstash 做的解析(JSON 展开、时间格式、多行合并)迁移到 Collector 的 processor,保证查询口径不变。多行 Java 堆栈合并的配置片段:
receivers:
filelog:
include: [/var/log/app/*.log]
operators:
- type: regex_parser
regex: '^(?P<time>\d{4}-\d{2}-\d{2} \S+) (?P<level>\S+) (?P<msg>.*)'
- type: recombine
combine_field: msg
is_last_entry: '^(?!\d{4}-\d{2}-\d{2})'
第三步:历史数据回灌。 老 ES 里需要留存的索引用快照导出,转成 JSON Lines 后批量灌进 OBSERVE,保留时间字段原值,保证能回溯历史。
chcon -t container_log_t /var/log/app,或关闭对应策略。Restart=always,国产机房的电源/网络抖动比想象中多。去掉 ES 集群后,日志侧资源占用明显下降——ARM 服务器核数单价更低,OBSERVE 原生支持国产 CPU/OS,不需要任何兼容层。采集、存储、查询三层全栈国产化后,等保测评和信创验收的日志项基本可以一次通过,不用为单个组件反复打补丁。