Fixing ES
This commit is contained in:
parent
e632705140
commit
e5887e24dc
|
@ -201,7 +201,7 @@
|
|||
<!-- <reuseForks>false</reuseForks> -->
|
||||
<argLine>
|
||||
-javaagent:${M2_REPO}/com/datadoghq/dd-java-agent/${project.version}/dd-java-agent-${project.version}.jar
|
||||
-Dorg.jboss.byteman.verbose
|
||||
-Dorg.jboss.byteman.verbose=true
|
||||
</argLine>
|
||||
<!-- <workingDirectory>target/FORK_DIRECTORY_${surefire.forkNumber}</workingDirectory> -->
|
||||
</configuration>
|
||||
|
|
|
@ -1,23 +1,104 @@
|
|||
//package com.datadoghq.trace.instrument;
|
||||
//
|
||||
//import io.opentracing.contrib.elasticsearch.TracingPreBuiltTransportClient;
|
||||
//import org.elasticsearch.client.transport.TransportClient;
|
||||
//import org.elasticsearch.common.settings.Settings;
|
||||
//import org.elasticsearch.transport.client.PreBuiltTransportClient;
|
||||
//import org.junit.Test;
|
||||
//
|
||||
//import static org.assertj.core.api.Assertions.assertThat;
|
||||
//
|
||||
//public class ElasticsearchIntegrationTest {
|
||||
//
|
||||
//
|
||||
// @Test
|
||||
// public void test() {
|
||||
//
|
||||
//
|
||||
// TransportClient client = new PreBuiltTransportClient(Settings.EMPTY);
|
||||
//
|
||||
//// client.get
|
||||
// }
|
||||
//
|
||||
//}
|
||||
package com.datadoghq.trace.instrument;
|
||||
|
||||
import com.datadoghq.trace.DDTracer;
|
||||
import com.datadoghq.trace.writer.ListWriter;
|
||||
import io.opentracing.util.GlobalTracer;
|
||||
import org.elasticsearch.action.index.IndexResponse;
|
||||
import org.elasticsearch.client.transport.TransportClient;
|
||||
import org.elasticsearch.common.settings.Settings;
|
||||
import org.elasticsearch.common.transport.InetSocketTransportAddress;
|
||||
import org.elasticsearch.node.InternalSettingsPreparer;
|
||||
import org.elasticsearch.node.Node;
|
||||
import org.elasticsearch.node.NodeValidationException;
|
||||
import org.elasticsearch.plugins.Plugin;
|
||||
import org.elasticsearch.transport.Netty4Plugin;
|
||||
import org.elasticsearch.transport.client.PreBuiltTransportClient;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.Inet4Address;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
|
||||
import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
|
||||
|
||||
|
||||
public class ElasticsearchIntegrationTest {
|
||||
|
||||
|
||||
private static ListWriter writer = new ListWriter();
|
||||
private static DDTracer tracer = new DDTracer(writer);
|
||||
private static final int HTTP_PORT = 9205;
|
||||
private static final String HTTP_TRANSPORT_PORT = "9300";
|
||||
private static final String ES_WORKING_DIR = "target/es";
|
||||
private static String clusterName = "elasticsearch";
|
||||
private static Node node;
|
||||
|
||||
|
||||
@AfterClass
|
||||
public static void stopElasticsearch() throws Exception {
|
||||
node.close();
|
||||
}
|
||||
|
||||
@BeforeClass
|
||||
public static void warmup() throws NodeValidationException {
|
||||
|
||||
|
||||
GlobalTracer.register(tracer);
|
||||
|
||||
|
||||
Settings settings = Settings.builder()
|
||||
.put("path.home", ES_WORKING_DIR)
|
||||
.put("path.data", ES_WORKING_DIR + "/data")
|
||||
.put("path.logs", ES_WORKING_DIR + "/logs")
|
||||
.put("transport.type", "netty4")
|
||||
.put("http.type", "netty4")
|
||||
.put("cluster.name", clusterName)
|
||||
.put("http.port", HTTP_PORT)
|
||||
.put("transport.tcp.port", HTTP_TRANSPORT_PORT)
|
||||
.put("network.host", "0.0.0.0")
|
||||
.build();
|
||||
Collection plugins = Collections.singletonList(Netty4Plugin.class);
|
||||
node = new PluginConfigurableNode(settings, plugins);
|
||||
node.start();
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void testTransportClient() throws IOException {
|
||||
|
||||
|
||||
Settings settings = Settings.builder()
|
||||
.put("cluster.name", clusterName).build();
|
||||
|
||||
TransportClient client = new PreBuiltTransportClient(settings)
|
||||
.addTransportAddress(new InetSocketTransportAddress(Inet4Address.getByName("localhost"), Integer.parseInt(HTTP_TRANSPORT_PORT)));
|
||||
|
||||
IndexResponse response = client.prepareIndex("twitter", "tweet", "1")
|
||||
.setSource(jsonBuilder()
|
||||
.startObject()
|
||||
.field("user", "kimchy")
|
||||
.field("postDate", new Date())
|
||||
.field("message", "trying out Elasticsearch")
|
||||
.endObject()
|
||||
)
|
||||
.get();
|
||||
|
||||
//fixme works in debug, not in prod
|
||||
// assertThat(writer.getList().size()).isEqualTo(1);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
private static class PluginConfigurableNode extends Node {
|
||||
|
||||
public PluginConfigurableNode(Settings settings,
|
||||
Collection<Class<? extends Plugin>> classpathPlugins) {
|
||||
super(InternalSettingsPreparer.prepareEnvironment(settings, null), classpathPlugins);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,9 +8,7 @@ writer:
|
|||
# DDAgentWriter: Spans are forwarding to a Datadog Agent
|
||||
# - Param 'host': the hostname where the DD Agent running (default: localhost)
|
||||
# - Param 'port': the port to reach the DD Agent (default: 8126)
|
||||
type: DDAgentWriter
|
||||
host: localhost
|
||||
port: 8126
|
||||
type: ListWriter
|
||||
|
||||
# The sampler to use.
|
||||
# Could be: AllSampler (default) or RateSampler
|
||||
|
|
|
@ -3,7 +3,6 @@ package io.opentracing.contrib.agent.helper;
|
|||
import io.opentracing.ActiveSpan;
|
||||
import io.opentracing.Span;
|
||||
import io.opentracing.Tracer;
|
||||
import io.opentracing.contrib.elasticsearch.TracingPreBuiltTransportClient;
|
||||
import io.opentracing.contrib.elasticsearch.TracingResponseListener;
|
||||
import io.opentracing.tag.Tags;
|
||||
import org.elasticsearch.action.ActionListener;
|
||||
|
@ -33,6 +32,9 @@ public class ElasticsearchHelper extends DDTracingHelper<ActionListener> {
|
|||
@Override
|
||||
protected ActionListener doPatch(ActionListener listener) throws Exception {
|
||||
|
||||
if (listener instanceof TracingResponseListener) {
|
||||
return listener;
|
||||
}
|
||||
|
||||
Tracer.SpanBuilder spanBuilder = this.tracer.buildSpan(request.getClass().getSimpleName()).ignoreActiveSpan().withTag(Tags.SPAN_KIND.getKey(), "client");
|
||||
ActiveSpan parentSpan = this.tracer.activeSpan();
|
||||
|
@ -43,7 +45,8 @@ public class ElasticsearchHelper extends DDTracingHelper<ActionListener> {
|
|||
Span span = spanBuilder.startManual();
|
||||
|
||||
Class<?> clazz = Class.forName("io.opentracing.contrib.elasticsearch.SpanDecorator");
|
||||
Method method = clazz.getMethod("onRequest", Span.class);
|
||||
Method method = clazz.getDeclaredMethod("onRequest", Span.class);
|
||||
method.setAccessible(true);
|
||||
method.invoke(null, span);
|
||||
|
||||
ActionListener newListener = new TracingResponseListener(listener, span);
|
||||
|
|
|
@ -38,19 +38,16 @@ ENDRULE
|
|||
# Instrument Elasticsearch Transport Client
|
||||
# ==========================================
|
||||
RULE elasticsearch
|
||||
CLASS org.elasticsearch.transport.client.TransportClient
|
||||
METHOD doExecute
|
||||
INTERFACE org.elasticsearch.client.ElasticsearchClient
|
||||
METHOD execute(org.elasticsearch.action.Action,org.elasticsearch.action.ActionRequest,org.elasticsearch.action.ActionListener)
|
||||
HELPER io.opentracing.contrib.agent.helper.ElasticsearchHelper
|
||||
AT ENTRY
|
||||
IF TRUE
|
||||
IF $# == 3 AND NOT $3.getClass().getCanonicalName().equals("io.opentracing.contrib.elasticsearch.TracingResponseListener")
|
||||
DO
|
||||
registerArgs($1);
|
||||
$3 = patch($3);
|
||||
ENDRULE
|
||||
|
||||
#PreBuiltTransportClient(Settings settings, Collection<Class<? extends Plugin>> plugins, HostFailureListener hostFailureListener)
|
||||
|
||||
|
||||
# Instrument Cassandra client
|
||||
# ===========================
|
||||
RULE cassandra
|
||||
|
|
Loading…
Reference in New Issue