Deploying an observability platform on a domestic stack is hard because of database adapters and CPU architecture differences. This post documents a real deployment on Kylin V10 + DM database + Hygon/Phytium, covering migration steps and benchmark results.
An observability platform is itself software, so it has to pass the same domestic-technology requirements as everything else in the stack. At a government customer site, we ran Jujing OBSERVE entirely on Kylin V10 (aarch64) + DM8 + Hygon/Phytium CPUs. This post documents what we did, in a form you can reuse.
Install DM8 and initialize the instance first. Set the page size to 32K and the compatibility mode to MySQL — otherwise table creation will hit length limits caused by the default 8K page size. This one setting saves a lot of late-night debugging later.
Use DM's built-in DTS (Data Transfer Service) to move metadata out of MySQL. Migrate schema before data, and primary tables before related tables. Two pitfalls are worth avoiding up front:
orderId in MySQL need double quotes after migration, so it's cleaner to convert them to lowercase_with_underscores before you migrate.ON DUPLICATE KEY UPDATE has no direct equivalent; DM uses MERGE INTO. Batch write SQL in your application will need rewriting accordingly.We found a dry-run pass was worth the time: migrate the schema first, inspect what DTS flagged, fix the type and length differences, then migrate the data. Jumping straight to a full copy usually fails halfway on a single bad column and forces you to restart.
Jujing OBSERVE ships with a DM dialect adapter built in. Set db.dialect=dm in the deployment config and you're done — no business code changes required.
The platform runs containerized, but under aarch64 the images must be multi-arch or separately built arm64 versions — pulling an x86 image will simply fail to start. Our approach: publish an arm64 image tag and run it on Kylin with docker or podman.
Monitoring agents must be compiled separately for Hygon and Phytium. Hygon is x86-compatible, so the x86 binary works as-is; Phytium is pure ARM and needs its own aarch64 package. In the installer, just pick the package by uname -m at delivery time so the customer never has to think about architecture.
The eBPF probe on Kylin needs a kernel with BTF support. Kernels after 4.19 generally work, but older ones must fall back to procfs-based collection. Check this before promising agent-level observability on older hosts.
Domestic deployments usually come with an extra requirement: everything from the OS to the database must be on an approved catalog, and the platform must support a domestic CA and audit requirements. Jujing OBSERVE ships with an audit log that records every query and administrative action, and supports SM2/SM3/SM4 cryptographic suites for at-rest encryption and transport. If your customer asks for 等保 (MLPS) certification evidence, generate the audit report directly from the platform rather than assembling it by hand.
We load-tested with a 300-node simulated environment: log ingestion peaked at 120K lines/sec, spans at 40K/sec, and a single search's P99 stayed under 1.2 seconds. CPU usage ran about 15% higher than on x86 — expected, since Phytium single-core performance trails mainstream x86 and relies on more cores to compensate.
Three lessons stand out from the deployment:
GLIBC_2.34 not found. Compile locally on the target or pin older dependency versions.Xinchuang adoption doesn't end at "it installed." It ends at "it runs stably, performance is acceptable, and you can actually troubleshoot it." Validate all three before you call the migration done.