Files
NageshbansalandGitHub 272a49f57d fix(clickhouse): templated per-node macros and single-host client DSN (#120)
#### Fixes

- Render templated per-node macros (`shard`, `replica`) in ClickHouse
`config.yaml` so multi-shard/multi-replica clusters get unique Keeper
paths instead of collisions
- Use the first TelemetryStore TCP address (not comma-joined) for
`SIGNOZ_TELEMETRYSTORE_CLICKHOUSE_DSN` and ingester ClickHouse DSNs

 #### Refactors
- `telemetrystore` molding now emits `config-{shard}-{replica}.yaml` per
node (mirrors `telemetrykeeper` per-replica pattern)

Related: https://github.com/SigNoz/platform-pod/issues/1332
2026-05-20 17:48:14 +05:30

646 lines
22 KiB
Plaintext

apiVersion: v1alpha1
kind: Installation
metadata:
name: signoz
spec:
deployment:
flavor: helm
mode: kubernetes
ingester:
spec:
cluster:
replicas: 1
config:
data:
ingester.yaml: |
connectors:
signozmeter:
metrics_flush_interval: 1h
dimensions:
- name: service.name
- name: deployment.environment
- name: host.name
receivers:
otlp:
protocols:
grpc:
endpoint: "0.0.0.0:4317"
http:
endpoint: "0.0.0.0:4318"
processors:
batch:
send_batch_size: 50000
send_batch_max_size: 55000
timeout: 5s
batch/meter:
send_batch_size: 20000
send_batch_max_size: 25000
timeout: 5s
signozspanmetrics/delta:
metrics_exporter: signozclickhousemetrics
metrics_flush_interval: 60s
latency_histogram_buckets:
- 100us
- 1ms
- 2ms
- 6ms
- 10ms
- 50ms
- 100ms
- 250ms
- 500ms
- 1000ms
- 1400ms
- 2000ms
- 5s
- 10s
- 20s
- 40s
- 60s
dimensions_cache_size: 100000
aggregation_temporality: AGGREGATION_TEMPORALITY_DELTA
enable_exp_histogram: true
dimensions:
- name: service.namespace
default: default
- name: deployment.environment
default: default
- name: signoz.collector.id
- name: service.version
exporters:
clickhousetraces:
datasource: tcp://signoz-telemetrystore-clickhouse:9000/signoz_traces
low_cardinal_exception_grouping: ${env:LOW_CARDINAL_EXCEPTION_GROUPING}
use_new_schema: true
timeout: 45s
sending_queue:
enabled: false
signozclickhousemetrics:
dsn: tcp://signoz-telemetrystore-clickhouse:9000/signoz_metrics
timeout: 45s
sending_queue:
enabled: false
clickhouselogsexporter:
dsn: tcp://signoz-telemetrystore-clickhouse:9000/signoz_logs
use_new_schema: true
timeout: 45s
sending_queue:
enabled: false
signozclickhousemeter:
dsn: tcp://signoz-telemetrystore-clickhouse:9000/signoz_meter
timeout: 45s
sending_queue:
enabled: false
metadataexporter:
enabled: true
dsn: tcp://signoz-telemetrystore-clickhouse:9000/signoz_metadata
timeout: 45s
cache:
provider: in_memory
extensions:
signoz_health_check:
endpoint: "0.0.0.0:13133"
pprof:
endpoint: "0.0.0.0:1777"
service:
telemetry:
logs:
encoding: json
extensions:
- signoz_health_check
- pprof
pipelines:
traces:
receivers:
- otlp
processors:
- signozspanmetrics/delta
- batch
exporters:
- clickhousetraces
- signozmeter
- metadataexporter
metrics:
receivers:
- otlp
processors:
- batch
exporters:
- signozclickhousemetrics
- signozmeter
- metadataexporter
logs:
receivers:
- otlp
processors:
- batch
exporters:
- clickhouselogsexporter
- signozmeter
- metadataexporter
metrics/meter:
receivers:
- signozmeter
processors:
- batch/meter
exporters:
- signozclickhousemeter
opamp.yaml: |
server_endpoint: tcp://signoz:4320/v1/opamp
enabled: true
env:
SIGNOZ_OTEL_COLLECTOR_TIMEOUT: 10m
image: signoz/signoz-otel-collector:latest
version: latest
status:
addresses:
otlp: null
config:
data:
ingester.yaml: |
connectors:
signozmeter:
metrics_flush_interval: 1h
dimensions:
- name: service.name
- name: deployment.environment
- name: host.name
receivers:
otlp:
protocols:
grpc:
endpoint: "0.0.0.0:4317"
http:
endpoint: "0.0.0.0:4318"
processors:
batch:
send_batch_size: 50000
send_batch_max_size: 55000
timeout: 5s
batch/meter:
send_batch_size: 20000
send_batch_max_size: 25000
timeout: 5s
signozspanmetrics/delta:
metrics_exporter: signozclickhousemetrics
metrics_flush_interval: 60s
latency_histogram_buckets:
- 100us
- 1ms
- 2ms
- 6ms
- 10ms
- 50ms
- 100ms
- 250ms
- 500ms
- 1000ms
- 1400ms
- 2000ms
- 5s
- 10s
- 20s
- 40s
- 60s
dimensions_cache_size: 100000
aggregation_temporality: AGGREGATION_TEMPORALITY_DELTA
enable_exp_histogram: true
dimensions:
- name: service.namespace
default: default
- name: deployment.environment
default: default
- name: signoz.collector.id
- name: service.version
exporters:
clickhousetraces:
datasource: tcp://signoz-telemetrystore-clickhouse:9000/signoz_traces
low_cardinal_exception_grouping: ${env:LOW_CARDINAL_EXCEPTION_GROUPING}
use_new_schema: true
timeout: 45s
sending_queue:
enabled: false
signozclickhousemetrics:
dsn: tcp://signoz-telemetrystore-clickhouse:9000/signoz_metrics
timeout: 45s
sending_queue:
enabled: false
clickhouselogsexporter:
dsn: tcp://signoz-telemetrystore-clickhouse:9000/signoz_logs
use_new_schema: true
timeout: 45s
sending_queue:
enabled: false
signozclickhousemeter:
dsn: tcp://signoz-telemetrystore-clickhouse:9000/signoz_meter
timeout: 45s
sending_queue:
enabled: false
metadataexporter:
enabled: true
dsn: tcp://signoz-telemetrystore-clickhouse:9000/signoz_metadata
timeout: 45s
cache:
provider: in_memory
extensions:
signoz_health_check:
endpoint: "0.0.0.0:13133"
pprof:
endpoint: "0.0.0.0:1777"
service:
telemetry:
logs:
encoding: json
extensions:
- signoz_health_check
- pprof
pipelines:
traces:
receivers:
- otlp
processors:
- signozspanmetrics/delta
- batch
exporters:
- clickhousetraces
- signozmeter
- metadataexporter
metrics:
receivers:
- otlp
processors:
- batch
exporters:
- signozclickhousemetrics
- signozmeter
- metadataexporter
logs:
receivers:
- otlp
processors:
- batch
exporters:
- clickhouselogsexporter
- signozmeter
- metadataexporter
metrics/meter:
receivers:
- signozmeter
processors:
- batch/meter
exporters:
- signozclickhousemeter
opamp.yaml: |
server_endpoint: tcp://signoz:4320/v1/opamp
env:
SIGNOZ_OTEL_COLLECTOR_TIMEOUT: 10m
metastore:
kind: postgres
spec:
cluster:
replicas: 1
config: {}
enabled: true
env:
POSTGRES_DB: signoz
POSTGRES_PASSWORD: signoz
POSTGRES_USER: signoz
image: postgres:16
version: "16"
status:
addresses:
dsn:
- postgres://signoz-metastore-postgres:5432
config: {}
env:
POSTGRES_DB: signoz
POSTGRES_PASSWORD: signoz
POSTGRES_USER: signoz
signoz:
spec:
cluster:
replicas: 1
config: {}
enabled: true
env:
SIGNOZ_SQLSTORE_POSTGRES_DSN: postgres://signoz:signoz@signoz-metastore-postgres:5432/signoz?sslmode=disable
SIGNOZ_SQLSTORE_PROVIDER: postgres
SIGNOZ_TELEMETRYSTORE_CLICKHOUSE_DSN: tcp://signoz-telemetrystore-clickhouse:9000
SIGNOZ_TELEMETRYSTORE_PROVIDER: clickhouse
image: signoz/signoz:latest
version: latest
status:
addresses:
apiserver: null
opamp:
- tcp://signoz:4320
config: {}
env:
SIGNOZ_SQLSTORE_POSTGRES_DSN: postgres://signoz:signoz@signoz-metastore-postgres:5432/signoz?sslmode=disable
SIGNOZ_SQLSTORE_PROVIDER: postgres
SIGNOZ_TELEMETRYSTORE_CLICKHOUSE_DSN: tcp://signoz-telemetrystore-clickhouse:9000
SIGNOZ_TELEMETRYSTORE_PROVIDER: clickhouse
telemetrykeeper:
kind: clickhousekeeper
spec:
cluster:
replicas: 1
config:
data:
keeper-0.yaml: |
listen_host: 0.0.0.0
logger:
level: information
console: true
keeper_server:
four_letter_word_white_list: "*"
coordination_settings:
operation_timeout_ms: 10000
raft_logs_level: warning
session_timeout_ms: 30000
force_sync: false
snapshot_distance: 100000
snapshots_to_keep: 3
log_storage_path: /var/lib/clickhouse/coordination/log
raft_configuration:
server:
- hostname: signoz-telemetrykeeper-zookeeper-0
port: 9234
id: 0
server_id: 0
snapshot_storage_path: /var/lib/clickhouse/coordination/snapshots
tcp_port: 9181
enabled: true
image: clickhouse/clickhouse-keeper:25.5.6
version: 25.5.6
status:
addresses:
client:
- tcp://signoz-telemetrykeeper-zookeeper-0:9181
raft:
- tcp://signoz-telemetrykeeper-zookeeper-0:9234
config:
data:
keeper-0.yaml: |
listen_host: 0.0.0.0
logger:
level: information
console: true
keeper_server:
four_letter_word_white_list: "*"
coordination_settings:
operation_timeout_ms: 10000
raft_logs_level: warning
session_timeout_ms: 30000
force_sync: false
snapshot_distance: 100000
snapshots_to_keep: 3
log_storage_path: /var/lib/clickhouse/coordination/log
raft_configuration:
server:
- hostname: signoz-telemetrykeeper-zookeeper-0
port: 9234
id: 0
server_id: 0
snapshot_storage_path: /var/lib/clickhouse/coordination/snapshots
tcp_port: 9181
telemetrystore:
kind: clickhouse
spec:
cluster:
replicas: 0
shards: 1
config:
data:
config-0-0.yaml: |
path: /var/lib/clickhouse/
tmp_path: /var/lib/clickhouse/tmp/
user_files_path: /var/lib/clickhouse/user_files/
format_schema_path: /var/lib/clickhouse/format_schemas/
dictionaries_config: '*_dictionary.xml'
display_name: cluster
distributed_ddl:
path: /clickhouse/task_queue/ddl
http_port: 8123
interserver_http_port: 9009
listen_host: 0.0.0.0
logger:
console: 1
count: 10
formatting:
type: console
level: information
size: 1000M
macros:
replica: "00"
shard: "00"
profiles:
default:
allow_simdjson: 0
load_balancing: random
log_queries: 1
quotas:
default:
interval:
duration: 3600
errors: 0
execution_time: 0
queries: 0
read_rows: 0
result_rows: 0
user_directories:
users_xml:
path: users.xml
remote_servers:
cluster:
shard:
- replica:
- host: signoz-telemetrystore-clickhouse
port: 9000
zookeeper:
node:
- host: signoz-telemetrykeeper-zookeeper-0
port: 9181
query_log:
flush_interval_milliseconds: 30000
partition_by: toYYYYMM(event_date)
ttl: "event_date + INTERVAL 1 DAY DELETE"
query_thread_log:
ttl: "event_date + INTERVAL 1 DAY DELETE"
query_metric_log:
ttl: "event_date + INTERVAL 1 DAY DELETE"
query_views_log:
ttl: "event_date + INTERVAL 1 DAY DELETE"
part_log:
ttl: "event_date + INTERVAL 1 DAY DELETE"
metric_log:
flush_interval_milliseconds: 30000
ttl: "event_date + INTERVAL 1 DAY DELETE"
asynchronous_metric_log:
ttl: "event_date + INTERVAL 1 DAY DELETE"
trace_log:
flush_interval_milliseconds: 30000
ttl: "event_date + INTERVAL 1 DAY DELETE"
error_log:
ttl: "event_date + INTERVAL 1 DAY DELETE"
latency_log:
ttl: "event_date + INTERVAL 1 DAY DELETE"
processors_profile_log:
flush_interval_milliseconds: 30000
ttl: "event_date + INTERVAL 1 DAY DELETE"
session_log:
ttl: "event_date + INTERVAL 1 DAY DELETE"
text_log:
flush_interval_milliseconds: 30000
ttl: "event_date + INTERVAL 1 DAY DELETE"
zookeeper_log:
ttl: "event_date + INTERVAL 1 DAY DELETE"
tcp_port: 9000
user_defined_executable_functions_config: '*function.yaml'
user_scripts_path: /var/lib/clickhouse/user_scripts/
users:
default:
access_management: 1
named_collection_control: 1
networks:
ip: ::/0
password: ""
profile: default
quota: default
show_named_collection: 1
show_named_collection_secrets: 1
functions.yaml: |
functions:
argument:
- name: buckets
type: Array(Float64)
- name: counts
type: Array(Float64)
- name: quantile
type: Array(Float64)
command: ./histogramQuantile
format: CSV
name: histogramQuantile
return_type: Float64
type: executable
enabled: true
image: clickhouse/clickhouse-server:25.5.6
version: 25.5.6
status:
addresses:
tcp:
- tcp://signoz-telemetrystore-clickhouse:9000
config:
data:
config-0-0.yaml: |
path: /var/lib/clickhouse/
tmp_path: /var/lib/clickhouse/tmp/
user_files_path: /var/lib/clickhouse/user_files/
format_schema_path: /var/lib/clickhouse/format_schemas/
dictionaries_config: '*_dictionary.xml'
display_name: cluster
distributed_ddl:
path: /clickhouse/task_queue/ddl
http_port: 8123
interserver_http_port: 9009
listen_host: 0.0.0.0
logger:
console: 1
count: 10
formatting:
type: console
level: information
size: 1000M
macros:
replica: "00"
shard: "00"
profiles:
default:
allow_simdjson: 0
load_balancing: random
log_queries: 1
quotas:
default:
interval:
duration: 3600
errors: 0
execution_time: 0
queries: 0
read_rows: 0
result_rows: 0
user_directories:
users_xml:
path: users.xml
remote_servers:
cluster:
shard:
- replica:
- host: signoz-telemetrystore-clickhouse
port: 9000
zookeeper:
node:
- host: signoz-telemetrykeeper-zookeeper-0
port: 9181
query_log:
flush_interval_milliseconds: 30000
partition_by: toYYYYMM(event_date)
ttl: "event_date + INTERVAL 1 DAY DELETE"
query_thread_log:
ttl: "event_date + INTERVAL 1 DAY DELETE"
query_metric_log:
ttl: "event_date + INTERVAL 1 DAY DELETE"
query_views_log:
ttl: "event_date + INTERVAL 1 DAY DELETE"
part_log:
ttl: "event_date + INTERVAL 1 DAY DELETE"
metric_log:
flush_interval_milliseconds: 30000
ttl: "event_date + INTERVAL 1 DAY DELETE"
asynchronous_metric_log:
ttl: "event_date + INTERVAL 1 DAY DELETE"
trace_log:
flush_interval_milliseconds: 30000
ttl: "event_date + INTERVAL 1 DAY DELETE"
error_log:
ttl: "event_date + INTERVAL 1 DAY DELETE"
latency_log:
ttl: "event_date + INTERVAL 1 DAY DELETE"
processors_profile_log:
flush_interval_milliseconds: 30000
ttl: "event_date + INTERVAL 1 DAY DELETE"
session_log:
ttl: "event_date + INTERVAL 1 DAY DELETE"
text_log:
flush_interval_milliseconds: 30000
ttl: "event_date + INTERVAL 1 DAY DELETE"
zookeeper_log:
ttl: "event_date + INTERVAL 1 DAY DELETE"
tcp_port: 9000
user_defined_executable_functions_config: '*function.yaml'
user_scripts_path: /var/lib/clickhouse/user_scripts/
users:
default:
access_management: 1
named_collection_control: 1
networks:
ip: ::/0
password: ""
profile: default
quota: default
show_named_collection: 1
show_named_collection_secrets: 1
functions.yaml: |
functions:
argument:
- name: buckets
type: Array(Float64)
- name: counts
type: Array(Float64)
- name: quantile
type: Array(Float64)
command: ./histogramQuantile
format: CSV
name: histogramQuantile
return_type: Float64
type: executable