如何序列化 OpenTelemetry Javascript Span

问题描述

问题:是否有任何代码可以采用 OpenTelemetry JS 跨度对象(由导出器接收)并将其转换为具有遥测数据而非内部实现的对象详情?

那就是——如果我有这样的出口商

    class FileSpanExporter {
      constructor() {
        this.stream = fs.createWriteStream('/tmp/telemetry.log',{flag:'a'})
      }
      export(spans,resultCallback) {
          this.stream.write(JSON.stringify(spans))
          if(resultCallback) {
            return resultCallback({ code: core.ExportResultCode.SUCCESS });
          }
      }
    }

写入日志的跨度包括我认为遥测数据的数据

    "attributes": {
      "express.name": "query","express.type": "middleware"
    },// ...
    "endTime": [
      1622658683,606307380
    ],// ...    

但也包括实现细节的数据

    "_spanProcessor": {
      "_spanProcessors": [
        {
          "_exporter": {
        // ... way more data snipped ...

开放遥测 javascript 代码是否有任何方法可以序列化 span 以只是获得它的遥测数据?或者是最终用户程序员有责任在导出之前决定他们对哪些数据感兴趣/不感兴趣。到目前为止,我能找到的只有 span.context() 方法,它返回上下文信息,而不返回其他相关数据。

解决方法

您可能正在寻找与此 https://github.com/open-telemetry/opentelemetry-js/blob/main/packages/opentelemetry-tracing/src/export/ConsoleSpanExporter.ts 类似的内容。这是专门为调试目的而设计的,对于实际应用来说并不是一个很好的选择。