← 返回文章列表
信创 4 分钟阅读 炬鲸团队

信创迁移实战:把 ELK 日志栈搬到鲲鹏 ARM 国产化环境

信创改造卡在日志侧?本文给出 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,保留时间字段原值,保证能回溯历史。

麒麟/统信上跑采集器的注意点

  • 国产 OS 默认开 SELinux 或安全加固,采集器读日志目录要放行:麒麟下 chcon -t container_log_t /var/log/app,或关闭对应策略。
  • 时区统一用 Asia/Shanghai,避免日志时间戳和告警时间对不上。
  • 用 systemd 管理采集器并加 Restart=always,国产机房的电源/网络抖动比想象中多。

迁移后的收益

去掉 ES 集群后,日志侧资源占用明显下降——ARM 服务器核数单价更低,OBSERVE 原生支持国产 CPU/OS,不需要任何兼容层。采集、存储、查询三层全栈国产化后,等保测评和信创验收的日志项基本可以一次通过,不用为单个组件反复打补丁。