Merge branch 'master' of https://github.com/wu-sheng/sky-walking
* 'master' of https://github.com/wu-sheng/sky-walking: update docker image version Update the http port of collector server Provide new data protocol for segment messages. chore(collector): add a check for process id in startup script
This commit is contained in:
commit
5ff0e98746
|
|
@ -24,10 +24,14 @@ echo "Starting collector...."
|
||||||
eval exec "\"$_RUNJAVA\" ${JAVA_OPTS} -classpath $CLASSPATH org.skywalking.apm.collector.worker.CollectorBootStartUp \
|
eval exec "\"$_RUNJAVA\" ${JAVA_OPTS} -classpath $CLASSPATH org.skywalking.apm.collector.worker.CollectorBootStartUp \
|
||||||
2>${COLLECTOR_LOGS_DIR}/collector.log 1> /dev/null &"
|
2>${COLLECTOR_LOGS_DIR}/collector.log 1> /dev/null &"
|
||||||
|
|
||||||
if [ $? -eq 0 ]; then
|
retval=$?
|
||||||
sleep 1
|
pid=$!
|
||||||
echo "Collector started successfully!"
|
FAIL_MSG="Collector started failure!"
|
||||||
else
|
SUCCESS_MSG="Collector started successfully!"
|
||||||
echo "Collector started failure!"
|
[ ${retval} -eq 0 ] || (echo ${FAIL_MSG}; exit ${retval})
|
||||||
exit 1
|
sleep 1
|
||||||
|
if ! ps -p ${pid} > /dev/null ; then
|
||||||
|
echo ${FAIL_MSG}
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
echo ${SUCCESS_MSG}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,6 @@
|
||||||
package org.skywalking.apm.trace;
|
package org.skywalking.apm.trace;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.GsonBuilder;
|
|
||||||
import com.google.gson.TypeAdapter;
|
|
||||||
import com.google.gson.annotations.JsonAdapter;
|
|
||||||
import com.google.gson.stream.JsonReader;
|
|
||||||
import com.google.gson.stream.JsonWriter;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -18,7 +11,6 @@ import java.util.List;
|
||||||
*
|
*
|
||||||
* @author wusheng
|
* @author wusheng
|
||||||
*/
|
*/
|
||||||
@JsonAdapter(SegmentsMessage.Serializer.class)
|
|
||||||
public class SegmentsMessage {
|
public class SegmentsMessage {
|
||||||
private List<TraceSegment> segments;
|
private List<TraceSegment> segments;
|
||||||
|
|
||||||
|
|
@ -34,40 +26,23 @@ public class SegmentsMessage {
|
||||||
return Collections.unmodifiableList(segments);
|
return Collections.unmodifiableList(segments);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Serializer extends TypeAdapter<SegmentsMessage> {
|
/**
|
||||||
|
* This serialization mechanism started from 3.1, it is similar to network package.
|
||||||
@Override
|
* The data protocol is
|
||||||
public void write(JsonWriter out, SegmentsMessage value) throws IOException {
|
*
|
||||||
Gson gson = new GsonBuilder()
|
* segment1.json.length + ' '(one blank space) + segment1.json
|
||||||
.excludeFieldsWithoutExposeAnnotation()
|
* + segment2.json.length + ' '(one blank space) + segment2.json
|
||||||
.create();
|
* + etc.
|
||||||
|
*
|
||||||
out.beginArray();
|
* @param gson the serializer for {@link TraceSegment}
|
||||||
try {
|
* @return the string represents the <code>SegmentMessage</code>
|
||||||
for (TraceSegment segment : value.segments) {
|
*/
|
||||||
out.jsonValue(gson.toJson(segment));
|
public String serialize(Gson gson) {
|
||||||
}
|
StringBuilder buffer = new StringBuilder();
|
||||||
} finally {
|
for (TraceSegment segment : segments) {
|
||||||
out.endArray();
|
String segmentJson = gson.toJson(segment);
|
||||||
}
|
buffer.append(segmentJson.length()).append(' ').append(segmentJson);
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public SegmentsMessage read(JsonReader in) throws IOException {
|
|
||||||
SegmentsMessage message = new SegmentsMessage();
|
|
||||||
in.beginArray();
|
|
||||||
Gson gson = new GsonBuilder()
|
|
||||||
.excludeFieldsWithoutExposeAnnotation()
|
|
||||||
.create();
|
|
||||||
try {
|
|
||||||
while (in.hasNext()) {
|
|
||||||
TraceSegment traceSegment = gson.fromJson(in, TraceSegment.class);
|
|
||||||
message.append(traceSegment);
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
in.endArray();
|
|
||||||
}
|
|
||||||
return message;
|
|
||||||
}
|
}
|
||||||
|
return buffer.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -108,15 +108,18 @@ public class TraceSegmentTestCase {
|
||||||
|
|
||||||
SegmentsMessage message = new SegmentsMessage();
|
SegmentsMessage message = new SegmentsMessage();
|
||||||
message.append(segment);
|
message.append(segment);
|
||||||
String json = gson.toJson(message);
|
|
||||||
|
|
||||||
message = gson.fromJson(json, SegmentsMessage.class);
|
String jsonString = message.serialize(gson);
|
||||||
|
int length = Integer.parseInt(jsonString.substring(0, 4));
|
||||||
|
|
||||||
TraceSegment newSegment = message.getSegments().get(0);
|
String segmentJson = jsonString.substring(5);
|
||||||
|
|
||||||
Assert.assertEquals(segment.getSpans().size(), newSegment.getSpans().size());
|
Assert.assertEquals(length, segmentJson.length());
|
||||||
Assert.assertEquals(segment.getRefs().get(0).getTraceSegmentId(), newSegment.getRefs().get(0).getTraceSegmentId());
|
TraceSegment recoverySegment = gson.fromJson(segmentJson, TraceSegment.class);
|
||||||
Assert.assertEquals(Tags.SPAN_LAYER.get(segment.getSpans().get(1)), Tags.SPAN_LAYER.get(newSegment.getSpans().get(1)));
|
|
||||||
Assert.assertEquals(segment.getSpans().get(1).getLogs().get(0).getTime(), newSegment.getSpans().get(1).getLogs().get(0).getTime());
|
Assert.assertEquals(segment.getSpans().size(), recoverySegment.getSpans().size());
|
||||||
|
Assert.assertEquals(segment.getRefs().get(0).getTraceSegmentId(), recoverySegment.getRefs().get(0).getTraceSegmentId());
|
||||||
|
Assert.assertEquals(Tags.SPAN_LAYER.get(segment.getSpans().get(1)), Tags.SPAN_LAYER.get(recoverySegment.getSpans().get(1)));
|
||||||
|
Assert.assertEquals(segment.getSpans().get(1).getLogs().get(0).getTime(), recoverySegment.getSpans().get(1).getLogs().get(0).getTime());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ public class CollectorClient implements Runnable {
|
||||||
private static long SLEEP_TIME_MILLIS = 500;
|
private static long SLEEP_TIME_MILLIS = 500;
|
||||||
private String[] serverList;
|
private String[] serverList;
|
||||||
private volatile int selectedServer = -1;
|
private volatile int selectedServer = -1;
|
||||||
|
private Gson serializer;
|
||||||
|
|
||||||
public CollectorClient() {
|
public CollectorClient() {
|
||||||
serverList = Config.Collector.SERVERS.split(",");
|
serverList = Config.Collector.SERVERS.split(",");
|
||||||
|
|
@ -39,6 +40,9 @@ public class CollectorClient implements Runnable {
|
||||||
if (serverList.length > 0) {
|
if (serverList.length > 0) {
|
||||||
selectedServer = r.nextInt(serverList.length);
|
selectedServer = r.nextInt(serverList.length);
|
||||||
}
|
}
|
||||||
|
serializer = new GsonBuilder()
|
||||||
|
.excludeFieldsWithoutExposeAnnotation()
|
||||||
|
.create();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -84,10 +88,7 @@ public class CollectorClient implements Runnable {
|
||||||
if (message == null) {
|
if (message == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Gson gson = new GsonBuilder()
|
String messageJson = message.serialize(serializer);
|
||||||
.excludeFieldsWithoutExposeAnnotation()
|
|
||||||
.create();
|
|
||||||
String messageJson = gson.toJson(message);
|
|
||||||
CloseableHttpClient httpClient = HttpClients.custom().build();
|
CloseableHttpClient httpClient = HttpClients.custom().build();
|
||||||
try {
|
try {
|
||||||
HttpPost httpPost = ready2Send(messageJson);
|
HttpPost httpPost = ready2Send(messageJson);
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
version: '2.1'
|
version: '2.1'
|
||||||
services:
|
services:
|
||||||
skywalking-webui:
|
skywalking-webui:
|
||||||
image: sky-walking-ui:3.0.1-2017
|
image: sky-walking-ui:3.1-2017
|
||||||
expose:
|
expose:
|
||||||
- "8080"
|
- "8080"
|
||||||
ports:
|
ports:
|
||||||
|
|
@ -9,10 +9,10 @@ services:
|
||||||
links:
|
links:
|
||||||
- skywalking-collector
|
- skywalking-collector
|
||||||
environment:
|
environment:
|
||||||
- COLLECTOR_SERVERS=skywalking-collector:7001
|
- COLLECTOR_SERVERS=skywalking-collector:12800
|
||||||
|
|
||||||
skywalking-collector:
|
skywalking-collector:
|
||||||
image: skywalking-collector:3.0.1-2017
|
image: skywalking-collector:3.1-2017
|
||||||
expose:
|
expose:
|
||||||
- "12800"
|
- "12800"
|
||||||
- "1000"
|
- "1000"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue