I have an application which is made up of multiple services built in proprietary language. I want to collect traces and ingest into Jaeger or APM solution. There is no instrumentation library. However, these services produce traces in a proprietary format. I want to convert these traces to OpenTelemetry traces and ingest into Jaeger or APM solution.
I started using OpenTelemetry-Java SDK.
// This is a just converter service, trying to convert proprietary traces to OLTP
// Not interested in instrumenting this converter service. Following code does not show the proprietary trace reading and conversion for brevity.
// Converter service - reading first service
private static void convert() {
OpenTelemetry openTelemetry = ExampleConfiguration.initOpenTelemetry();
Tracer tracer = openTelemetry.getTracer("io.opentelemetry.example");
Span exampleSpan = tracer.spanBuilder("exampleSpan").startSpan();
childOne(exampleSpan, openTelemetry);
...
}
// Converter service - reading second service
private static void childOne(Span parentSpan, OpenTelemetry openTelemetry) {
Tracer tracer = openTelemetry.getTracer("service2");
Span childSpan = tracer.spanBuilder("child").setParent(Context.current().with(parentSpan)).startSpan();
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
childSpan.end();
}
Configured appropriate exporter. I can see the traces in Jeager as expected.
BUT it shows only one service.
Whereas I want to depict two different services. Is that possible using OpenTelemetry?