Quan Trắc SigNoz OpenTelemetry: Định Cỡ ClickHouseCalc MergeTree Cho Logs & Traces
Trong mô hình định lượng ClickHouseCalc, SigNoz lưu trữ OpenTelemetry logs, traces và metrics trên bảng MergeTree dùng Map(LowCardinality(String), String) kết hợp nén ZSTD(3) đạt tỷ lệ thu gọn ~10.5 lần cho gói span 1.480 byte.
Bảng Định Cỡ Đĩa Nén & RAM ClickHouseCalc Cho signoz-otel-observability
| Quy Mô Luồng Ghi | Dữ Liệu Thô | Đĩa Nén MergeTree | Cấu Hình RAM & vCPU | Đối Chiếu Chi Phí (2026-11-12) |
|---|---|---|---|---|
| 50M Spans/Day (30d · 74 GB/d) | 2.22 TB Raw | 260 GB NVMe (ZSTD-3 + 22% Buffer) | 16 GB RAM / 4 vCPU | ~$790/tháng Datadog vs $10.49/tháng Hostinger KVM 4 |
| 250M Spans/Day (90d · 370 GB/d) | 33.3 TB Raw | 4.05 TB NVMe/RAID | 64 GB RAM / 16 vCPU | ~$5,480/tháng Datadog vs $79.00/tháng InterServer Ryzen |
| 1B Spans/Day (90d · 1.48 TB/d) | 133.2 TB Raw | 16.1 TB RAID Array | 128 GB RAM / 24 vCPU | ~$21,600/tháng Datadog vs $119–$149/tháng Dedicated Node |
Bản Vẽ SQL ClickHouseCalc MergeTree OTel Logs & Chỉ Mục Nhảy Bloom
CREATE TABLE signoz_logs.logs_v2
(
timestamp UInt64 CODEC(DoubleDelta, LZ4),
observed_timestamp UInt64 CODEC(DoubleDelta, LZ4),
trace_id FixedString(32) CODEC(ZSTD(1)),
span_id String CODEC(ZSTD(1)),
severity_text LowCardinality(String) CODEC(ZSTD(1)),
body String CODEC(ZSTD(3)),
resources_string Map(LowCardinality(String), String) CODEC(ZSTD(3)),
attributes_string Map(LowCardinality(String), String) CODEC(ZSTD(3)),
INDEX body_idx lower(body) TYPE ngrambf_v1(4, 60000, 5, 0) GRANULARITY 1,
INDEX trace_idx trace_id TYPE bloom_filter(0.001) GRANULARITY 1
)
ENGINE = MergeTree
PARTITION BY toDate(timestamp / 1000000000)
ORDER BY (severity_text, toUnixTimestamp(toStartOfMinute(fromUnixTimestamp64Nano(timestamp))))
TTL toDateTime(timestamp / 1000000000) + INTERVAL 90 DAY DELETE
SETTINGS index_granularity = 8192;
Danh Mục Tinh Chỉnh MergeTree ClickHouseCalc Cho signoz-otel-observability
- Gom lô tại OTel Collector (`batch: send_batch_size: 10000, timeout: 5s`) để ClickHouse ghi ít part lớn thay vì phát sinh ngoại lệ `Too many parts (300)`.
- Giới hạn `<max_server_memory_usage_to_ram_ratio>0.75</max_server_memory_usage_to_ram_ratio>` trong `config.d/memory.xml` để chừa 25% RAM an toàn cho hệ điều hành và OTel Collector.
- Tách chu kỳ `TTL` (`15 DAY` cho debug span thông thường, `90 DAY` cho log lỗi HTTP 5xx) ngay trong định nghĩa bảng MergeTree.
Câu Hỏi Kỹ Thuật ClickHouseCalc Về signoz-otel-observability
- ClickHouseCalc định cỡ RAM chỉ mục primary.idx cho SigNoz khác cụm Elasticsearch ELK ở ngưỡng 100 triệu log/ngày như thế nào?
-
Elasticsearch phải nuôi chỉ mục đảo Lucene trên JVM Heap lớn, trong khi công thức MergeTree của ClickHouseCalc chỉ nạp 1 điểm đánh dấu thưa cho mỗi 8.192 dòng vào bộ nhớ.
- Tại sao ClickHouseCalc khuyến nghị ZSTD(3) thay vì LZ4 cho cột nội dung log SigNoz?
-
Theo mô hình hệ số nén ClickHouseCalc, `ZSTD(3)` trên cột `body` và `attributes_string` nén sâu hơn LZ4 khoảng 42% nhờ loại bỏ chuỗi stack trace và nhãn Kubernetes lặp lại.