SigNoz v0.146.0 配置参数详解

SigNoz v0.146.0 配置参数详解:三层配置体系(Foundry casting/otel-collector ingester.yaml/SIGNOZ_* 环境变量)逐节拆解,覆盖 OTLP 接收端点、batch 与 spanmetrics 处理器、四类 ClickHouse exporter、server 环境变量映射规则与默认值、ClickHouse/Keeper 连接参数,并实测 debug exporter 改配生效全流程(2026-10-20)。

SigNozSigNoz监控2026/10/20

SigNoz v0.146.0 配置参数详解

目标:逐节拆解 SigNoz v0.146.0 渲染产物的三类配置——otel-collector 的 ingester.yaml(receivers/processors/exporters/pipelines)、SigNoz Server 的 SIGNOZ_* 环境变量、ClickHouse 与 Keeper 的连接参数,并做一次"改配置→重启→验证生效"的实配实测;全部参数值取自本专栏 B2 实测部署的渲染产物(2026-10-20),关键改动均有运行时回显证据。

一、配置体系总览

v0.146.0 的配置分三层,修改入口各不相同:

层文件/载体渲染来源生效方式
部署编排compose.yamlFoundry casting.yaml + spec.patchesdocker compose up -d 重建
数据接入ingester/ingester.yaml(挂载为 collector 容器 /etc/otel-collector-config.yaml)Foundry 渲染产物docker compose restart ingester
服务端/存储SIGNOZ_* 环境变量(compose environment:)、telemetrystore/clickhouse/config-0-0.yaml、telemetrykeeper/clickhousekeeper/keeper-0.yamlFoundry 渲染产物改后重建对应服务

注意:forge 每次执行会覆盖 pours/ 下的渲染产物,定制要么写进 casting.yaml 的 spec.patches(推荐),要么改完产物后不再重跑 forge。

二、otel-collector 配置:ingester.yaml 逐节详解

这是数据接入的核心文件,v0.146.0 默认渲染值全文如下(实测提取),后续小节逐节解释:

2.1 receivers:OTLP 接入端点

receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317
      http:
        endpoint: 0.0.0.0:4318
参数默认值说明
otlp.protocols.grpc.endpoint0.0.0.0:4317OTLP gRPC 接入;B2 实测映射宿主 8147
otlp.protocols.http.endpoint0.0.0.0:4318OTLP HTTP(JSON/protobuf);实测映射宿主 8148,`POST /v1/traces

2.2 processors:批处理与信号加工

processors:
  batch:
    send_batch_max_size: 55000
    send_batch_size: 50000
    timeout: 5s
  batch/meter:
    send_batch_max_size: 25000
    send_batch_size: 20000
    timeout: 5s
  signozspanmetrics/delta:
    aggregation_temporality: AGGREGATION_TEMPORALITY_DELTA
    dimensions:
    - default: default
      name: service.namespace
    - default: default
      name: deployment.environment
    - name: signoz.collector.id
    - name: service.version
    dimensions_cache_size: 100000
    enable_exp_histogram: true
    latency_histogram_buckets: [100us, 1ms, 2ms, 6ms, 10ms, 50ms, 100ms, 250ms,
      500ms, 1000ms, 1400ms, 2000ms, 5s, 10s, 20s, 40s, 60s]
    metrics_exporter: signozclickhousemetrics
    metrics_flush_interval: 60s
  signozspanmapper:
    groups: []
  signozllmpricing:
    attrs: {...}          # gen_ai.usage.* 到成本属性的映射(LLM 观测计费)

要点(对应 B2/C1 实测行为):

  • batch.timeout: 5s 解释了"OTLP 发送后约 5 秒内数据才可见"的窗口;调小可降低查询延迟,但会放大 ClickHouse 写入次数。
  • signozspanmetrics/delta 把 span 自动转成 RED 指标(延迟直方图 17 桶到 60s),这是 SigNoz"发 trace 就有服务监控图"的原因;metrics_flush_interval: 60s 表示 span 指标最长 60s 聚合一次。
  • signozllmpricing 是 v0.146 内建的 LLM 调用成本核算处理器(gen_ai.usage.* 语义约定)。

2.3 connectors:用量计量

connectors:
  signozmeter:
    dimensions: [service.name, deployment.environment, host.name]
    metrics_flush_interval: 1h

按资源维度统计三类信号的数据量,1 小时输出一次,供用量账单/配额使用。

2.4 exporters:ClickHouse 写入

exporters:
  clickhouselogsexporter:
    dsn: tcp://signoz-telemetrystore-clickhouse-0-0:9000/signoz_logs
    sending_queue: {enabled: false}
    timeout: 45s
    use_new_schema: true
  clickhousetraces:
    datasource: tcp://signoz-telemetrystore-clickhouse-0-0:9000/signoz_traces
    low_cardinal_exception_grouping: ${env:LOW_CARDINAL_EXCEPTION_GROUPING}
    ...
  signozclickhousemetrics:
    dsn: tcp://signoz-telemetrystore-clickhouse-0-0:9000/signoz_metrics
  signozclickhousemeter:
    dsn: tcp://signoz-telemetrystore-clickhouse-0-0:9000/signoz_meter
  metadataexporter:
    dsn: tcp://signoz-telemetrystore-clickhouse-0-0:9000/signoz_metadata
    enabled: true
参数说明
dsn/datasourceClickHouse 原生端口 9000 + 目标库;四类信号分库写入(logs/traces/metrics/meter),元数据单独 signoz_metadata
use_new_schema: true启用 v3/v4 新表族(distributed_signoz_index_v3、distributed_logs_v2、distributed_samples_v4),与迁移工具版本强相关,勿随意关闭
sending_queue.enabled: false单机栈直接同步写;ClickHouse 抖动时可在发送侧加重试队列
low_cardinal_exception_grouping异常分组按低基数字段聚合,值经环境变量注入

2.5 extensions 与 service.pipelines

extensions:
  pprof: {endpoint: 0.0.0.0:1777}          # 性能剖析端口(容器内)
  signoz_health_check: {endpoint: 0.0.0.0:13133}  # collector 健康检查

service:
  extensions: [signoz_health_check, pprof]
  pipelines:
    logs:    {receivers: [otlp], processors: [batch], exporters: [clickhouselogsexporter, signozmeter, metadataexporter]}
    metrics: {receivers: [otlp], processors: [batch], exporters: [signozclickhousemetrics, signozmeter, metadataexporter]}
    metrics/meter: {receivers: [signozmeter], processors: [batch/meter], exporters: [signozclickhousemeter]}
    traces:  {receivers: [otlp], processors: [signozspanmetrics/delta, signozspanmapper, signozllmpricing, batch], exporters: [clickhousetraces, signozmeter, metadataexporter]}
  telemetry:
    logs: {encoding: json}

traces 管线的处理器顺序即数据加工顺序:先转 span 指标、再补全 span 映射、再算 LLM 成本,最后批处理落库。

2.6 collector 容器的环境变量

environment:
- SIGNOZ_OTEL_COLLECTOR_CLICKHOUSE_DSN=tcp://signoz-telemetrystore-clickhouse-0-0:9000
- SIGNOZ_OTEL_COLLECTOR_TIMEOUT=10m
command: /signoz-otel-collector migrate sync check && /signoz-otel-collector --config=/etc/otel-collector-config.yaml --manager-config=/etc/opamp-config.yaml --copy-path=/var/tmp/collector-config.yaml

opamp.yaml 只有一行 server_endpoint: ws://signoz-signoz-0:4320/v1/opamp——collector 通过 OpAMP 协议向 SigNoz Server 上报自身状态并接收配置下发,--copy-path 是实际生效配置的落盘路径。

三、SigNoz Server:SIGNOZ_* 环境变量

3.1 环境变量到配置键的映射规则

Server 端配置完全由 SIGNOZ_ 前缀环境变量驱动:单下划线是键名的一部分,双下划线 __ 表示嵌套一层(来源:pkg/config/envprovider/provider.go,v0.146.0 源码)。例如:

SIGNOZ_SQLSTORE_POSTGRES_DSN        → sqlstore.postgres.dsn
SIGNOZ_TELEMETRYSTORE_CLICKHOUSE_DSN → telemetrystore.clickhouse.dsn
SIGNOZ_TELEMETRYSTORE_PROVIDER      → telemetrystore.provider
SIGNOZ_SQLSTORE_PROVIDER            → sqlstore.provider

3.2 compose 中实测注入的四个变量

signoz-signoz-0:
  environment:
  - SIGNOZ_SQLSTORE_POSTGRES_DSN=postgres://signoz:signoz@signoz-metastore-postgres-0:5432/signoz?sslmode=disable
  - SIGNOZ_SQLSTORE_PROVIDER=postgres
  - SIGNOZ_TELEMETRYSTORE_CLICKHOUSE_DSN=tcp://signoz-telemetrystore-clickhouse-0-0:9000
  - SIGNOZ_TELEMETRYSTORE_PROVIDER=clickhouse

3.3 内置默认值(源码核对)

不设置时 Server 取用的关键默认(pkg/apiserver/config.go,v0.146.0):

配置键默认值说明
apiserver.address0.0.0.0:8080Web+API 监听地址(B2 映射宿主 8143)
apiserver.read_timeout60sHTTP 读超时
apiserver.timeout.default60s请求默认上下文超时
apiserver.timeout.max600s请求最大超时
apiserver.timeout.excluded_routes/api/v1/logs/tail、/api/v3/logs/livetail、/api/v1/export_raw_data长连接路由不受超时约束

3.4 ClickHouse 连接参数速查

SIGNOZ_TELEMETRYSTORE_CLICKHOUSE_DSN 为 Go sqlclient DSN,格式 tcp://<host>:<port>[/<database>]:

  • Server 直连原生 TCP 9000(不是 HTTP 8123);
  • 库名由各子系统内部选择(signoz_logs/signoz_metrics/signoz_traces/signoz_metadata),DSN 不写库即默认库;
  • SIGNOZ_OTEL_COLLECTOR_CLICKHOUSE_DSN(collector 与 migrator 用)同格式,实测值 tcp://signoz-telemetrystore-clickhouse-0-0:9000。

四、ClickHouse 与 Keeper 配置要点

4.1 config-0-0.yaml(渲染产物)

参数默认值说明
http_port / tcp_port8123 / 9000HTTP 与原生端口(B2 映射宿主 8146)
interserver_http_port9009副本间 HTTP
listen_host0.0.0.0监听全部网卡
remote_servers.cluster单分片单副本(host=本容器,port 9000)集群名 cluster,宏 shard: "00"、replica: "00"
profiles.default.log_queries1记录 query_log
query_log/trace_log/text_log 等 TTLevent_date + 1 DAY DELETE各类系统日志表 1 天自动清理
user_scripts_path/var/lib/clickhouse/user_scripts/histogram-quantile UDF 所在(user-scripts 初始化容器注入)

4.2 keeper-0.yaml

keeper_server:
  tcp_port: 9181                      # 四字命令端口(健康检查用 clickhouse-keeper-client -p 9181 -q ls)
  raft_configuration: 单节点 server id=0, port=9234
  coordination_settings:
    operation_timeout_ms: 10000
    session_timeout_ms: 30000
    snapshot_distance: 100000
    snapshots_to_keep: 3

ClickHouse 通过 distributed_ddl.path: /clickhouse/task_queue/ddl 与 Keeper 协作(建分布式表时队列化 DDL)。

五、实配实测:向 logs 管线加 debug exporter

5.1 改配置

在渲染产物 pours/deployment/ingester/ingester.yaml 中新增 exporter 并挂到 logs 管线:

exporters:
  debug:
    verbosity: detailed
service:
  pipelines:
    logs:
      exporters:
      - clickhouselogsexporter
      - debug            # 新增
      - signozmeter
      - metadataexporter

5.2 重启并验证

cd /opt/signoz-stack/pours/deployment
docker compose restart ingester
# Container signoz-01460-stack-ingester-1  Started
docker logs signoz-01460-stack-ingester-1 --since 2m | grep 'Everything is ready'
# {"level":"info",...,"msg":"Everything is ready. Begin running and processing data.",...}

重新向 :8148/v1/logs 发送上一节的日志样例后,collector 自身日志立即出现 debug exporter 的完整导出(实测节选):

ResourceLog #0
Resource attributes:
     -> service.name: Str(frontend-api)
LogRecord #0
SeverityText: INFO
Body: Str(order checkout completed amount=258.00)
Attributes:
     -> order.id: Str(SO-20261020-0001)
Trace ID: 5b8efff798038103d269b633813fc60c
otelcol.component.id: "debug"

结论:ingester.yaml 修改无需改 compose,restart ingester 即生效;这是排障与数据管道验证最快的手段(验证完移除 debug 段再 restart 还原)。

六、配置校验与常见问题

  1. 配置写错怎么发现:collector 启动即做 schema 校验,错误直接 fatal。实测把一个非法 endpoint 配置喂给二进制: failed to start collector service: failed to start : invalid configuration: no exporter configuration specified in config 容器会反复重启,docker compose logs ingester 即可定位。
  2. 改了 forge 产物又被覆盖:所有定制收敛到 casting.yaml 的 spec.patches(编排层)或独立维护配置 diff(接入层),重跑 forge 后重新套用。
  3. use_new_schema 相关表不存在:说明 migrator 未跑完(migrate sync up 失败),查 migrator 日志并确认 ClickHouse/Keeper healthy 后重试。
  4. 90 天长周期存储:默认 TTL 在表级定义,需调整时改 ClickHouse 表 TTL(C1 不展开,属 D1 查询篇范畴)。