A step-by-step walkthrough of privately deploying Observe on a sovereign stack of Kylin V10, Kunpeng ARM servers and the Dameng database, covering dependency adaptation, schema setup, startup, self-checks and acceptance, with configuration, selection guidance and troubleshooting notes.
Government and enterprise customers impose two hard requirements on an observability platform: data must stay on-premise, and the whole stack — ARM servers, Linux distribution and database — must be domestically sourced. An observability platform carries sensitive operational data such as logs, traces and alerts; if that data leaks out or the platform depends on foreign components, it becomes a hard failure in both the cybersecurity and domestic-computing assessments.
Observe is built on a lightweight Go architecture with few dependencies and ships as a single binary, which makes it a natural fit. This article walks through one real combination: Kylin V10 (ARM), Kunpeng 920 and the Dameng database DM8.
Dameng speaks the MySQL protocol, and Observe uses standard SQL, so you only need a dedicated account and schema — no application code changes. This matters a great deal in migration: often the resistance to going domestic is not the platform itself but the business systems that would have to change code to fit a new database.
In a sovereign environment the database choice comes down to three things: assessment requirements, existing operational capability and data volume.
For Observe all three are standard SQL, so switching only changes the connection string. If unsure, start with Dameng — it is the safest default in domestic-computing projects.
Create a dedicated tablespace and account in Dameng, and enable compatibility mode so string collation and case behavior match MySQL — otherwise log search results can come back in the wrong order:
CREATE TABLESPACE observe_ts DATAFILE 'observe.dbf' SIZE 512;
CREATE USER observe IDENTIFIED BY "Observe@2024" DEFAULT TABLESPACE observe_ts;
GRANT DBA TO observe;
At startup, point Observe at the Dameng instance with its connection parameters:
export DB_DRIVER=dm
export DB_HOST=10.0.0.12
export DB_PORT=5236
export DB_NAME=OBSERVE
export DB_USER=observe
export DB_PASSWORD='Observe@2024'
Download the aarch64 binary and run it under systemd, so it starts on boot and restarts automatically after a crash:
chmod +x observe
./observe --config ./env
After startup, run three self-checks: can log search return data, can tracing assemble a call chain from a trace id, and can alert rules fire. All data stays on the internal network with no outbound traffic.
ARM servers usually have weaker single-core performance than same-generation x86, so tuning focuses on concurrency and memory:
DB_DRIVER=dm and that the driver is in the runtime directory, or switch to Dameng's MySQL-protocol port (5236 by default)CASE_SENSITIVE setting and collation of the Dameng instance against what the platform expectsCheck each item against the compliance requirements: least-privilege permissions (the platform runs only necessary processes and the database account holds minimal grants), audit logging (login, query and export are all recorded) and multi-tenant isolation (departments cannot see each other's data). Only when all three are in place is the deployment truly done. Put the acceptance items into a checklist and tick them off before go-live, so nothing is discovered missing at the final review.