diff --git a/go.sh b/go.sh new file mode 100755 index 0000000..01d5083 --- /dev/null +++ b/go.sh @@ -0,0 +1,34 @@ +#!/bin/env 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 + +# get released agent +dl_agent_version=1.31.0 +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 \ +${debug_opts:-} \ +${agent_opts:-} \ +-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..48e0f60 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,11 @@ */ package co.elastic.apm.opbeans; +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; @@ -26,6 +31,39 @@ 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") + .setSpanKind(SpanKind.SERVER) + .startSpan() + .setAttribute("http.url", "http://localhost:8080/") + .setAttribute("http.method", "GET") + .setAttribute("http.status_code", 200); + + try { + sleep(100); + } catch (InterruptedException e) { + // ignored + } + + span.setStatus(StatusCode.OK) + .end(); + + } + }; + + t.start(); + SpringApplication.run(OpbeansApplication.class, args); } }