From b52d09bc6f1c2d76d987ff4561bfebc8bf865ec7 Mon Sep 17 00:00:00 2001 From: Sylvain Juge Date: Wed, 25 May 2022 18:08:50 +0200 Subject: [PATCH 1/4] reproduce + add instructions --- go.sh | 26 +++++++++++++++ .../apm/opbeans/OpbeansApplication.java | 33 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100755 go.sh diff --git a/go.sh b/go.sh new file mode 100755 index 0000000..bbd527d --- /dev/null +++ b/go.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +java -version + +cd opbeans + +#./mvnw clean package + +export ELASTIC_APM_SERVICE_NAME=opbeans-debug +export ELASTIC_APM_SERVER_URL=http://localhost:8200 +export ELASTIC_APM_APPLICATION_PACKAGES=co.elastic.apm.opbeans +export ELASTIC_APM_ENABLE_LOG_CORRELATION=true +export ELASTIC_APM_ENABLE_EXPERIMENTAL_INSTRUMENTATIONS=true +export ELASTIC_APM_ENVIRONMENT=debug + +dl_agent_version=1.31.0 +curl -O https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/${dl_agent_version}/elastic-apm-agent-${dl_agent_version}.jar +agent_jar=elastic-apm-agent-${dl_agent_version}.jar + +app_jar=target/opbeans-0.0.1-SNAPSHOT.jar + +java \ +-javaagent:${agent_jar} \ +-jar ${app_jar} + +cd - diff --git a/opbeans/src/main/java/co/elastic/apm/opbeans/OpbeansApplication.java b/opbeans/src/main/java/co/elastic/apm/opbeans/OpbeansApplication.java index 40a6307..39d4db7 100644 --- a/opbeans/src/main/java/co/elastic/apm/opbeans/OpbeansApplication.java +++ b/opbeans/src/main/java/co/elastic/apm/opbeans/OpbeansApplication.java @@ -19,6 +19,9 @@ */ package co.elastic.apm.opbeans; +import io.opentelemetry.api.GlobalOpenTelemetry; +import io.opentelemetry.api.trace.Span; +import io.opentelemetry.api.trace.Tracer; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -26,6 +29,36 @@ public class OpbeansApplication { public static void main(String[] args) { + + Thread t = new Thread(){ + @Override + public void run() { + try { + sleep(5000); + } catch (InterruptedException e) { + // ignored + } + + Tracer tracer = GlobalOpenTelemetry.get().getTracer("co.elastic.apm:opbeans"); + + Span span = tracer.spanBuilder("fake HTTP transaction") + .startSpan() + .setAttribute("http.method", "GET") + .setAttribute("http.status_code", 200); + + try { + sleep(100); + } catch (InterruptedException e) { + // ignored + } + + span.end(); + + } + }; + + t.start(); + SpringApplication.run(OpbeansApplication.class, args); } } From b5c397afac2f2ba72899e8c539699075b2f4264a Mon Sep 17 00:00:00 2001 From: Sylvain Juge Date: Wed, 25 May 2022 18:19:26 +0200 Subject: [PATCH 2/4] re-build + add http.url --- go.sh | 2 +- .../main/java/co/elastic/apm/opbeans/OpbeansApplication.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/go.sh b/go.sh index bbd527d..047077d 100755 --- a/go.sh +++ b/go.sh @@ -4,7 +4,7 @@ java -version cd opbeans -#./mvnw clean package +./mvnw clean package export ELASTIC_APM_SERVICE_NAME=opbeans-debug export ELASTIC_APM_SERVER_URL=http://localhost:8200 diff --git a/opbeans/src/main/java/co/elastic/apm/opbeans/OpbeansApplication.java b/opbeans/src/main/java/co/elastic/apm/opbeans/OpbeansApplication.java index 39d4db7..2b7c8c3 100644 --- a/opbeans/src/main/java/co/elastic/apm/opbeans/OpbeansApplication.java +++ b/opbeans/src/main/java/co/elastic/apm/opbeans/OpbeansApplication.java @@ -43,6 +43,7 @@ public void run() { Span span = tracer.spanBuilder("fake HTTP transaction") .startSpan() + .setAttribute("http.url", "http://localhost:8080/") .setAttribute("http.method", "GET") .setAttribute("http.status_code", 200); From a03302acc44bca81e788bfba913edcaa4bac35f7 Mon Sep 17 00:00:00 2001 From: Sylvain Juge Date: Wed, 1 Jun 2022 11:38:51 +0200 Subject: [PATCH 3/4] set span kind + status --- .../java/co/elastic/apm/opbeans/OpbeansApplication.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/opbeans/src/main/java/co/elastic/apm/opbeans/OpbeansApplication.java b/opbeans/src/main/java/co/elastic/apm/opbeans/OpbeansApplication.java index 2b7c8c3..48e0f60 100644 --- a/opbeans/src/main/java/co/elastic/apm/opbeans/OpbeansApplication.java +++ b/opbeans/src/main/java/co/elastic/apm/opbeans/OpbeansApplication.java @@ -21,6 +21,8 @@ import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.trace.Span; +import io.opentelemetry.api.trace.SpanKind; +import io.opentelemetry.api.trace.StatusCode; import io.opentelemetry.api.trace.Tracer; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -42,6 +44,7 @@ public void run() { Tracer tracer = GlobalOpenTelemetry.get().getTracer("co.elastic.apm:opbeans"); Span span = tracer.spanBuilder("fake HTTP transaction") + .setSpanKind(SpanKind.SERVER) .startSpan() .setAttribute("http.url", "http://localhost:8080/") .setAttribute("http.method", "GET") @@ -53,7 +56,8 @@ public void run() { // ignored } - span.end(); + span.setStatus(StatusCode.OK) + .end(); } }; From 5b810646a9624f872460f688e73a5a874a75d41c Mon Sep 17 00:00:00 2001 From: Sylvain Juge Date: Wed, 1 Jun 2022 16:31:43 +0200 Subject: [PATCH 4/4] update go.sh to use latest snapshot --- go.sh | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/go.sh b/go.sh index 047077d..01d5083 100755 --- a/go.sh +++ b/go.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/env bash java -version @@ -13,14 +13,22 @@ export ELASTIC_APM_ENABLE_LOG_CORRELATION=true export ELASTIC_APM_ENABLE_EXPERIMENTAL_INSTRUMENTATIONS=true export ELASTIC_APM_ENVIRONMENT=debug +# get released agent dl_agent_version=1.31.0 -curl -O https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/${dl_agent_version}/elastic-apm-agent-${dl_agent_version}.jar -agent_jar=elastic-apm-agent-${dl_agent_version}.jar +curl -s -o elastic-apm-agent.jar "https://repo1.maven.org/maven2/co/elastic/apm/elastic-apm-agent/${dl_agent_version}/elastic-apm-agent-${dl_agent_version}.jar" +# get latest snapshot +curl -s -o elastic-apm-agent.jar --location 'https://apm-ci.elastic.co/job/apm-agent-java/job/apm-agent-java-mbp/job/main/lastSuccessfulBuild/artifact/src/github.com/elastic/apm-agent-java/elastic-apm-agent/target/elastic-apm-agent-1.31.1-SNAPSHOT.jar' + +agent_jar=elastic-apm-agent.jar app_jar=target/opbeans-0.0.1-SNAPSHOT.jar +agent_opts=-javaagent:${agent_jar} + +#debug_opts='-agentlib:jdwp=transport=dt_socket,server=n,address=localhost:5005,suspend=y' java \ --javaagent:${agent_jar} \ +${debug_opts:-} \ +${agent_opts:-} \ -jar ${app_jar} cd -