Java语言接入
概述
本文介绍Java语言的应用接入流程,点击“应用性能监控->应用列表->新建应用”进入到接入应用页面。

接入流程
点击进入到接入应用页面,可切换语言查看接入流程,按照流程接入后即可在“应用性能监控->应用列表”显示接入的应用

OpenTelemetry
步骤 1:获取接入点和鉴权
注:该信息因地域和用户而异,可在控制台“接入应用”页面获取,下方为示例
- 接入点:http://apm-collector.bj.baidubce.com
- Authentication:UFSpMM***lnFrVBqtPDK
步骤 2:下载探针
下载探针,推荐下载最新版本,探针名为 opentelemetry-javaagent.jar。下载链接: https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases?spm=5176.28197633.0.0.24797770OL3M3n
步骤 3:修改上报参数
接入 Java 应用需要用到如下 3 个 JVM 启动参数
1-Dotel.resource.attributes=service.name=<serviceName>
2-Dotel.exporter.otlp.headers=Authentication=<Authentication>
3-Dotel.exporter.otlp.endpoint=<endpoint>
4-javaagent:<javaagent>
5-Dotel.logs.exporter=none
在执行 Java 命令的时候,请确保这 3 个 JVM 启动参数放在 javaagent 之前。 对应的字段说明如下:
| 参数 | 描述 | 示例 |
|---|---|---|
| <javaagent> | 步骤2中探针对应的本地文件路径 | /home/work/OpenTelemetryAgent270/opentelemetry-javaagent.jar |
| <serviceName> | 应用名,多个使用相同应用名接入的进程,在 APM 中会表现为相同应用下的多个实例。对于 Spring Cloud 或 Dubbo 应用,应用名通常和服务名保持一致 | csm |
| <Authentication> | 步骤 1 中拿到业务系统 Authentication | UFSpMM***lnFrVBqtPDK |
| <endpoint> | 步骤 1 中拿到的接入点 | http://apm-collector.bj.baidubce.com |
步骤4:接入验证
完成 3 个接入步骤后,启动 Java 应用,应用程序将挂载探针,并连接到百度云 APM 服务端上报监控数据。在有正常流量的情况下,<应用性能监控>→<应用列表>中将展示接入的应用,由于数据的处理存在一定延时,如果接入后在控制台没有查询到应用,请等待 30 秒左右。
Jaeger
步骤 1:获取接入点和鉴权
注:该信息因地域和用户而异,可在控制台“接入应用”页面获取,下方为示例
- 接入点:http://apm-collector.bj.baidubce.com
- Authentication:UFSpMM***lnFrVBqtPDK
步骤2:设置依赖库
- 添加 jaeger-client 依赖
打开
pom.xml,在dependencies中添加如下内容。
1<dependency>
2 <groupId>io.jaegertracing</groupId>
3 <artifactId>jaeger-client</artifactId>
4 <version>1.8.1</version>
5</dependency>
- 创建 Jaeger 初始化工具类
1package org.example;
2
3import io.jaegertracing.Configuration;
4import io.jaegertracing.internal.JaegerTracer;
5import io.opentracing.Tracer;
6import io.opentracing.util.GlobalTracer;
7import org.slf4j.Logger;
8import org.slf4j.LoggerFactory;
9
10public class JaegerUtil {
11 private static final Logger logger = LoggerFactory.getLogger(JaegerUtil.class);
12
13 static {
14 Configuration.SamplerConfiguration sampler =
15 new Configuration.SamplerConfiguration()
16 .withType("const")
17 .withParam(1);
18
19 Configuration.SenderConfiguration sender =
20 new Configuration.SenderConfiguration()
21 .withEndpoint("http://apm.bj.baidubce.com/api/traces")
22 .withAuthToken("W9q5g************9ID2G");
23
24 Configuration.ReporterConfiguration reporter =
25 new Configuration.ReporterConfiguration()
26 .withFlushInterval(1000)
27 .withMaxQueueSize(10000)
28 .withLogSpans(true)
29 .withSender(sender);
30
31 Configuration config =
32 new Configuration("jaeger-demo")
33 .withSampler(sampler)
34 .withReporter(reporter);
35
36 GlobalTracer.registerIfAbsent(config.getTracer());
37 }
38
39 public static Tracer getTracer() {
40 return GlobalTracer.get();
41 }
42}
- 创建 Span
1public class Demo {
2 public static void main(String[] args) throws Exception {
3 Tracer tracer = JaegerUtil.getTracer();
4 Span span = tracer.buildSpan("demo-span").start();
5 // 模拟业务逻辑
6 Thread.sleep(200);
7 span.finish();
8 }
9}
- 运行程序以生成并上报 Trace 数据
步骤3: 重启验证
配置好后直接重启Java服务,即可开始向APM上传链路数据,在有正常流量的情况下,应用性能监控 > 应用列表 中将展示接入的应用。由于数据的处理存在一定延时,如果接入后在控制台没有查询到应用,请等待 30 秒左右。
SkyWalking
步骤 1:获取接入点和鉴权
注:该信息因地域和用户而异,可在控制台“接入应用”页面获取,下方为示例
- 接入点:http://apm-collector.bj.baidubce.com
- Authentication:UFSpMM***lnFrVBqtPDK
步骤2:下载Agent
打开Skywalking 下载页面,下载SkyWalking 8.X.X或以上版本(建议下载最新稳定版本),并将解压后的Agent文件夹放至Java进程有访问权限的目录。
插件均放置在/plugins目录中。在启动阶段将新的插件放进该目录,即可令插件生效。将插件从该目录删除,即可令其失效。另外,日志文件默认输出到/logs目录中。
步骤3: 配置相应参数及名称
Skywalking Agent 支持多种方式完成参数配置,下面给出配置方式及示例
- 方法1 使用文件配置
修改 SkyWalking Java Agent 配置文件,打开 agent/config/agent.config 文件,设置接入信息和应用信息。
1collector.backend_service=<Endpoint> // 替换为步骤1获取的接入点信息。
2agent.authentication=<Token> // 替换为步骤1获取的鉴权Token。
3agent.service_name=<Service Name> // 替换为您实际的应用名称。
- 方法2 Java VM Options
1java -javaagent:<skywalking-agent-path>/skywalking-agent.jar
2-Dskywalking.collector.backend_service=<Endpoint> // 替换为步骤1获取的接入点信息。
3-Dskywalking.agent.authentication=<Token> // 替换为步骤1获取的鉴权Token。
4-Dskywalking.agent.service_name=<Service Name> // 替换为您实际的应用名称。
- 方法3 设置相应的环境变量
1export SW_AGENT_AUTHENTICATION=<Token> (等效于agent.authentication=<Token>)
2export SW_AGENT_NAME=<Service Name> (等效于agent.service_name=<Service Name>)
3export SW_AGENT_COLLECTOR_BACKEND_SERVICES=<Endpoint>(等效于collector.backend_service=<Endpoint>)
步骤4 :指定插件路径
根据应用的运行环境,选择相应的方法来指定SkyWalking Agent的路径。
请将以下示例代码中的<skywalking-agent-path>替换为Agent文件夹中的skywalking-agent.jar的绝对路径。
- Linux Tomcat 7, Tomcat 8, Tomcat9
在 tomcat/bin/catalina.sh 第一行添加以下内容:
1CATALINA_OPTS="$CATALINA_OPTS -javaagent:<skywalking-agent-path>"; export CATALINA_OPTS
- Windows Tomcat 7, Tomcat 8, Tomcat 9
在 tomcat/bin/catalina.sh 第一行添加以下内容:
1set "CATALINA_OPTS=-javaagent:/path/to/skywalking-agent/skywalking-agent.jar"
- Jetty
编辑jetty.sh, 添加-javaagent到启动应用程序的命令行参数:
1export JAVA_OPTIONS="${JAVA_OPTIONS} -javaagent:/path/to/skywalking-agent/skywalking-agent.jar"
- JAR File 或 Spring Boot
在应用程序的启动命令行中添加 -javaagent 参数(-javaagent 参数一定要放在 -jar 参数之前),参数内容如下:
1java -javaagent:/path/to/skywalking-agent/skywalking-agent.jar -jar yourApp.jar
步骤5 :重启验证
完成上述步骤后,参考 Skywalking 官方指导 重新启动应用,即可开始向APM上传链路数据,在有正常流量的情况下,应用性能监控 > 应用列表 中将展示接入的应用。由于数据的处理存在一定延时,如果接入后在控制台没有查询到应用,请等待 30 秒左右。
评价此篇文章
