Fixing ES
This commit is contained in:
parent
e632705140
commit
e5887e24dc
|
@ -201,7 +201,7 @@
|
||||||
<!-- <reuseForks>false</reuseForks> -->
|
<!-- <reuseForks>false</reuseForks> -->
|
||||||
<argLine>
|
<argLine>
|
||||||
-javaagent:${M2_REPO}/com/datadoghq/dd-java-agent/${project.version}/dd-java-agent-${project.version}.jar
|
-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>
|
</argLine>
|
||||||
<!-- <workingDirectory>target/FORK_DIRECTORY_${surefire.forkNumber}</workingDirectory> -->
|
<!-- <workingDirectory>target/FORK_DIRECTORY_${surefire.forkNumber}</workingDirectory> -->
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|
|
@ -1,23 +1,104 @@
|
||||||
//package com.datadoghq.trace.instrument;
|
package com.datadoghq.trace.instrument;
|
||||||
//
|
|
||||||
//import io.opentracing.contrib.elasticsearch.TracingPreBuiltTransportClient;
|
import com.datadoghq.trace.DDTracer;
|
||||||
//import org.elasticsearch.client.transport.TransportClient;
|
import com.datadoghq.trace.writer.ListWriter;
|
||||||
//import org.elasticsearch.common.settings.Settings;
|
import io.opentracing.util.GlobalTracer;
|
||||||
//import org.elasticsearch.transport.client.PreBuiltTransportClient;
|
import org.elasticsearch.action.index.IndexResponse;
|
||||||
//import org.junit.Test;
|
import org.elasticsearch.client.transport.TransportClient;
|
||||||
//
|
import org.elasticsearch.common.settings.Settings;
|
||||||
//import static org.assertj.core.api.Assertions.assertThat;
|
import org.elasticsearch.common.transport.InetSocketTransportAddress;
|
||||||
//
|
import org.elasticsearch.node.InternalSettingsPreparer;
|
||||||
//public class ElasticsearchIntegrationTest {
|
import org.elasticsearch.node.Node;
|
||||||
//
|
import org.elasticsearch.node.NodeValidationException;
|
||||||
//
|
import org.elasticsearch.plugins.Plugin;
|
||||||
// @Test
|
import org.elasticsearch.transport.Netty4Plugin;
|
||||||
// public void test() {
|
import org.elasticsearch.transport.client.PreBuiltTransportClient;
|
||||||
//
|
import org.junit.AfterClass;
|
||||||
//
|
import org.junit.BeforeClass;
|
||||||
// TransportClient client = new PreBuiltTransportClient(Settings.EMPTY);
|
import org.junit.Test;
|
||||||
//
|
|
||||||
//// client.get
|
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
|
# DDAgentWriter: Spans are forwarding to a Datadog Agent
|
||||||
# - Param 'host': the hostname where the DD Agent running (default: localhost)
|
# - Param 'host': the hostname where the DD Agent running (default: localhost)
|
||||||
# - Param 'port': the port to reach the DD Agent (default: 8126)
|
# - Param 'port': the port to reach the DD Agent (default: 8126)
|
||||||
type: DDAgentWriter
|
type: ListWriter
|
||||||
host: localhost
|
|
||||||
port: 8126
|
|
||||||
|
|
||||||
# The sampler to use.
|
# The sampler to use.
|
||||||
# Could be: AllSampler (default) or RateSampler
|
# Could be: AllSampler (default) or RateSampler
|
||||||
|
|
|
@ -3,7 +3,6 @@ package io.opentracing.contrib.agent.helper;
|
||||||
import io.opentracing.ActiveSpan;
|
import io.opentracing.ActiveSpan;
|
||||||
import io.opentracing.Span;
|
import io.opentracing.Span;
|
||||||
import io.opentracing.Tracer;
|
import io.opentracing.Tracer;
|
||||||
import io.opentracing.contrib.elasticsearch.TracingPreBuiltTransportClient;
|
|
||||||
import io.opentracing.contrib.elasticsearch.TracingResponseListener;
|
import io.opentracing.contrib.elasticsearch.TracingResponseListener;
|
||||||
import io.opentracing.tag.Tags;
|
import io.opentracing.tag.Tags;
|
||||||
import org.elasticsearch.action.ActionListener;
|
import org.elasticsearch.action.ActionListener;
|
||||||
|
@ -33,6 +32,9 @@ public class ElasticsearchHelper extends DDTracingHelper<ActionListener> {
|
||||||
@Override
|
@Override
|
||||||
protected ActionListener doPatch(ActionListener listener) throws Exception {
|
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");
|
Tracer.SpanBuilder spanBuilder = this.tracer.buildSpan(request.getClass().getSimpleName()).ignoreActiveSpan().withTag(Tags.SPAN_KIND.getKey(), "client");
|
||||||
ActiveSpan parentSpan = this.tracer.activeSpan();
|
ActiveSpan parentSpan = this.tracer.activeSpan();
|
||||||
|
@ -43,7 +45,8 @@ public class ElasticsearchHelper extends DDTracingHelper<ActionListener> {
|
||||||
Span span = spanBuilder.startManual();
|
Span span = spanBuilder.startManual();
|
||||||
|
|
||||||
Class<?> clazz = Class.forName("io.opentracing.contrib.elasticsearch.SpanDecorator");
|
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);
|
method.invoke(null, span);
|
||||||
|
|
||||||
ActionListener newListener = new TracingResponseListener(listener, span);
|
ActionListener newListener = new TracingResponseListener(listener, span);
|
||||||
|
|
|
@ -38,19 +38,16 @@ ENDRULE
|
||||||
# Instrument Elasticsearch Transport Client
|
# Instrument Elasticsearch Transport Client
|
||||||
# ==========================================
|
# ==========================================
|
||||||
RULE elasticsearch
|
RULE elasticsearch
|
||||||
CLASS org.elasticsearch.transport.client.TransportClient
|
INTERFACE org.elasticsearch.client.ElasticsearchClient
|
||||||
METHOD doExecute
|
METHOD execute(org.elasticsearch.action.Action,org.elasticsearch.action.ActionRequest,org.elasticsearch.action.ActionListener)
|
||||||
HELPER io.opentracing.contrib.agent.helper.ElasticsearchHelper
|
HELPER io.opentracing.contrib.agent.helper.ElasticsearchHelper
|
||||||
AT ENTRY
|
AT ENTRY
|
||||||
IF TRUE
|
IF $# == 3 AND NOT $3.getClass().getCanonicalName().equals("io.opentracing.contrib.elasticsearch.TracingResponseListener")
|
||||||
DO
|
DO
|
||||||
registerArgs($1);
|
registerArgs($1);
|
||||||
$3 = patch($3);
|
$3 = patch($3);
|
||||||
ENDRULE
|
ENDRULE
|
||||||
|
|
||||||
#PreBuiltTransportClient(Settings settings, Collection<Class<? extends Plugin>> plugins, HostFailureListener hostFailureListener)
|
|
||||||
|
|
||||||
|
|
||||||
# Instrument Cassandra client
|
# Instrument Cassandra client
|
||||||
# ===========================
|
# ===========================
|
||||||
RULE cassandra
|
RULE cassandra
|
||||||
|
|
Loading…
Reference in New Issue