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

信创实战:在麒麟 V10 + 鲲鹏上跑通 OpenTelemetry 采集

国产 ARM 环境跑 OpenTelemetry Collector 的完整步骤:二进制获取与校验、麒麟 V10 部署、systemd 托管、鲲鹏调优,以及对接国产数据库做存储。

信创环境里的采集层,为什么常常被忽略

做国产化改造,大家盯得最紧的是应用和数据库,采集层却容易被漏掉。实际上日志、指标、链路的采集组件也一样要跑在国产 CPU 和国产 OS 上,否则数据出口那一环就不算自主可控,你赖以合规的可观测数据,反而从一个外来二进制里流出去了。

OpenTelemetry Collector 本身是 Go 写的,交叉编译到 ARM64 很方便,体积小、依赖少,是信创环境里采集层的合适选择。因为是静态二进制,它绕过了开源工具在麒麟、统信上常遇到的共享库依赖地狱。

拿到 ARM64 的二进制

官方 Release 提供 otelcol_linux_arm64 二进制包。没有外网的生产环境,可以在内网编译机上下载、校验后再分发:

wget https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/v0.100.0/otelcol_0.100.0_linux_arm64.tar.gz
sha256sum otelcol_0.100.0_linux_arm64.tar.gz

校验通过后,把 otelcol 放到 /usr/local/bin/。把校验值写进清单,每次部署都能复验,这也是审计团队对自主可控基础设施的常规要求。

麒麟 V10 上的依赖与部署

麒麟 V10 基于 RPM,但 ARM 版很多仓库包不全,用包管理器装小众工具经常失败。Collector 是静态二进制,几乎不需要额外依赖,直接跑即可:

chmod +x /usr/local/bin/otelcol
otelcol --config /etc/otelcol/config.yaml

建议用 systemd 托管,保证重启后自拉起、崩溃后自动恢复:

[Unit]
Description=OpenTelemetry Collector
After=network.target

[Service]
ExecStart=/usr/local/bin/otelcol --config /etc/otelcol/config.yaml
Restart=always
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

鲲鹏上的调优

鲲鹏 920 核心多、NUMA 结构明显,两个参数值得关注:

  • 绑定 CPU 亲和性:用 taskset 把 Collector 绑到单个 NUMA 节点,减少跨节点内存访问——这在负载下表现为尾延迟升高。
  • 调大 limit_mib 和队列:鲲鹏单核性能弱于 x86 同频,内存缓冲要留够,避免突发流量下丢数据。
processors:
  memory_limiter:
    limit_mib: 1024
    spike_limit_mib: 256
  batch:
    send_batch_size: 16384
    timeout: 10s

数据落库对接国产数据库

炬鲸 OBSERVE 支持把元数据与索引落到国产数据库。因为是 MySQL 协议,达梦(MySQL 兼容模式)、OceanBase、TiDB 都可以直接接:

storage:
  type: mysql
  dsn: "user:pass@tcp(dm8:5236)/observe?charset=utf8mb4"

数据库换掉,应用与采集层代码零改动。这正是从 MySQL 迁到国产数据库风险低的原因:线协议没变,变的只是连接串。

验收清单

部署完别急着上线,按这个清单自检:

  • Collector 进程正常、Restart=always 生效
  • 三类数据都能在控制台查到
  • 压测下无 OOM、无数据丢失
  • 全部数据落在内网,无外发连接

压测要打真实的采集链路,别用合成数据糊弄——自主可控审计看的是生产环境真实发生的事,不是演示。