当前位置: 首页 > 知识库问答 >
问题:

将OpenTelemetry跟踪数据从Spring Boot应用程序导入Elastic APM-视图缺少数据

胡新
2023-03-14

我有一个带有Spring Cloud Sleuth、OpenTelemetry instrumentation和OpenTelemetry exporter OTLP的Spring Boot应用程序。

以下是依赖关系的要点:

>

spring cloud sleuth otel autoconfigure引入OpenTelemetry instrumentation libs并提供spring自动配置

opentelemetry exporter otlp用于向apm服务器发送数据

   <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-sleuth</artifactId>
      <exclusions>
          <exclusion>
              <groupId>org.springframework.cloud</groupId>
              <artifactId>spring-cloud-sleuth-brave</artifactId>
          </exclusion>
      </exclusions>
  </dependency>

  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-sleuth-otel-autoconfigure</artifactId>
  </dependency>

  <dependency>
      <groupId>io.opentelemetry</groupId>
      <artifactId>opentelemetry-exporter-otlp</artifactId>
  </dependency>
  <!-- https://mvnrepository.com/artifact/io.grpc/grpc-netty -->
  <dependency>
      <groupId>io.grpc</groupId>
      <artifactId>grpc-netty-shaded</artifactId>
      <version>1.43.0</version>
  </dependency>

我的application.yml中只有基本配置:

spring:
  sleuth:
    enabled: true
    otel:
      config:
        trace-id-ratio-based: 1.0
      exporter:
        otlp:
          endpoint: http://localhost:8200

通过这个设置,我成功地在APM中看到了一些数据。示例屏幕:

然而,如果我看看弹性留档,我看到他们的屏幕上有额外的数据:痕迹。

对我来说,它看起来缺少span和事务名称(我只看到HTTP GET而不是名称),至少它们存在于留档映像中。

有人知道为什么会发生这种情况以及如何解决吗?

这是弹性中的示例跟踪文档:

const EXAMPLE = {
  "_index": "apm-7.15.2-metric-000001",
  "_type": "_doc",
  "_id": "AYVKCH8BxjGANUnHPDgq",
  "_version": 1,
  "_score": 1,
  "_source": {
    "_doc_count": 2,
    "agent": {
      "name": "opentelemetry/java"
    },
    "processor": {
      "name": "metric",
      "event": "metric"
    },
    "transaction.duration.histogram": {
      "counts": [
        1,
        1
      ],
      "values": [
        1439,
        10495
      ]
    },
    "metricset.name": "transaction",
    "observer": {
      "hostname": "0798ff612508",
      "id": "6a12bcef-5e7e-45b3-aee6-f2af4e175c3f",
      "ephemeral_id": "389ee9b1-d4c4-4d67-b46a-bfcaa77b7b79",
      "type": "apm-server",
      "version": "7.15.2",
      "version_major": 7
    },
    "@timestamp": "2022-02-17T15:25:56.160Z",
    "timeseries": {
      "instance": "summary-service:HTTP GET:11ed2dc65a946e45"
    },
    "ecs": {
      "version": "1.11.0"
    },
    "service": {
      "name": "summary-service"
    },
    "event": {
      "ingested": "2022-02-17T15:25:57.161730700Z",
      "outcome": "success"
    },
    "transaction": {
      "result": "HTTP 2xx",
      "root": true,
      "name": "HTTP GET",
      "type": "request"
    }
  },
  "fields": {
    "transaction.name.text": [
      "HTTP GET"
    ],
    "_doc_count": [
      2
    ],
    "service.name": [
      "summary-service"
    ],
    "processor.name": [
      "metric"
    ],
    "observer.version_major": [
      7
    ],
    "observer.hostname": [
      "0798ff612508"
    ],
    "transaction.result": [
      "HTTP 2xx"
    ],
    "transaction.duration.histogram": [
      {
        "counts": [
          1,
          1
        ],
        "values": [
          1439,
          10495
        ]
      }
    ],
    "transaction.type": [
      "request"
    ],
    "metricset.name": [
      "transaction"
    ],
    "observer.id": [
      "6a12bcef-5e7e-45b3-aee6-f2af4e175c3f"
    ],
    "event.ingested": [
      "2022-02-17T15:25:57.161Z"
    ],
    "@timestamp": [
      "2022-02-17T15:25:56.160Z"
    ],
    "observer.ephemeral_id": [
      "389ee9b1-d4c4-4d67-b46a-bfcaa77b7b79"
    ],
    "timeseries.instance": [
      "summary-service:HTTP GET:11ed2dc65a946e45"
    ],
    "observer.version": [
      "7.15.2"
    ],
    "ecs.version": [
      "1.11.0"
    ],
    "observer.type": [
      "apm-server"
    ],
    "transaction.root": [
      true
    ],
    "processor.event": [
      "metric"
    ],
    "transaction.name": [
      "HTTP GET"
    ],
    "agent.name": [
      "opentelemetry/java"
    ],
    "event.outcome": [
      "success"
    ]
  }
}

共有1个答案

卢出野
2023-03-14

对我来说,它看起来像span和事务名称丢失(我只看到HTTP GET而不是名称)

不,它们没有丢失。您将名称视为HTTP GET的原因是由于首选较少的基数名称和跟踪数据的语义约定。这里有一个关于HTTP跨度命名约定的详细解释https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/http.md#name.自动检测库生成的任何数据都将遵守语义约定规范。我猜链接供应商的可视化来自手动检测,作为最终用户,您可以给出任何名称(尽管建议每个人使用较少的基数值,但没有强制执行)。我不认为这里有什么你可以“修复”的。

 类似资料:
  • 我试图在前端应用程序中跟踪。 我不能使用@opentelemetry/exporter jaeger,因为我认为它是用于节点的。仅限js后端应用程序。 所以我尝试使用@opentelemetry/exporter-collector。 首先,我尝试在浏览器控制台中打印跟踪数据。下面的代码成功打印了跟踪数据。 现在我想把它们转发给杰格。 我正在运行机甲猎人一体机 基于Jaeger port文档,我可

  • 我正在使用opentelemetry ruby otlp exporter进行自动检测:https://github.com/open-telemetry/opentelemetry-ruby/tree/main/exporter/otlp otel收集器作为守护程序集安装:https://github.com/open-telemetry/opentelemetry-helm-charts/tr

  • 1.3.2. 跟踪数据 作为一个有安全意识的开发者,最重要的一件事就是随时跟踪数据。不只是要知道它是什么和它在哪里,还要知道它从哪里来,要到哪里去。有时候要做到这些是困难的,特别是当你对WEB的运做原理没有深入理解时。这也就是为什么尽管有些开发者在其它开发环境中很有经验,但他对WEB不是很有经验时,经常会犯错并制造安全漏洞。 大多数人在读取EMAIL时,一般不会被题为"Re: Hello"之类的垃

  • 我试图创建一个“一对一的防火墙数据库Android聊天”。到目前为止是通过使用下面的结构工作的。大字符串表示user_TO_user,KW记录是聊天消息。 从Android活动中显示特定用户的会话列表,我创建了一个ListView并使用以下命令从Firebase中读取该列表: } 更新:所以,根据VZSG的回答,更好的结构可能是: 味精 a_to_b msg1 msg2 msg3 msg1 msg

  • 问题内容: 我的Python库刚刚将其主模块名称从更改为。对于向后兼容,仍然存在,但是将其导入会引发一些警告。现在,似乎仍然有一些示例程序从旧模块导入,但不是直接导入。 我想找到错误的陈述。有没有什么工具可以让我跟踪导入并找到罪魁祸首而无需费力看所有代码? 问题答案: 使用以下命令启动python解释器: 然后只是grep您的旧模块。

  • 我正在使用JQuery Mobile在DreamView中制作基本的“新闻”应用程序。 我做了所有的设计,但现在是时候将Json数据从我的api服务器获取到我的应用程序中了。 这里是我的api服务器链接;f、 e.“http://mywebapiurl” 我想我需要编写关于getJson的Jquery函数,但我不知道怎么做? 我将如何把它放到我的列表视图与小文章图片,文章标题和文章标题? 这是我的