这篇文章由Travis Keep和Sri Harsha Yayi撰写。
【资料图】
现代应用程序体系结构很复杂,通常由数百个以不同语言和不同团队实现的分布式微服务组成。作为开发人员、站点可靠性工程师或 DevOps 专业人员,您负责这些复杂系统的可靠性和性能。借助可观测性,可以询问有关系统的问题,并根据系统生成的遥测数据获取答案。指标数据以及应用程序的 Aria 操作警报可以在需要注意时通知你。分布式跟踪可以帮助您查明故障的根本原因,并通过分析跨服务移动的每个请求来识别性能瓶颈。那么,我们如何检测我们的服务以发出指标和跟踪呢?
应用程序的 Aria 操作支持指标和跟踪的各种检测和引入方法。现在这包括对OpenTelemetry的支持,这是一个新的行业标准,它合并了OpenTracing和OpenCensus项目,为监控分布式系统提供了一个完整的遥测系统。OpenTelemetry 提供了一组 API、SDK 和集成,用于收集和导出分布式微服务生成的指标、跟踪和日志,以便可以使用应用程序的 Aria 操作等平台对其进行监视和分析。您可以将应用程序配置为使用波前代理将指标和跟踪数据发送到应用程序的 Aria 操作。
不熟悉开放遥测?不用担心!使用开放式遥测,不需要手动检测。让我们探讨一下如何开始使用应用程序的 OpenTelemetry 和 Aria 操作,而无需手动检测Java 应用程序。事实上,我们可以通过三个简单的步骤带您到达那里。
在我们开始之前,有几个先决条件:
您需要一个应用程序的 Aria 操作帐户来可视化和监视应用程序运行状况。如果您还没有,可以在此处注册。码头工人Java 11 或更高版本马文配置应用程序的 Aria 操作 URL 和令牌。(如果您已注册免费试用版,请按以下步骤获取令牌。
1.确保您具有代理权限。可以通过转到https://{cluster}.wavefront.com/userprofile/groups来查看您是否具有代理管理权限。“代理”旁边的复选框表示您拥有权限。如果您没有在“代理”旁边看到复选框,则您的管理员需要将此权限添加到您的用户帐户。
2. 如果您注册了免费试用版,请按照以下步骤获取 API 令牌。
3. 运行以下命令以安装代理:
docker run -d \
-e WAVEFRONT_URL=https://{CLUSTER}.wavefront.com/api/ \
-e WAVEFRONT_TOKEN={TOKEN} \
-e JAVA_HEAP_USAGE=512m \
-e WAVEFRONT_PROXY_ARGS="-–otlpGrpcListenerPorts 4317" \
-p 2878:2878 \
-p 4317:4317 \
wavefronthq/proxy:11.4
在这里,将 {CLUSTER} 替换为您的 Wavefront 集群的名称,并将 {TOKEN} 替换为您生成的 API 令牌。请注意,您至少需要 11.4 版的波前代理才能正确引入 OpenTelemetry 数据。
4. 确认代理正在运行。docker ps
如果未列出波前代理,则表示波前代理停止运行。如果发生这种情况,请使用 查看日志并查找问题。在步骤 3 中运行的 docker 命令会打印出容器 ID。docker ps
docker logs
对于检测,您可以使用 OpenTelemetry 提供的 Java 代理,该代理可以附加到任何 Java 应用程序。此代理动态注入字节码以收集遥测数据,开发人员可以避免手动检测。
1. 克隆 Spring 宠物诊所应用程序并导航到目录。
git clone https://github.com/spring-projects/spring-petclinic.git
cd spring-petclinic
2. 从项目的根目录运行。./mvnw package
3. 下载OpenTelemetry Java 代理。
4. 将文件路径分配给JAVA_AGENT变量。JAVA_AGENT=
5. 连接 Java 代理并启动 Spring Petclinic 应用程序。
java -javaagent:$JAVA_AGENT -Dotel.service.name=petclinic -Dotel.resource.attributes=application=demo-petclinic -Dotel.traces.exporter=otlp -Dotel.metrics.exporter=otlp -jar target/*.jar
6. 导航到http://localhost:8080并与 Petclinic 应用程序交互以生成遥测数据。
可以通过以下方式查看分布式跟踪数据:
1. 在波前顶部的菜单栏中,转到应用程序 -> 跟踪。
2.您将看到类似于以下内容的屏幕:
如果您转到应用程序 ->应用程序状态,您将看到类似于以下屏幕截图的内容:
如果您单击Petclinic并从弹出菜单中选择“查看服务仪表板”,您将看到类似于以下屏幕截图的内容。服务仪表板提供服务级别的运行状况概述。
当从 Wavefront 代理收集的指标数据发送到应用程序的 Aria 操作时,您可以在应用程序的 Aria 操作用户界面中检查它们。
例如,查询 ts(jvm.threads.live) 显示 Petclinic 应用程序中的活动线程总数。
此查询显示过去 15 分钟内 HTTP 响应时间的第 85 个百分位数:cumulativePercentile(85, mavg(15m, deriv(sum(ts(http.server.duration), le))))。在这种情况下,85% 的 HTTP 响应时间为 98.75 毫秒或更短。
注意:此查询最多可能需要 15 分钟才能完成。
VMware Aria Applications Operations 的遥测数据功能提供了分布式系统的单一、简洁的视图,但只有检测的应用程序才能实现。好消息是,OpenTelemetry提供了一组标准的API和库来检测我们的系统,它为跨语言和框架自动检测应用程序提供了基础。