A full air-gapped deployment walkthrough on Kylin V10 (ARM64) + Kunpeng 920: dependencies, three-step install, debugging glibc/NUMA/timezone pitfalls, and single-node performance benchmarks.
This deployment is validated on Kylin Advanced Server V10 (ARM64) with Kunpeng 920 processors. Before you start, lock down the basics:
All images ship arm64 builds, so there's no self-compilation. Run uname -m first and confirm aarch64 — pulling an x86 image on ARM is the single most common first-install mistake, and it fails in confusing ways.
Air-gapped environments are the norm in Xinchuang intranets, so assume no outbound network. Three steps:
tar -xzf jjhub-observe-arm64.tar.gz
cd jjhub-observe-arm64
docker load -i images/jjhub-observe-arm64.tar
# config.yaml
storage:
data_dir: /data/jjhub
retention_days: 30
server:
http_port: 8080
grpc_port: 4317
./install.sh --config config.yaml
install.sh self-checks architecture, disk space, and port conflicts, and exits with a clear error if anything is missing. After init, open http://<ip>:8080, log in with the default account, and change the password (forced on first login).
For a multi-node setup, run install.sh on each node with the same config and designate one node as the coordinator by setting role: coordinator — the script handles the rest.
Four issues come up more than anything else in real Xinchuang deployments:
Once it's running, plan for the long term. Upgrades follow the same air-gapped pattern: load the new image, then run the in-place upgrade script, which backs up config and metadata and rolls the services one at a time so ingestion never stops. Keep at least two generations of the image tarball on disk before upgrading, in case you need to roll back offline.
Monitor the node with the same tools you use for the rest of the fleet. The two counters that matter most are disk IO wait on the storage directory and the ingest lag metric. If ingest lag starts climbing, check NUMA pinning first — cross-node memory access is the usual culprit on Kunpeng, not CPU headroom.
For backups, snapshot the metadata store daily and copy the config file to a second location. Log data itself usually doesn't need backing up since it's reproducible from source systems, but metadata and alert rules are not — losing them means rebuilding dashboards and alerts by hand.
On a single 32-core Kunpeng 920 with 64G RAM:
That comfortably covers most provincial-government and mid-size financial workloads. If you outgrow it, shard by region or business unit and put a unified query layer in front — the platform supports it without a schema change.
One caveat worth stating plainly: these numbers assume local NVMe and correct NUMA pinning. On spinning disks or with cross-node memory access, expect roughly a third of the throughput, which is still fine for smaller sites but worth planning around.