본문으로 건너뛰기
버전: dev

Native Hybrid Collector

The native Hybrid Collector is a platform-specific Collector executable with its managed OTel runtime assets. It is separate from the HertzBeat Server archive and from a language agent such as the OTel Java agent. A native package does not imply that every JVM collection protocol or native platform has been validated.

Choose and verify an artifact​

Use a Collector native archive produced from the intended source revision for the exact OS/architecture. Record its digest and declared platform. The source assembly is script/assembly/collector/assembly-native.xml; it includes the executable, launchers, configuration, licenses, platform runtime, manifests and SBOM/checksum files. A filename alone is not provenance.

From the source checkout, the existing package contract can inspect a declared archive:

sh script/ci/verify-hybrid-collector-native-package.sh "$COLLECTOR_ARCHIVE" "$COLLECTOR_PLATFORM"

Set both variables to your actual artifact and its platform name (for example linux-arm64). This checks package contents; it does not run or certify a target deployment. Building native code requires the repository's Java 25/GraalVM and native build prerequisites; running a verified native executable does not require installing a JVM on the target. Do not reuse a binary built for another architecture.

Configure and launch deliberately​

Start from the archive's config/application.yml. Set a unique IDENTITY, the correct MANAGER_HOST and manager cluster port (MANAGER_PORT, normally 1158). The Server public HTTP endpoint and Collector cluster endpoint have different purposes. Agentless targets must be reachable from this collector.

The managed OTel runtime is opt-in (HERTZBEAT_OTEL_RUNTIME_ENABLED defaults to false). Use the matching Collector intake profile and generated instructions for endpoint, token and collector identity. Preserve its data directory for identity, queues and offsets. Language agents/SDKs are provisioned separately; the package does not bundle them.

On Unix, inspect a first launch in the foreground from the extracted archive:

./bin/foreground.sh

This launcher executes the packaged native binary and forwards additional application arguments. Inspect logs, registration and actual current samples. bin/startup.sh is a background helper: with lsof, it only reports listener success for the launched PID on the helper’s fixed port 1159; without lsof, it reports process launch with readiness unverified. Neither a live process nor a TCP listener proves that telemetry reached storage.

Linux service lifecycle and state​

Linux native archives include service/install-systemd.sh and service/README-systemd.md. Follow that included version's instructions for installation/upgrade. The layout separates releases under /opt/hertzbeat-collector, protected configuration under /etc/hertzbeat, persistent state under /var/lib/hertzbeat-collector and logs under /var/log/hertzbeat-collector. Keep credentials in protected configuration/environment files, not command arguments.

The installer provides install, upgrade, uninstall and explicit purge operations. Uninstall preserves state; purge is destructive. Back up configuration and state before an upgrade and validate restored identity and sample continuity. Do not infer successful rollback from a script exit alone.

Acceptance boundary​

The 2.0 alpha local release proof exercised the Server on H2/MySQL/PostgreSQL, Agentless MySQL and an official OTel Java agent. It did not establish a full native Collector OS/protocol matrix, fleet scale or an SLO. Verify the chosen platform, managed-runtime lifecycle, authentication failure, stopped reporting and recovery with actual signals before using it as a verified source. Windows packages use their included batch launchers; Unix/systemd results do not establish Windows parity.

See Server installation for the separate Server setup and collector governance proposal for future fleet work.