[example] add Spark framework example (#60)
* [example] add Spark framework example * [example] formatting
This commit is contained in:
parent
864db966f1
commit
d10e8e0c34
|
@ -0,0 +1,12 @@
|
||||||
|
mongo:
|
||||||
|
image: mongo:3.2
|
||||||
|
ports:
|
||||||
|
- "127.0.0.1:27017:27017"
|
||||||
|
|
||||||
|
ddagent:
|
||||||
|
image: datadog/docker-dd-agent
|
||||||
|
environment:
|
||||||
|
- DD_BIND_HOST=0.0.0.0
|
||||||
|
- DD_API_KEY
|
||||||
|
ports:
|
||||||
|
- "127.0.0.1:8126:8126"
|
|
@ -0,0 +1,19 @@
|
||||||
|
apply from: "${rootDir}/gradle/java.gradle"
|
||||||
|
apply from: "${rootDir}/gradle/jacoco.gradle"
|
||||||
|
|
||||||
|
version = 'demo'
|
||||||
|
description = 'rest-spark'
|
||||||
|
|
||||||
|
sourceCompatibility = 1.8
|
||||||
|
targetCompatibility = 1.8
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
|
||||||
|
// compile fileTree(dir: 'libs', include: ['*.jar'])
|
||||||
|
compile project(':dd-trace')
|
||||||
|
compile 'com.sparkjava:spark-core:2.6.0'
|
||||||
|
compile 'org.mongodb:mongodb-driver:3.4.2'
|
||||||
|
compile 'io.opentracing:opentracing-api:0.30.0'
|
||||||
|
compile 'io.opentracing:opentracing-util:0.30.0'
|
||||||
|
compile 'io.opentracing.contrib:opentracing-mongo-driver:0.0.2'
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
import static spark.Spark.*;
|
||||||
|
|
||||||
|
import com.datadoghq.trace.resolver.DDTracerFactory;
|
||||||
|
import com.mongodb.client.MongoCollection;
|
||||||
|
import com.mongodb.client.MongoDatabase;
|
||||||
|
import io.opentracing.ActiveSpan;
|
||||||
|
import io.opentracing.Tracer;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import org.bson.Document;
|
||||||
|
|
||||||
|
public class Hello {
|
||||||
|
private static MongoDatabase mDatabase;
|
||||||
|
private static Tracer mTracer;
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
// Init the tracer from the configuration file
|
||||||
|
mTracer = DDTracerFactory.createFromConfigurationFile();
|
||||||
|
io.opentracing.util.GlobalTracer.register(mTracer);
|
||||||
|
|
||||||
|
// initialize the Mongo database
|
||||||
|
mDatabase = MongoDriver.getDatabase("rest_spark");
|
||||||
|
|
||||||
|
// our routes
|
||||||
|
get("/healthz", (req, res) -> "OK!");
|
||||||
|
get(
|
||||||
|
"/key/:id",
|
||||||
|
(req, res) -> {
|
||||||
|
try (ActiveSpan activeSpan = mTracer.buildSpan("spark.request").startActive()) {
|
||||||
|
activeSpan.setTag("http.url", req.url());
|
||||||
|
|
||||||
|
String id = req.params(":id");
|
||||||
|
|
||||||
|
// create a collection
|
||||||
|
Document doc =
|
||||||
|
new Document("name", "MongoDB")
|
||||||
|
.append("type", "database")
|
||||||
|
.append("identifier", id)
|
||||||
|
.append("versions", Arrays.asList("v3.2", "v3.0", "v2.6"))
|
||||||
|
.append("info", new Document("x", 203).append("y", 102));
|
||||||
|
|
||||||
|
MongoCollection<Document> collection = mDatabase.getCollection("calls");
|
||||||
|
collection.insertOne(doc);
|
||||||
|
|
||||||
|
// write the count somewhere
|
||||||
|
System.out.println(collection.count());
|
||||||
|
|
||||||
|
return "Stored!";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
import com.mongodb.MongoClient;
|
||||||
|
import com.mongodb.MongoClientURI;
|
||||||
|
import com.mongodb.client.MongoDatabase;
|
||||||
|
import io.opentracing.Tracer;
|
||||||
|
import io.opentracing.contrib.mongo.TracingMongoClient;
|
||||||
|
|
||||||
|
public class MongoDriver {
|
||||||
|
|
||||||
|
public static MongoDatabase getDatabase(String dbName) {
|
||||||
|
Tracer tracer = io.opentracing.util.GlobalTracer.get();
|
||||||
|
MongoClientURI connectionString = new MongoClientURI("mongodb://localhost:27017");
|
||||||
|
MongoClient mongoClient = new TracingMongoClient(tracer, connectionString);
|
||||||
|
return mongoClient.getDatabase(dbName);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
# Main service name for the app
|
||||||
|
defaultServiceName: rest-spark
|
||||||
|
|
||||||
|
# The writer to use.
|
||||||
|
# Could be: LoggingWritter or DDAgentWriter (default)
|
||||||
|
writer:
|
||||||
|
# LoggingWriter: Spans are logged using the application configuration
|
||||||
|
# DDAgentWriter: Spans are forwarding to a Datadog trace Agent
|
||||||
|
# - Param 'host': the hostname where the DD trace Agent is running (default: localhost)
|
||||||
|
# - Param 'port': the port to reach the DD trace Agent (default: 8126)
|
||||||
|
type: DDAgentWriter
|
||||||
|
host: localhost
|
||||||
|
port: 8126
|
||||||
|
|
||||||
|
# The sampler to use.
|
||||||
|
# Could be: AllSampler (default) or RateSampler
|
||||||
|
sampler:
|
||||||
|
# AllSampler: all spans are reported to the writer
|
||||||
|
# RateSample: only a portion of spans are reported to the writer
|
||||||
|
# - Param 'rate': the portion of spans to keep
|
||||||
|
type: AllSampler
|
||||||
|
# Skip some traces if the root span tag values matches some regexp patterns
|
||||||
|
# skipTagsPatterns: {"http.url": ".*/demo/add.*"}
|
||||||
|
|
||||||
|
# Enable custom tracing (Custom annotations for now)
|
||||||
|
# enableCustomAnnotationTracingOver: ["io","org","com"]
|
||||||
|
|
||||||
|
# Disable some instrumentations
|
||||||
|
# disabledInstrumentations: ["opentracing-apache-httpclient", "opentracing-mongo-driver", "opentracing-web-servlet-filter"]
|
||||||
|
|
||||||
|
decorators:
|
||||||
|
- type: DBComponent
|
||||||
|
matchingValue: java-mongo
|
||||||
|
setValue: mongo-spark
|
|
@ -6,6 +6,7 @@ include ':dd-java-agent-ittests'
|
||||||
include ':dd-trace-examples:async-tracing'
|
include ':dd-trace-examples:async-tracing'
|
||||||
include ':dd-trace-examples:dropwizard-mongo-client'
|
include ':dd-trace-examples:dropwizard-mongo-client'
|
||||||
include ':dd-trace-examples:spring-boot-jdbc'
|
include ':dd-trace-examples:spring-boot-jdbc'
|
||||||
|
include ':dd-trace-examples:rest-spark'
|
||||||
include ':dd-trace-examples'
|
include ':dd-trace-examples'
|
||||||
include ':dd-trace-annotations'
|
include ':dd-trace-annotations'
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue