A worked deployment of Ju Jing OBSERVE on Kylin V10 + Kunpeng 920 + Dameng DM8: component choices, Dameng initialization and dialect config, OS tuning, benchmark results, and acceptance advice.
In Xinchuang (domestic-innovation) environments, the question isn't "does it run" but "does it stay stable, hold its performance, and cover the ecosystem." Ju Jing OBSERVE fully supports domestic CPUs, operating systems, and databases. Below is a worked deployment on Kylin V10 + Kunpeng 920 + Dameng DM8, plus the pitfalls that matter.
The combination we validated in production:
| Component | Choice |
|-----------|--------|
| CPU | Kunpeng 920 (ARM64) |
| OS | Kylin V10 SP3 (aarch64) |
| Database | Dameng DM8 (config, alerts, users) |
| Object storage | MinIO (S3-compatible, for cold log data) |
Ju Jing OBSERVE is written in Go, so cross-compiling with GOOS=linux GOARCH=arm64 yields a clean ARM64 binary — there's no instruction-set compatibility issue. Official images ship both amd64 and arm64 tags; just pull the matching one. Plan object storage separately: cold log data grows fast, and MinIO scales out by adding nodes — don't let it fight the search cluster for disk. Deploy the collection agent as a DaemonSet on every business node, reading local logs over loopback so you don't burn cross-node bandwidth.
Dameng differs from MySQL/PostgreSQL in its JDBC URL and SQL dialect. Three things to watch during initialization.
Create the user first (the default database is DAMENG):
CREATE USER jjhub IDENTIFIED BY "JjHub@2026";
GRANT DBA TO jjhub;
In the Ju Jing config, point the datasource at Dameng and declare the dialect explicitly:
datasource:
driver: dm.jdbc.driver.DmDriver
url: jdbc:dm://10.0.2.11:5236?schema=JJHUB
username: jjhub
password: "JjHub@2026"
dialect: dm
After startup, run the bundled migrate command to create tables automatically. Don't hand-import SQL — Dameng rejects parts of MySQL syntax (backticks, ON DUPLICATE KEY), and manual imports fail unpredictably. Dameng's column-length semantics also differ from MySQL; if a table reports length overflow, check whether you counted characters as bytes. Create the database with a UTF-8 charset, or Chinese alert rules and comments will come out garbled.
ulimit -n of 1024 is nowhere near enough. Raise it: echo "root soft nofile 65535" >> /etc/security/limits.conf.setenforce 0, or add a semanage rule for the agent ports.noatime on the search cluster's data directory. Log writes are small random writes, and noatime removes metadata updates on every read and write.echo never > /sys/kernel/mm/transparent_hugepage/enabled to avoid intermittent memory-reclaim stalls.On a dual-socket Kunpeng 920 (128 cores, 512 GB RAM), we benchmarked ingest and search:
We also watched GC pauses during the run: at 80,000 lines/second the Go processes saw P99 GC pauses around 3ms, negligible for search latency. Dameng drops write QPS by about 15% when archive mode is on; if config and alert write volume is low, turn archive off and rely on manual backups instead.
The conclusion: this Xinchuang combination handles medium-scale production load comfortably. "Domestic = slower" doesn't hold here. The only things to plan for are Dameng licensing and storage growth — tier cold data to object storage early.