【问题标题】:How to Serialize an OpenTelemetry Javascript Span如何序列化 OpenTelemetry Javascript Span
【发布时间】:2021-06-02 19:25:18
【问题描述】:

问题:是否有任何代码可以获取OpenTelemetry JS span 对象(由导出器接收)并将其转换为具有其遥测数据而不是内部实现细节的对象?

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

    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.context() 方法,它只返回上下文信息,而不是其他相关数据。

【问题讨论】:

    标签: javascript node.js open-telemetry


    【解决方案1】:

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

    【讨论】:

    • +1 -- 感谢您提供的信息。该类的_exportInfo 方法中的功能是我正在寻找的示例,但我正在寻找是否有公共/受支持的 API 来执行此操作,或者是否由每个出口商来做在发送数据之前自己进行序列化。
    • 由每个出口商来编码和序列化。
    • 看看 Jaeger 和 Zipkin 出口商。它们都有自己的序列化函数,可以将 ReadableSpan 转换为它们的原生表示。
    猜你喜欢
    • 2022-01-19
    • 2021-08-04
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 2011-09-20
    相关资源
    最近更新 更多