For the complete documentation index, see llms.txt. Markdown versions are available by appending .md to documentation URLs.

JSON Logs Migration Guide

Last Updated: November 03, 20262 min read

📌 Overview

SigNoz is moving log bodies from a string column (body) to native JSON storage (body_v2). Every field in the body becomes queryable by path, so log queries are faster and you can filter, group by and aggregate on body fields without a pipeline.

Track this migration in SigNoz/signoz#13376 for more details.

🔍 Why We Are Migrating

String bodies are parsed at query time on every matching row. With ClickHouse's native JSON type, log queries ran about 30% faster and scanned about 99% less data in our benchmarks (deep dive).

📦 Dual Ingestion

During the transition, the collector writes each log body to both columns. Existing dashboards, alerts and saved views keep reading body, so you don't need to do anything yet.

⚙️ Resource Impact

Plan for this extra capacity before upgrading.

ComponentResourceRecommendation
OTel CollectorCPUKeep 25% headroom
OTel CollectorMemoryKeep 25% headroom
ClickHouseCPUKeep 15% headroom
ClickHouseDiskGrow the logs volume by the size of body (query below)

To estimate the extra disk, run this on ClickHouse. The logs table will grow by about body_pct:

SELECT
    formatReadableSize(sumIf(column_data_compressed_bytes, column = 'body')) AS body_size,
    formatReadableSize(sum(column_data_compressed_bytes)) AS table_size,
    round(100 * sumIf(column_data_compressed_bytes, column = 'body') / sum(column_data_compressed_bytes), 1) AS body_pct
FROM system.parts_columns
WHERE database = 'signoz_logs' AND table = 'logs_v2' AND active;

The increase builds up gradually and reaches its full size one retention period after the upgrade.

Is this page helpful