← 文章 / 云原生与基础设施
signoz 5小时前 · 2026-10-03 05:03:44 · 8 阅读

将 SigNoz 升级至 v0.143.0,并搭配 OTel Collector v0.144.11

SigNoz v0.143.0 使 OTel collector 支持 AI 可观测性,并将登录会话改为不透明令牌。这对自托管升级意味着两点:collector 必须运行 signoz-otel-collector v0.144.11,并在其 traces 管道中配置两个新处理器;同时,每位用户需要重新登录一次。

v0.143.0 的主要变更

会话

默认会话提供器现已改为不透明令牌。如需使用 JWT,手动设置提供器和密钥即可。

AI 可观测性

现在可以在 SigNoz 中监控 LLM 和智能体工作负载。此版本包含:

  • 概览:跨模型、提供商和智能体的令牌用量、成本、延迟和错误统计。
  • 探索器:按模型、提供商、智能体和工具查询 AI span,并基于令牌和成本等聚合指标进行筛选。
  • 属性映射:将不同 AI 框架的 span 属性标准化为 OpenTelemetry gen_ai.* 键,使同一套查询在所有框架中通用。
  • 定价:按模型设置价格,在每个 LLM span 中计算成本。

对您的影响

属性映射将输入和输出消息从框架特定属性(如 input.value 或 gen_ai.prompt)迁移到标准键 gen_ai.input.messages 和 gen_ai.output.messages。这些是 LLM span 中最大的属性,因此不会保留原始副本。

迁移的键包括:

  • 迁移至 gen_ai.input.messages:gen_ai.prompt、ai.prompt.messages、input.value
  • 迁移至 gen_ai.output.messages:gen_ai.completion、ai.response.toolCalls、ai.response.text、output.value、final_result

如果查询、保存的视图或告警使用了旧键,请切换到标准键。已使用标准键的 span 不受影响。

如需同时保留原始键,请前往 AI 可观测性 > 属性映射,将操作从 move 改为 copy。

后续计划

  • 包含对话线程的 trace 详情
  • 基于 AI 探索器查询的仪表盘、告警和保存视图

完整发布范围请参见 v0.143.0 发布说明。

谁需要采取行动

AI 可观测性需要两个新的 Collector 处理器

SigNoz 现在通过 OpAMP 在你的 Collector 中管理 signozspanmapper 和 signozllmpricing 处理器。它会写入这些配置,但不会自动将它们添加到 Traces 管道中。如果你运行的是来自 Foundry 或 Helm 图表的默认 Collector 配置,新的默认配置会包含它们。如果你维护自己的 Collector 配置,请手动添加。

v0.143.0 中 JWT 不再是默认选项

v0.143.0 之前,JWT 是默认的,因此仅设置一个密钥就足够了。若要保留 JWT 会话,需同时设置以下两项:

Copy
SIGNOZ_TOKENIZER_PROVIDER=jwt
SIGNOZ_TOKENIZER_JWT_SECRET=<your secret>

若选择 JWT 提供者但未设置密钥,SigNoz 将拒绝启动:

Copy
jwt::secret must be set when provider is jwt, without a JWT secret, user sessions are vulnerable to tampering and unauthorized access

切换后用户需重新登录一次。参见保留 JWT 会话提供者及v0.143.0 发布说明。

如果你则
运行默认 Collector 配置除升级外无需其他操作,升级后重新登录即可
覆盖 Collector 配置或其 Traces 管道在升级前或同时添加这两个处理器
将 Collector 镜像版本固定低于 v0.144.11将其迁移至 v0.144.11,或暂时保留在 SigNoz v0.142.x,直到可以迁移
当前已设置 SIGNOZ_TOKENIZER_JWT_SECRET 或 SIGNOZ_JWT_SECRET你的会话将切换为不透明(opaque)模式,密钥将被忽略。若要保留 JWT,请在升级前添加 SIGNOZ_TOKENIZER_PROVIDER=jwt。参见保留 JWT 会话提供者

升级自托管 SigNoz

步骤 1:备份数据

定价规则和 attribute 映射与仪表盘、告警一起存储在 SigNoz Metastore(SQLite 或 Postgres)中。开始升级前请先备份 Metastore。如果你落后多个版本,请先查阅 Upgrade Path Tool,确认升级到 v0.143.0 前需要经过哪些中间版本。

第 2 步:升级 SigNoz 和 collector

两者要一起升级。SigNoz v0.143.0 需要 signoz-otel-collector v0.144.11。

FoundryKubernetes(Helm chart)

升级 foundryctl 以获取 v0.143.0 的 collector 配置,然后重新应用现有的 casting.yaml。

运行 cast 前先更新镜像

cast 会应用重新生成的文件,但不会拉取镜像。如果你的 casting 使用 latest 这类浮动标签,请先在宿主机上刷新 signoz/signoz 和 signoz/signoz-otel-collector,确保重启后的容器运行 v0.143.0 和 v0.144.11,否则 collector 会用新配置跑在旧镜像上。

Compose、Kubernetes、ECSDocker SwarmsystemdCopy
curl -fsSL https://signoz.io/foundry.sh | bash
foundryctl cast -f casting.yaml

当 ingester 镜像是 latest 或自带这两个 processor 的版本时,cast 会重新生成包含它们的 collector 配置;如果是较旧的固定版本,则保留原配置。如果你的 casting.yaml 固定了镜像版本,请自行把 SigNoz 升到 v0.143.0、collector 升到 v0.144.11;如果检测到 SigNoz v0.143.0 配了无法加载这些 processor 的 collector,cast 会拒绝执行,并提示你升级到 v0.144.11。

如果你的 casting 通过 spec.config 为 ingester 自定义了 traces 的 processors 列表,该列表会覆盖自动生成的配置。请自行添加这两个 processor。

Swarm 的 config 是不可变的,cast 无法就地更新已变更的 collector 配置,因此 docker stack deploy 会在现有 stack 上失败。请先删除 stack 再执行 cast:

Copy
curl -fsSL https://signoz.io/foundry.sh | bash
docker stack rm <stack-name>
foundryctl cast -f casting.yaml

Stack 的名称取自 casting.yaml 中的 metadata.name,自带示例中为 signoz。

从执行 docker stack rm 到运行 foundryctl cast 期间,所有服务均处于停止状态。docker stack rm 会移除服务和网络,但命名卷中的数据会被保留。

Foundry 不会下载二进制文件。请在 casting 指定的路径下替换 SigNoz 和 collector 的二进制文件,然后执行 cast 命令:

Copy
ARCH=$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')
 
# 默认值;你的 casting 可能会设置 foundry.signoz.io/signoz-binary-path 和 foundry.signoz.io/ingester-binary-path
# 解压完整的 SigNoz 压缩包:bin/、web/、templates/ 和 conf/ 必须保持在一起
curl -fsSL "https://github.com/SigNoz/signoz/releases/download/v0.143.0/signoz_linux_${ARCH}.tar.gz" \
  | sudo tar -xz --strip-components=1 -C /opt/signoz
 
curl -fsSL "https://github.com/SigNoz/signoz-otel-collector/releases/download/v0.144.11/signoz-otel-collector_linux_${ARCH}.tar.gz" \
  | sudo tar -xz --strip-components=1 -C /opt/ingester
 
sudo foundryctl cast -f casting.yaml

cast 会重新生成 collector 配置、运行迁移并重新加载单元,但不会重启正在运行的服务。请重启这两个服务,使其加载新的二进制文件和配置:

Copy
sudo systemctl restart <name>-signoz.service <name>-ingester.service

<name> 即 casting.yaml 中的 metadata.name,自带示例中为 signoz。

更新 chart 并执行升级。将 <namespace> 和 <release-name> 替换为你自己的值:

Copy
helm repo update
helm -n <namespace> upgrade <release-name> signoz/signoz -f <your-values.yaml>

helm upgrade 默认使用最新版本的 chart;如需锁定 v0.143.0,请添加 --version 0.143.0。该 chart 的默认 otelCollector.config 包含这两个处理器。Helm 对列表采用替换而非合并策略,因此如果你的 values 文件设置了 otelCollector.config.service.pipelines.traces.processors,请将这两个处理器添加到该列表中。

步骤 3:验证升级

  1. SigNoz 和采集器运行正常(使用 kubectl get pods -n <namespace>、docker compose ps、docker stack ps <stack-name> 或 systemctl status 'signoz-*' 检查)。
  2. SigNoz 在 设置 中显示版本为 v0.143.0。
  3. 采集器日志中没有出现关于 signozspanmapper 或 signozllmpricing 的 unknown type 错误。

在自定义采集器配置中添加 AI 可观测性处理器

按照下方所示,将两个处理器都添加在 processors 下。SigNoz 会通过 OpAMP 填充 groups 和 default_pricing.rules,因此此处请保持为空。

Copy
processors:
  signozspanmapper:
    groups: []
  signozllmpricing:
    attrs:
      model: gen_ai.request.model
      in: gen_ai.usage.input_tokens
      out: gen_ai.usage.output_tokens
      cache_read: gen_ai.usage.cache_read.input_tokens
      cache_write: gen_ai.usage.cache_creation.input_tokens
    default_pricing:
      rules: []
    output_attrs:
      in: signoz.gen_ai.usage.input_tokens.cost
      out: signoz.gen_ai.usage.output_tokens.cost
      cache_read: signoz.gen_ai.usage.cache_read.input_tokens.cost
      cache_write: signoz.gen_ai.usage.cache_write.input_tokens.cost
      total: signoz.gen_ai.usage.tokens.cost

然后将这两个处理器添加到 traces 流水线中,位置在 signozspanmetrics/delta 之后、batch 之前:

Copy
service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [signozspanmetrics/delta, signozspanmapper, signozllmpricing, batch]
      exporters: [clickhousetraces, metadataexporter, signozmeter]

如果采集器定义了处理器但流水线中缺失对应项,服务仍可正常启动;但在流水线条目配置到位之前,Token 成本统计和属性映射功能将保持关闭状态。

保留 JWT 会话提供程序

SigNoz v0.143.0 默认颁发不透明(opaque)会话令牌。而在 v0.143.0 之前,默认使用 JWT,因此仅设置密钥即可。若要继续使用 JWT,请在升级前设置以下两项:

Copy
SIGNOZ_TOKENIZER_PROVIDER=jwt
SIGNOZ_TOKENIZER_JWT_SECRET=<your existing secret>

若使用 jwt 提供程序但未设置密钥,SigNoz 将拒绝启动:

Copy
jwt::secret must be set when provider is jwt, without a JWT secret, user sessions are vulnerable to tampering and unauthorized access

如果你仍在使用 SIGNOZ_

原始来源: signoz

评论 (0)