hyperdx/smoke-tests/otel-collector/data/json-exporter/basic-insert/input.json

84 lines
2 KiB
JSON
Raw Normal View History

[HDX-3994] Deprecate clickhouse.json feature gate in favor of per-exporter json config (#2119) ## Summary Deprecate the upstream-deprecated `--feature-gates=clickhouse.json` CLI flag in favor of the per-exporter `json: true` config option, as recommended by the OpenTelemetry ClickHouse exporter v0.149.0. This introduces a new env var `HYPERDX_OTEL_EXPORTER_CLICKHOUSE_JSON_ENABLE` that controls JSON mode at the exporter config level. The old `OTEL_AGENT_FEATURE_GATE_ARG` env var remains backward-compatible — when it contains `clickhouse.json`, the entrypoint strips that gate, maps it to the new env var, and prints a deprecation warning. Other feature gates are preserved and passed through to the collector. **Key changes:** - **`docker/otel-collector/entrypoint.sh`** — Detects `clickhouse.json` in `OTEL_AGENT_FEATURE_GATE_ARG`, strips it, sets `HYPERDX_OTEL_EXPORTER_CLICKHOUSE_JSON_ENABLE=true`, and prints a deprecation warning. Remaining feature gates are still passed through to the collector in both standalone and supervisor modes. - **`docker/otel-collector/config.standalone.yaml`** — Added `json: ${env:HYPERDX_OTEL_EXPORTER_CLICKHOUSE_JSON_ENABLE:-false}` to both ClickHouse exporter configs - **`packages/api/src/opamp/controllers/opampController.ts`** — Added `json` field to the `CollectorConfig` type and both ClickHouse exporter configs for OpAMP-managed collectors - **`docker/otel-collector/supervisor_docker.yaml.tmpl`** — Feature gate pass-through preserved for non-`clickhouse.json` gates (entrypoint strips the deprecated gate before supervisor template renders) - **`smoke-tests/otel-collector/`** — Added a JSON-enabled otel-collector service and smoke tests verifying: - `ResourceAttributes` and `LogAttributes` columns in `otel_logs` are `JSON` type (not `Map`) - Log data with various attribute types (string, int, boolean) is inserted and queryable via JSON path access ### How to test locally or on Vercel 1. Run `yarn dev` to start the dev stack 2. Verify the `otel-collector-json` container starts without errors (the `clickhouse.json` feature gate is stripped, not passed to the collector) 3. Check container logs for the deprecation warning when `OTEL_AGENT_FEATURE_GATE_ARG` contains `clickhouse.json` 4. Verify the non-JSON `otel-collector` service continues to work normally (json defaults to false) 5. Run smoke tests: `cd smoke-tests/otel-collector && bats json-exporter.bats` ### References - Linear Issue: https://linear.app/hyperdx/issue/HDX-3994 - Upstream deprecation: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/exporter/clickhouseexporter#experimental-json-support
2026-04-15 15:49:45 +00:00
{
"resourceLogs": [
{
"resource": {
"attributes": [
{
"key": "suite-id",
"value": {
"stringValue": "json-exporter"
}
},
{
"key": "test-id",
"value": {
"stringValue": "basic-insert"
}
},
{
"key": "service.name",
"value": {
"stringValue": "test-service"
}
}
]
},
"scopeLogs": [
{
"scope": {},
"logRecords": [
{
"timeUnixNano": "1901999590000000000",
"body": {
"stringValue": "JSON exporter log with string attributes"
},
"attributes": [
{
"key": "user.id",
"value": {
"stringValue": "user-123"
}
},
{
"key": "request.method",
"value": {
"stringValue": "GET"
}
}
]
},
{
"timeUnixNano": "1901999590000000001",
"body": {
"stringValue": "JSON exporter log with integer attribute"
},
"attributes": [
{
"key": "http.status_code",
"value": {
"intValue": "200"
}
}
]
},
{
"timeUnixNano": "1901999590000000002",
"body": {
"stringValue": "JSON exporter log with boolean attribute"
},
"attributes": [
{
"key": "error",
"value": {
"boolValue": false
}
}
]
}
]
}
]
}
]
}