SigNoz v0.146.0 常用 CLI 命令详解

SigNoz v0.146.0 常用 CLI 命令详解:clickhouse-client 直查 signoz_traces/signoz_logs/signoz_metrics 各分布式表的高频模板,signoz-otel-collector 启动参数与 migrate 子命令(ready/bootstrap/sync/async),SigNoz Server 认证与 /api/v4/query_range 查询 API 的 curl 实测清单,附 Foundry/compose 运维命令与速查卡,全部命令实测(2026-10-20)。

SigNozSigNoz监控2026/10/20

SigNoz v0.146.0 常用 CLI 命令详解

目标:沉淀 SigNoz v0.146.0 日常运维三类命令——clickhouse-client 直查 signoz 各库表、otel-collector(signoz-otel-collector)的启动参数与 migrate 子命令、SigNoz Server 的 HTTP API(curl),外加 Foundry/compose 运维命令;全部命令均在 2026-10-20 的实测环境中逐条执行并保留真实回显。

一、clickhouse-client:直查遥测数据

1.1 连接方式

方式命令适用
原生端口(容器网内/本机)clickhouse-client --host <CH主机> --port 9000在 ClickHouse 节点上执行,collector/migrator 即此方式写入
HTTP 端口curl 'http://<CH主机>:8123/?query=SELECT+1'无客户端二进制时;B2 实测映射宿主 8146
容器内客户端docker exec signoz-telemetrystore-clickhouse-0-0 clickhouse-client --query "..."部署后即时验证

冒烟:curl -s 'http://localhost:8146/?query=SELECT+1' 返回 1.。

1.2 库表地图(v0.146.0 实测)

SHOW DATABASES;
-- signoz_logs / signoz_meter / signoz_metadata / signoz_metrics / signoz_traces / system

常用分布式表(查询一律打 distributed_ 前缀表,自动路由到本地表):

库表内容
signoz_tracesdistributed_signoz_index_v3span 主索引(trace_id/name/duration/属性)
signoz_tracesdistributed_signoz_error_index_v2异常事件索引
signoz_tracesdistributed_signoz_spansspan 原始数据
signoz_tracesdistributed_top_level_operations顶层操作(服务入口聚合)
signoz_logsdistributed_logs_v2日志主表
signoz_logsdistributed_tag_attributes_v2 / logs_attribute_keys属性/字段键目录
signoz_metricsdistributed_samples_v4指标原始样本
signoz_metricsdistributed_samples_v4_agg_5m/30m5 分钟/30 分钟预聚合
signoz_metricsdistributed_metadata指标元数据(名称/类型)
signoz_metadatadistributed_attributes_metadata 等属性元数据与 schema 演进

计数实测(部署 + 一轮 OTLP 测试数据后):

SELECT count() FROM signoz_traces.distributed_signoz_index_v3;   -- 2
SELECT count() FROM signoz_logs.distributed_logs_v2;             -- 2
SELECT count() FROM signoz_metrics.distributed_samples_v4;       -- 44(含 collector 自监控指标)

1.3 高频查询模板(均实测)

按 trace_id 还原一次调用链:

SELECT timestamp, name, kind_string, duration_nano, hasError
FROM signoz_traces.distributed_signoz_index_v3
WHERE trace_id = '5b8efff798038103d269b633813fc60c'
ORDER BY timestamp
FORMAT Vertical;
-- 实测:name=POST /checkout, kind_string=Server, duration_nano=355330438, hasError=0

最近 1 小时最慢的 10 个服务端 span:

SELECT service_name, name, count() AS cnt, max(duration_nano)/1e6 AS p_max_ms
FROM signoz_traces.distributed_signoz_index_v3
WHERE timestamp > now() - INTERVAL 1 HOUR AND kind_string = 'Server'
GROUP BY service_name, name
ORDER BY p_max_ms DESC LIMIT 10;

最近错误 span(告警排查入口):

SELECT timestamp, service_name, name, exception_message
FROM signoz_traces.distributed_signoz_error_index_v2
WHERE timestamp > now() - INTERVAL 1 HOUR
ORDER BY timestamp DESC LIMIT 10;

按服务查日志(属性在 Map 列里):

SELECT timestamp, severity_text, body
FROM signoz_logs.distributed_logs_v2
WHERE resources_string['service.name'] = 'frontend-api'
  AND timestamp > now() - INTERVAL 1 HOUR
ORDER BY timestamp DESC LIMIT 20;

模糊检索日志正文:

SELECT timestamp, body FROM signoz_logs.distributed_logs_v2
WHERE body LIKE '%checkout%' ORDER BY timestamp DESC LIMIT 5;
-- 实测命中:order checkout completed amount=258.00(severity_text=INFO)

指标样本与元数据:

SELECT metric_name, count() FROM signoz_metrics.distributed_samples_v4
WHERE metric_name LIKE 'checkout%' GROUP BY metric_name;
-- checkout_requests_total   1

SELECT metric_name, type, is_monotonic FROM signoz_metrics.distributed_metadata
WHERE metric_name = 'checkout_requests_total' LIMIT 3;
-- checkout_requests_total  Sum  true

查 clickhouse 集群拓扑:

SELECT cluster, shard_num, replica_num, host_name, port
FROM system.clusters WHERE cluster = 'cluster';
-- cluster / 1 分片 1 副本 / signoz-telemetrystore-clickhouse-0-0:9000

二、signoz-otel-collector 命令行

2.1 主命令与全局参数

Usage: signoz-otel-collector [flags] [command]
可用子命令: help / migrate
常用全局参数(--help 实测):
  --config string            collector 配置文件路径
  --manager-config string    OpAMP 管理配置路径
  --copy-path string         实际生效配置落盘路径(默认 /etc/otel/signozcol-config.yaml)
  --clickhouse-dsn string    迁移/组件用 CH 连接(默认 tcp://0.0.0.0:9001)
  --clickhouse-cluster string  集群名(默认 cluster)
  --clickhouse-replication   是否启用副本(默认 true)

容器内实际启动命令(compose 渲染,实测):先 migrate sync check 校验迁移一致性,再带 --config=/etc/otel-collector-config.yaml --manager-config=/etc/opamp-config.yaml --copy-path=/var/tmp/collector-config.yaml 运行。

2.2 migrate 子命令(ClickHouse schema 迁移)

signoz-otel-collector migrate <subcommand>
  ready       检查存储是否就绪可迁移
  bootstrap   创建迁移状态跟踪表
  sync        同步迁移(schema 变更,必须先完成);sync check 为校验、sync up 为执行
  async       异步迁移(数据回填类,可后台跑);async up 为执行

对应 migrator 初始化容器的实测命令链:

/signoz-otel-collector migrate ready
/signoz-otel-collector migrate bootstrap
/signoz-otel-collector migrate sync up
/signoz-otel-collector migrate async up

手工重跑(迁移失败修复时,需在 collector 容器网内执行):

docker exec signoz-01460-stack-ingester-1 \
  /signoz-otel-collector migrate sync check --clickhouse-dsn tcp://signoz-telemetrystore-clickhouse-0-0:9000

2.3 配置校验(失败即 fatal,实测)

该二进制没有独立的 validate 子命令,校验发生在启动阶段。喂一个缺 exporter 的配置实测:

{"level":"fatal",...,"msg":"failed to run service:",
 "error":"failed to start collector service: failed to start : invalid configuration: no exporter configuration specified in config"}

排障结论:配置错误看 docker compose logs ingester 的 fatal 行即可,无需额外的 dry-run 参数。

三、SigNoz Server API(curl 实测清单)

基础地址 http://<服务器>:8143(容器 8080)。无需认证的两个探针:

curl -s http://localhost:8143/api/v1/health    # {"status":"ok"}
curl -s http://localhost:8143/api/v1/version   # {"version":"v0.146.0","ee":"Y","setupCompleted":true}

3.1 首次注册(仅 setupCompleted=false 时可用)

curl -s -X POST http://localhost:8143/api/v1/register \
  -H 'Content-Type: application/json' \
  -d '{"email":"admin@signoz.local","name":"admin","password":"Q1w2e3r4#@$%","orgName":"signoz"}'
# {"status":"success","data":{}}

弱口令实测报错:Password must be at least 12 characters long and contain at least one uppercase letter, one lowercase letter, one digit, and one special character。

3.2 登录换 token(v2 端点)

curl -s -X POST http://localhost:8143/api/v2/sessions/email_password \
  -H 'Content-Type: application/json' \
  -d '{"email":"admin@signoz.local","password":"Q1w2e3r4#@$%","orgID":"<orgId>"}'
# {"status":"success","data":{"accessToken":"Tgf17gc0Y6qfI97xU0V3G8zqN5A8lNf3",
#  "tokenType":"Bearer","expiresIn":86400}}

注意:v0.146 旧的 POST /api/v1/login 已不存在(返回 SPA 首页 HTML),登录走 POST /api/v2/sessions/email_password,token 类型是不透明字符串(非 JWT),有效期 86400 秒。

3.3 身份与资源查询

AT="<accessToken>"
curl -s http://localhost:8143/api/v2/users/me -H "Authorization: Bearer $AT"
# data.details.role=ROOT;userTenantMappings[].tenantId 即 orgID
curl -s http://localhost:8143/api/v1/services/list -H "Authorization: Bearer $AT"
# {"status":"success","data":{"services":[{"name":"frontend-api","p99":355330438,...}]}}
curl -s http://localhost:8143/api/v1/logs/fields -H "Authorization: Bearer $AT" | head -c 300
# {"status":"success","data":[{"name":"body","type":"","dataType":"String",...},...]}

3.4 统一查询接口 /api/v4/query_range

日志/追踪(builder 形态,dataSource 二选一):

START=$(($(date +%s) - 900))000; END=$(date +%s)000
curl -s -X POST http://localhost:8143/api/v4/query_range \
  -H "Authorization: Bearer $AT" -H 'Content-Type: application/json' \
  -d "{\"start\":$START,\"end\":$END,\"formatForWeb\":true,\"compositeQuery\":{\"panelType\":\"graph\",
  \"queryType\":\"builder\",\"builderQueries\":{\"A\":{\"queryName\":\"A\",\"dataSource\":\"logs\",
  \"aggregateOperator\":\"count\",\"expression\":\"A\",\"disabled\":false,\"type\":\"builder-query\"}}}}"
# {"status":"success","data":{"result":[{"queryName":"A","series":[{"labels":[],"values":[[1760942400,"1"]]}]}]}}

指标(PromQL 形态,实测通过):

curl -s -X POST http://localhost:8143/api/v4/query_range \
  -H "Authorization: Bearer $AT" -H 'Content-Type: application/json' \
  -d "{\"start\":$START,\"end\":$END,\"formatForWeb\":true,\"compositeQuery\":{\"panelType\":\"graph\",
  \"queryType\":\"promql\",\"promQueries\":{\"A\":{\"name\":\"A\",
  \"query\":\"sum(rate(checkout_requests_total[5m]))\",\"disabled\":false}}}}"
# {"status":"success",...}

已知坑(实测):v0.146 对不带聚合属性的指标 builder 查询(count/sum)会返回 {"errorType":"internal","error":"error in builder queries"},服务端日志可见 SQL syntax error: Empty query;指标查询请用 PromQL 形态或补全 aggregateAttribute。

四、Foundry 与 Compose 运维命令

foundryctl version                 # 查 foundryctl 版本
foundryctl catalog                 # 查可用 casting 目录
foundryctl gauge -f casting.yaml   # 校验部署前置(docker/compose 可用性)
foundryctl forge -f casting.yaml   # 渲染 pours/deployment/(重复执行会覆盖产物)
foundryctl cast -f casting.yaml    # 投放到目标环境(本实录未用,直接 compose 起栈)

cd pours/deployment
docker compose ps                  # 栈状态(healthy/completed)
docker compose logs -f ingester    # 跟 collector 日志(排障主入口)
docker compose restart ingester    # 改 ingester.yaml 后热重启生效
docker compose down / down -v      # 停栈(保留/销毁数据卷)

五、速查卡

场景命令
存活探针curl :8143/api/v1/health、curl :8146/?query=SELECT+1
登录拿 tokenPOST /api/v2/sessions/email_password
查一条链路clickhouse-client 查 signoz_traces.distributed_signoz_index_v3 WHERE trace_id=...
查错误明细signoz_traces.distributed_signoz_error_index_v2
查日志signoz_logs.distributed_logs_v2(属性用 resources_string['service.name'])
指标元数据signoz_metrics.distributed_metadata
schema 迁移signoz-otel-collector migrate ready/bootstrap/sync up/async up
collector 配置校验启动期 fatal 校验,看 docker compose logs ingester
改 collector 配置改 ingester.yaml → docker compose restart ingester