Skip to content

Instantly share code, notes, and snippets.

@nathanleclaire
Last active June 19, 2019 22:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nathanleclaire/9c202ba3241fbeab19bee3e41f43193e to your computer and use it in GitHub Desktop.
Save nathanleclaire/9c202ba3241fbeab19bee3e41f43193e to your computer and use it in GitHub Desktop.
public static class DatabaseService {
public void queryDb(String id) {
try (Span childSpan = beeline.startChildSpan("customer-db-query")) {
String data = getCustomerDataById(id);
childSpan.addField("customer-data", data);
}
}
public String getCustomerDataById(String id) {
return "customer-0123";
}
}
import io.honeycomb.beeline.tracing.Beeline;
import io.honeycomb.beeline.tracing.Span;
import io.honeycomb.beeline.tracing.SpanBuilderFactory;
import io.honeycomb.beeline.tracing.SpanPostProcessor;
import io.honeycomb.beeline.tracing.Tracer;
import io.honeycomb.beeline.tracing.Tracing;
import io.honeycomb.beeline.tracing.propagation.HttpHeaderV1PropagationCodec;
import io.honeycomb.beeline.tracing.propagation.Propagation;
import io.honeycomb.beeline.tracing.propagation.PropagationContext;
import io.honeycomb.beeline.tracing.sampling.Sampling;
import io.honeycomb.libhoney.HoneyClient;
import io.honeycomb.libhoney.LibHoney;
private DatabaseService db = new DatabaseService();
public static void main(String... args) {
TracerSpans example = new TracerSpans();
try {
HttpRequest request = new HttpRequest();
String headerValue = request.getHeader(HttpHeaderV1PropagationCodec.HONEYCOMB_TRACE_HEADER);
PropagationContext context = Propagation.honeycombHeaderV1().decode(headerValue);
Span rootSpan = beeline.getSpanBuilderFactory().createBuilder()
.setSpanName("get-customer-data")
.setServiceName("customer-db-traced")
.setParentContext(context)
.build();
beeline.getTracer().startTrace(rootSpan);
Span span = beeline.getActiveSpan();
try {
db.queryDb(request.getParameter("customer-id"));
span.addField("result", "OK");
} catch (Exception e) {
span.addField("result", "Bad Request")
.addField("exception-message", e.getMessage());
}
} finally {
beeline.getTracer().endTrace();
client.close(); // close to flush events and release its thread pool
}
}
import io.honeycomb.beeline.tracing.Beeline;
import io.honeycomb.beeline.tracing.Span;
import io.honeycomb.beeline.tracing.SpanBuilderFactory;
import io.honeycomb.beeline.tracing.SpanPostProcessor;
import io.honeycomb.beeline.tracing.Tracer;
import io.honeycomb.beeline.tracing.Tracing;
import io.honeycomb.beeline.tracing.sampling.Sampling;
import io.honeycomb.libhoney.HoneyClient;
import io.honeycomb.libhoney.LibHoney;
public class TracerSpans {
private static final String WRITE_KEY = "test-write-key";
private static final String DATASET = "test-dataset";
private static final HoneyClient client;
private static final Beeline beeline;
static {
client = LibHoney.create(LibHoney.options().setDataset(DATASET).setWriteKey(WRITE_KEY).build());
SpanPostProcessor postProcessor = Tracing.createSpanProcessor(client, Sampling.alwaysSampler());
SpanBuilderFactory factory = Tracing.createSpanBuilderFactory(postProcessor, Sampling.alwaysSampler());
Tracer tracer = Tracing.createTracer(factory);
beeline = Tracing.createBeeline(tracer, factory);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment