如何将 OpenTelemetry Java 代理生成的跟踪导出到 Google Cloud Trace?

Posted

技术标签:

【中文标题】如何将 OpenTelemetry Java 代理生成的跟踪导出到 Google Cloud Trace?【英文标题】:How can I export traces generated by the OpenTelemetry Java agent to Google Cloud Trace? 【发布时间】:2021-11-09 06:06:27 【问题描述】:

我有一个 Spring Boot 应用程序,我想自动生成跟踪以使用 OpenTelemetry Java 代理,然后将这些跟踪上传到 Google Cloud Trace。

我已将以下代码添加到我的应用程序的入口点以发送跟踪:

OpenTelemetrySdk.builder()
    .setTracerProvider(
        SdkTracerProvider.builder()
            .addSpanProcessor(
                SimpleSpanProcessor.create(TraceExporter.createWithDefaultConfiguration())
            )
            .build()
    )
    .buildAndRegisterGlobal();

...我正在使用以下系统属性运行我的应用程序:

-javaagent:path/to/opentelemetry-javaagent-all.jar \
-jar myapp.jar

...但我不知道如何将两者联系起来。

我可以应用一些代理配置吗?比如:

-Dotel.traces.exporter=google_cloud_trace

【问题讨论】:

您可以使用 OpenTelemetry 收集 Java 应用的 Cloud Trace 数据。要使用 OpenTelemetry 和 Java 收集跟踪,您需要执行以下操作:安装 OpenTelemetry 包,配置您的应用程序以将跨度导出到 Cloud Trace 并配置您的平台。你可以参考这个document中提到的详细步骤。请让我知道这是否有效。 Configure your application to export spans to Cloud Trace - 怎么样? 在文档中提到了步骤。 正如我在问题中提到的,我正在尝试将 OTel java 代理生成的自动检测连接到 Cloud Trace 的导出器。这在文档中的何处进行了解释?这是一种可行的方法吗? 是的 here 提到了。 【参考方案1】:

我最终解决了这个问题:

    克隆GoogleCloudPlatform / opentelemetry-operations-java repo

git 克隆 git@github.com:GoogleCloudPlatform/opentelemetry-operations-java.git

    构建exporter-auto 项目

./gradlew clean :exporter-auto:shadowJar

    exporter-auto/build/libs中生成的jar复制到我的目标项目中

    使用以下参数运行应用程序:

-javaagent:path/to/opentelemetry-javaagent-all.jar -Dotel.javaagent.experimental.extensions=[artifact-from-step-3].jar -Dotel.traces.exporter=google_cloud_trace -Dotel.metrics.exporter=none -jar myapp.jar

注意:此设置不需要在目标代码库中进行任何显式代码更改。

【讨论】:

既然您的问题已经解决,请您接受您的回答,以便其他社区人士了解您的问题已通过这些步骤得到解决。

以上是关于如何将 OpenTelemetry Java 代理生成的跟踪导出到 Google Cloud Trace?的主要内容,如果未能解决你的问题,请参考以下文章

如何直接从浏览器将 OpenTelemetry 跟踪发送到 Honeycomb.io?

如何使用 OpenTelemetry 将 Prometheus 导出到 Google Cloud Monitoring?

OpenTelemetry Python - 如何将新跨度实例化为给定 traceid 的子跨度

使用OpenTelemetry进行端到端跟踪

如何选择 Opentelemetry 后端供应商?

Google Cloud Trace Opentelemetry Java 示例代码未显示在 Google Cloud Trace 仪表板上