telemetry-java is a minimal Java library for collecting feature-usage telemetry and sending it to a server over HTTP.
The project is intended for application developers who want a small, auditable telemetry client with zero runtime dependencies. It focuses on feature usage only and deliberately excludes broader SDK behavior such as log collection, stack traces, high-frequency event streams, numeric measurements, or persistent local storage.
This repository currently contains the MVP implementation and the corresponding recorded specs.
The project uses speq skills and recorded specs to drive planning, implementation, verification, and spec recording.
- Non-blocking telemetry recording through an in-memory queue and background sender
- JSON-over-HTTP
POSTdelivery - Protocol-compatible message format with
category, protocolversion,productVersion,timestamp, andfeatures - Exponential backoff with retry timeout
- Clean shutdown via
AutoCloseable - Environment-variable control for disabling telemetry and overriding the endpoint
- Lifecycle log messages for enabled, disabled, sent-count, and stopped telemetry states
- Zero runtime dependencies
import com.exasol.telemetry.TelemetryClient;
import com.exasol.telemetry.TelemetryConfig;
TelemetryConfig config = TelemetryConfig.builder("my-app", "1.2.3").build();
try (TelemetryClient client = TelemetryClient.create(config)) {
client.track("startup");
}EXASOL_TELEMETRY_DISABLEDisables telemetry collection and delivery when set to any non-empty value.EXASOL_TELEMETRY_ENDPOINTOverrides the endpoint configured in code.
The default endpoint is https://metrics.exasol.com.