当前位置:
首页
文章
后端
详情

需要了解的有关 OpenTelemetry Java 代理的所有信息

OpenTelemetry Java 代理使 Java 应用程序能够自动生成和捕获遥测数据。本文将全面概述了 OpenTelemetry Java 代理,包括它的工作原理。但首先,让我们一下了解 OpenTelemetry 是什么。

什么是OpenTelemetry?

OpenTelemetry 是一组代码 , 一组 API、SDK、工具和集成,它可以帮你生成、发出、收集、处理和导出 Telemetry 数据。

使用 OpenTelemetry 捕获的遥测数据可以让你的系统和应用程序具有可观察性。它还会标准化这个过程。你使用 OpenTelemetry 收集的数据与供应商无关,可以用多种格式导出。

OpenTelemetry 不附带后端分析工具。对于 Telemetry 数据的存储、分析和可视化,你还可以使用像SigNoz这样的全栈可观察性平台。

我们如何使用 OpenTelemetry 生成 Telemetry数据?

Telemetry 数据是使用称为检测的过程生成的。OpenTelemetry 为手动和自动检测提供检测库。这些库特定于它们所使用的语言。设置检测的说明也因编程语言而异。

OpenTelemetry 将检测库定义为支持另一个库的可观察性的库。

OpenTelemetry Java 库

对于 Java 应用程序,OpenTelemetry 提供了三个存储库:

opentelemetry-java这个 repo 是主要的 OpenTelemetry Java SDK 并提供用于手动检测的组件。顶级组件包括 OpenTelemetry API、扩展、SDK、用于 OpenTracing 和 OpenCensus 的桥接层。

opentelemetry-java-instrumentation这是opentelemetry-java的兄弟项目,提供一体化、易于安装的自动检测 Java 代理。OpenTelemetry Java 代理使您能够从许多流行的库和框架中捕获 Telemetry 数据。你需要将其附加到任何 Java 8+ 应用程序。我们将在下面了解有关 Java 代理的更多信息。

opentelemetry-java-contribOpenTelemetry java 提供这个 repo 来涵盖不适合 opentelemetry-java 和 opentelemetry-java-instrumentation 范围的基于 JVM 的应用程序和工作流。

什么是 OpenTelemetry Java 代理?

OpenTelemetry 有一个非常方便的 Java JAR 代理,可以附加到任何 Java 8+ 应用程序以检测 Java 应用程序。Java JAR 代理可以检测许多流行的库和框架,并开箱即用地对其进行检测以生成遥测数据。

OpenTelemetry 收集器捕获生成的 Telemetry 数据,然后可以将其导出为所需的格式。如果你用的是 SigNoz,那么就可以使用默认的 OTLP 导出器。Java 代理和导出器可以通过命令行配置一些环境变量。你无需对代码进行任何更改,这就是为什么开始使用 OpenTelemetry Java 代理如此方便的原因。

如何使用 OpenTelemetry Java 代理?

需要为要监视的每个主机下载和分发 Java 代理。

使用 OpenTelemetry Java 代理的步骤:

  • 下载最新的 Java JAR 代理并将其分发到每个受监控的主机和服务。
  • 准备环境变量,例如受监控服务的服务名称和将导出数据的端点
  • 运行时将代理附加到应用程序的 jar 中

如果你想要将数据导出到SigNoz等可观察性工具,则必须指定托管 SigNoz 的主机的 IP 地址。SigNoz 在端口号 4317 侦听传入数据。因此请记住允许传入请求到 SigNoz 所在的端口号 4317。

要处理的一些环境变量的示例:

OTEL_TRACES_EXPORTER=otlp
OTEL_METRICS_EXPORTER=none
OTEL_EXPORTER_OTLP_ENDPOINT=<IP of SigNoz Backend>:4317
OTEL_RESOURCE_ATTRIBUTES="service.name=SERVICE_NAME"

让我们看看当你想要运行附加到应用程序的 Java 代理时命令的样子:

OTEL_METRICS_EXPORTER=none
OTEL_EXPORTER_OTLP_ENDPOINT="http://<IP of SigNoz>:4317"
OTEL_RESOURCE_ATTRIBUTES=service.name=javaApp
java -javaagent:/path/to/opentelemetry-javaagent-all.jar -jar target/*.jar

Java 代理 JAR 文件的路径需要替换为下载文件的位置。例如,对于我的本地,命令​​如下所示:

OTEL_METRICS_EXPORTER=none
OTEL_EXPORTER_OTLP_ENDPOINT="http://<IP of SigNoz>:4317"
OTEL_RESOURCE_ATTRIBUTES=service.name=javaApp
java -javaagent:/Users/Downloads/to/opentelemetry-javaagent-all.jar -jar target/*.jar

有了这个,OpenTelemetry Java 代理将动态注入字节码以从许多流行的库和框架中捕获遥测数据。让我们看看列表中包含的一些库和框架是什么。

OpenTelemetry Java 代理支持的库和框架列表

OpenTelemetry Java 代理支持的用于自动检测的库和框架包括:

  • Akka HTTP 10.0+
  • Apache HttpClient 2.0+
  • AWS Lambda 1.0+
  • AWS 开发工具包 1.11.x 和 2.2.0+
  • Cassandra 驱动程序 3.0+
  • 弹性搜索 API 5.0+
  • Elasticsearch REST 客户端 5.0+
  • gRPC 1.6+
  • JDBC Java 8+
  • 绝地武士 1.4+
  • 卡夫卡 0.11+
  • Kubernetes 客户端 7.0+
  • MongoDB 驱动程序 3.1+
  • OkHttp 3.0+
  • RabbitMQ 客户端 2.7+
  • Spark Web 框架 2.3+
  • Spring Web 服务 2.0+
  • Vert.x 3.0+

Java 代理支持的一些流行应用服务器包括 Glassfish、JBoss EAP、Jetty、Payara、Tomcat、TomEE、Weblogic 和 Wildfly。

你可以在opentelemetry-java-instrumentation GitHub存储库中找到 OpenTelemetry Java 代理支持的受支持库和框架的完整列表。

结论

OpenTelemetry Java Jar 代理提供了一种快速方便的方法来使您的 Java 应用程序具有可观察性。通过对许多流行库进行开箱即用的检测,Java 代理可以成为使用 OpenTelemetry 检测应用程序的良好起点。

如前所述,OpenTelemetry 是一个与供应商无关的工具库。因此遥测数据是可移植的。您可以将其配置为以多种不同格式导出。像SigNoz这样的工具支持默认的 OTLP 格式,是发送遥测数据的完美选择。它还带有一个可视化层,您可以在其中可视化图表,例如流行的 RED 指标和使用火焰图和甘特图的分布式跟踪。

用户界面
火焰图


免责申明:本站发布的内容(图片、视频和文字)以转载和分享为主,文章观点不代表本站立场,如涉及侵权请联系站长邮箱:xbc-online@qq.com进行反馈,一经查实,将立刻删除涉嫌侵权内容。

同类热门文章

深入了解C++中的new操作符:使用具体实例学习

C++中的new操作符是动态分配内存的主要手段之一。在程序运行时,我们可能需要动态地创建和销毁对象,而new就是为此提供了便利。但是,使用new也常常会引发一些问题,如内存泄漏、空指针等等。因此,本文将通过具体的示例,深入介绍C++中的new操作符,帮助读者更好地掌握其使用。


深入了解C++中的new操作符:使用具体实例学习

怎么用Java反射获取包下所有类? 详细代码实例操作

Java的反射机制就是在运行状态下,对于任何一个类,它能知道这个类的所有属性和方法;对于任何一个对象,都能调用这个对象的任意一个方法。本篇文章将通过具体的代码示例,展示如何通过Java反射来获取包下的所有类。


怎么用Java反射获取包下所有类? 详细代码实例操作

员工线上学习考试系统

有点播,直播,在线支付,三级分销等功能,可以对学员学习情况的监督监控,有源码,可二次开发。支持外网和局域网私有化部署,经过测试源码完整可用!1、视频点播:视频播放,图文资料,课件下载,章节试学,限时免

员工线上学习考试系统

了解Java中的volati关键字的作用 以及具体使用方法

本篇文章将和大家分享一下Java当中的volatile关键字,下面将为各位小伙伴讲述volatile关键字的作用以及它的具体使用方法。


了解Java中的volati关键字的作用 以及具体使用方法

Java Map 所有的值转为String类型

可以使用 Java 8 中的 Map.replaceAll() 方法将所有的值转为 String 类型: 上面的代码会将 map 中所有的值都转为 String 类型。 HashMap 是 Java

Java Map 所有的值转为String类型