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

炬鲸 OBSERVE 在麒麟 + 鲲鹏环境的部署实践

记录炬鲸 OBSERVE 在银河麒麟 V10(ARM64)+ 鲲鹏 920 上的离线部署全过程:依赖要求、三步安装、glibc/NUMA/时区等常见坑的排查方法,以及单机性能基准。

环境与依赖

这套部署在银河麒麟高级服务器操作系统 V10(ARM64)+ 鲲鹏 920 处理器上验证过。关键依赖:

  • CPU 架构:aarch64,8 核起步,生产建议 32 核 + 64G 内存,日志热数据层配本地 NVMe SSD
  • 操作系统:麒麟 V10 SP2 及以上,内核 4.19+(更早的 SP 版本 glibc 偏旧,部分组件跑不起来)
  • 存储:建议本地 SSD,日志冷热分层时再接对象存储(MinIO 或国产 S3 兼容服务)
  • 运行时:优先用麒麟自带的 openEuler 系容器运行时,或 Docker 19.03+

镜像全部提供 arm64 版本,无需自己编译。装之前先 uname -m 确认是 aarch64,避免拉错 x86 镜像——这是首次安装最常见的错误,而且报错方式很迷惑。

安装步骤

以离线环境为例(信创内网通常不出外网),三步:

  1. 拷贝安装包与镜像到目标机:
tar -xzf jjhub-observe-arm64.tar.gz
cd jjhub-observe-arm64
docker load -i images/jjhub-observe-arm64.tar
  1. 修改配置,指定数据目录与端口:
# config.yaml
storage:
  data_dir: /data/jjhub
  retention_days: 30
server:
  http_port: 8080
  grpc_port: 4317
  1. 启动并初始化:
./install.sh --config config.yaml

install.sh 会自检架构、磁盘空间、端口占用,缺依赖会直接报错退出。初始化完成后访问 http://<ip>:8080 登录,默认账号见部署说明,首次登录强制改密。多节点部署时,每台机器用同一份 config 跑 install.sh,把其中一台设为 role: coordinator 即可,其余由脚本自动处理。

常见坑与排查

实际落地中这几个问题出现频率最高:

  1. glibc 版本过低:麒麟 V10 早期版本 glibc 2.28,部分组件要求 2.31+,需要升级到 SP2 或打补丁;安装器会检测并拒绝,而不是装完悄悄失败
  2. arm64 下 timezone 缺失:部分基础镜像不打包 tzdata,容器内报 tzdata 找不到,导致日志时间偏移 8 小时,解决办法是在镜像里安装 tzdata 并挂载 /etc/localtime
  3. 性能不生效:鲲鹏的 NUMA 结构比 x86 复杂,默认绑定策略可能跨 NUMA 访问内存,查询和存储服务建议用 numactl 把 CPU 与内存绑到同一节点
  4. 国产化数据库兼容:如果接的是达梦/人大金仓做元数据存储,JDBC 驱动要单独放到 lib 目录,连接串写法与 MySQL 不同

性能表现

在 32 核鲲鹏 920 + 64G 内存的单机测试中:

  • 日志写入吞吐:约 12 万条/秒(每条 200 字节)
  • 单次 SQL 聚合查询(10 亿条):< 3 秒
  • 链路采样 + 存储:万级 span/秒无压力

这个水平满足绝大多数省级政务、中型金融系统的量级。更大的场景建议按地域或业务做多实例分片,配合统一查询层,平台支持且无需改表结构。

有一点要说清楚:以上数字基于本地 NVMe 和正确的 NUMA 绑定。如果用机械盘或跨 NUMA 访问内存,吞吐大概只有三分之一,小站点够用,但规划容量时要留余量。