Skip to content

部署:149 环境探针包未执行 apm_probe_init(含 .NET 需先归档再初始化) #5116

Description

@baiyf-git

现象

149(10.10.41.149)上 APM 接入脚本的探针下载接口返回 404,不是证书或路由问题。

以 Python 为例(default 云区域 NODE_SERVER_URL=https://10.10.41.149:443):

https://10.10.41.149:443/api/v1/apm/open_api/probe/download/opentelemetry-python-wheels.tar.gz

init 前响应:

{"code": "probe_artifact_not_found", "detail": "探针文件不存在,请先在服务端初始化探针制品。"}

下载接口只读 NATS JetStream Object Store,不读镜像磁盘。Java / Node / Go / .NET 同一接口同样 404。

根因

发布已经把 Java / Python / Node / Go 离线包打进 fusion-collector 镜像,但部署准备期没有执行 apm_probe_init,对象存储里没有 apm/probe/ key。.NET 连镜像归档都还没有。

核对时间 2026-09-02:

语言 collector 镜像 /opt/release/apm/ NATS apm/probe/
Java java/opentelemetry-javaagent.jar(25,107,554 字节)
Python python/opentelemetry-python-wheels.tar.gz(9,289,044 字节,distro 0.65b0 / SDK 1.44.0) 无(后由验证临时灌入,见下)
Node.js nodejs/opentelemetry-js-auto.tgz(9,164,283 字节)
Go go/opentelemetry-go-sdk.zip(46,109,361 字节)
.NET dotnet/ 目录,镜像未打入该包

compose-server-1 没有 /opt/release/apm/。NATS bucket bklite 当时 19 个对象全是 Controller / Collector / installer。

约定见 docs/operations/apm-probe-artifact-release.md#5097:归档离线包之后,必须在 NATS 已可用时对每个制品执行一次 apm_probe_init。该命令禁止放进 Server startup.sh / batch_init

把文件放进 collector 镜像 ≠ 初始化。少这一步,接入页 curl --fail 会失败,但不阻断 Server 启动,所以容易漏检。

已做的临时处理(仅 Python)

为验证下载链路,在 149 上只用 collector 里那份 Python 包执行了一次:

python manage.py apm_probe_init \
  --artifact opentelemetry-python-wheels.tar.gz \
  --file_path /tmp/opentelemetry-python-wheels.tar.gz

之后同一下载地址 HTTP 200,SHA-256 与镜像原包一致:

cfb8e533ddfd07a64f98f5173332d9e2f36c65ea304a1b67e186033d24b8bd2a

对象 key:apm/probe/python/opentelemetry-python-wheels.tar.gz。Java / Node / Go / .NET 未灌。这不是流水线修复。

请运维补的步骤

1. 前四种:镜像已有包,补初始化

流水线在 NATS 就绪后,对镜像里已有的四份制品执行:

python manage.py apm_probe_init \
  --artifact opentelemetry-javaagent.jar \
  --file_path /opt/release/apm/java/opentelemetry-javaagent.jar

python manage.py apm_probe_init \
  --artifact opentelemetry-python-wheels.tar.gz \
  --file_path /opt/release/apm/python/opentelemetry-python-wheels.tar.gz

python manage.py apm_probe_init \
  --artifact opentelemetry-js-auto.tgz \
  --file_path /opt/release/apm/nodejs/opentelemetry-js-auto.tgz

python manage.py apm_probe_init \
  --artifact opentelemetry-go-sdk.zip \
  --file_path /opt/release/apm/go/opentelemetry-go-sdk.zip

--file_path 以实际可被 Server 进程读到的路径为准(当前文件在 collector 镜像里,不在 Server 镜像里,不能假设 compose-server-1 上有 /opt/release/apm/)。命令覆盖同名对象,可重复执行。

2. .NET:先归档官方包,再初始化

collector 镜像里还没有 .NET 制品。请按 #5114 归档 opentelemetry-dotnet-instrumentation v1.16.0 的 Linux x86_64 glibc 包。

官方文件名带仓库前缀,短名 linux-glibc-x64.zip 不存在,GitHub 会 404:

https://github.com/open-telemetry/opentelemetry-dotnet-instrumentation/releases/download/v1.16.0/opentelemetry-dotnet-instrumentation-linux-glibc-x64.zip

下载后改名为制品名 opentelemetry-dotnet-auto-linux-glibc-x64.zip,建议放到 /opt/release/apm/dotnet/(或流水线等价归档路径),然后:

python manage.py apm_probe_init \
  --artifact opentelemetry-dotnet-auto-linux-glibc-x64.zip \
  --file_path /path/to/opentelemetry-dotnet-auto-linux-glibc-x64.zip

对象 key 必须是 apm/probe/dotnet/opentelemetry-dotnet-auto-linux-glibc-x64.zip。不要合并 musl / ARM64 / Windows,不要用 otel-dotnet-auto-install.sh

验收

五个下载 URL 均为 HTTP 200、非空,SHA-256 与归档一致,且 NATS 中能看到对应 key:

{NODE_SERVER_URL}/api/v1/apm/open_api/probe/download/opentelemetry-javaagent.jar
{NODE_SERVER_URL}/api/v1/apm/open_api/probe/download/opentelemetry-python-wheels.tar.gz
{NODE_SERVER_URL}/api/v1/apm/open_api/probe/download/opentelemetry-js-auto.tgz
{NODE_SERVER_URL}/api/v1/apm/open_api/probe/download/opentelemetry-go-sdk.zip
{NODE_SERVER_URL}/api/v1/apm/open_api/probe/download/opentelemetry-dotnet-auto-linux-glibc-x64.zip

149 上 NODE_SERVER_URLhttps://10.10.41.149:443

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working⚙️ ops需要部署配置、运维脚本或生产拓扑事实介入

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions