Search in sources :

Example 1 with KeyWithStringValue

use of org.apache.skywalking.apm.network.proto.KeyWithStringValue in project incubator-skywalking by apache.

the class SpanService method load.

public JsonObject load(String segmentId, int spanId) {
    TraceSegmentObject segmentObject = segmentDAO.load(segmentId);
    JsonObject spanJson = new JsonObject();
    List<SpanObject> spans = segmentObject.getSpansList();
    for (SpanObject spanObject : spans) {
        if (spanId == spanObject.getSpanId()) {
            String operationName = spanObject.getOperationName();
            if (spanObject.getOperationNameId() != 0) {
                ServiceName serviceName = serviceNameCacheService.get(spanObject.getOperationNameId());
                if (StringUtils.isNotEmpty(serviceName)) {
                    operationName = serviceName.getServiceName();
                }
            }
            spanJson.addProperty("operationName", operationName);
            spanJson.addProperty("startTime", spanObject.getStartTime());
            spanJson.addProperty("endTime", spanObject.getEndTime());
            JsonArray logsArray = new JsonArray();
            List<LogMessage> logs = spanObject.getLogsList();
            for (LogMessage logMessage : logs) {
                JsonObject logJson = new JsonObject();
                logJson.addProperty("time", logMessage.getTime());
                JsonArray logInfoArray = new JsonArray();
                for (KeyWithStringValue value : logMessage.getDataList()) {
                    JsonObject valueJson = new JsonObject();
                    valueJson.addProperty("key", value.getKey());
                    valueJson.addProperty("value", value.getValue());
                    logInfoArray.add(valueJson);
                }
                logJson.add("logInfo", logInfoArray);
                logsArray.add(logJson);
            }
            spanJson.add("logMessage", logsArray);
            JsonArray tagsArray = new JsonArray();
            JsonObject spanTypeJson = new JsonObject();
            spanTypeJson.addProperty("key", "span type");
            spanTypeJson.addProperty("value", spanObject.getSpanType().name());
            tagsArray.add(spanTypeJson);
            JsonObject componentJson = new JsonObject();
            componentJson.addProperty("key", "component");
            if (spanObject.getComponentId() == 0) {
                componentJson.addProperty("value", spanObject.getComponent());
            } else {
                componentJson.addProperty("value", ComponentsDefine.getInstance().getComponentName(spanObject.getComponentId()));
            }
            tagsArray.add(componentJson);
            JsonObject peerJson = new JsonObject();
            peerJson.addProperty("key", "peer");
            if (spanObject.getPeerId() == 0) {
                peerJson.addProperty("value", spanObject.getPeer());
            } else {
                peerJson.addProperty("value", applicationCacheService.getApplicationById(spanObject.getPeerId()).getApplicationCode());
            }
            tagsArray.add(peerJson);
            for (KeyWithStringValue tagValue : spanObject.getTagsList()) {
                JsonObject tagJson = new JsonObject();
                tagJson.addProperty("key", tagValue.getKey());
                tagJson.addProperty("value", tagValue.getValue());
                tagsArray.add(tagJson);
            }
            JsonObject isErrorJson = new JsonObject();
            isErrorJson.addProperty("key", "is error");
            isErrorJson.addProperty("value", spanObject.getIsError());
            tagsArray.add(isErrorJson);
            spanJson.add("tags", tagsArray);
        }
    }
    return spanJson;
}
Also used : JsonArray(com.google.gson.JsonArray) ServiceName(org.apache.skywalking.apm.collector.storage.table.register.ServiceName) LogMessage(org.apache.skywalking.apm.network.proto.LogMessage) JsonObject(com.google.gson.JsonObject) KeyWithStringValue(org.apache.skywalking.apm.network.proto.KeyWithStringValue) TraceSegmentObject(org.apache.skywalking.apm.network.proto.TraceSegmentObject) SpanObject(org.apache.skywalking.apm.network.proto.SpanObject)

Example 2 with KeyWithStringValue

use of org.apache.skywalking.apm.network.proto.KeyWithStringValue in project incubator-skywalking by apache.

the class ContextManagerTest method testTransform.

@Test
public void testTransform() throws InvalidProtocolBufferException {
    ContextCarrier contextCarrier = new ContextCarrier().deserialize("1.234.1983829|3|1|1|#127.0.0.1:8080|#/portal/|#/testEntrySpan|1.2343.234234234");
    assertTrue(contextCarrier.isValid());
    AbstractSpan firstEntrySpan = ContextManager.createEntrySpan("/testFirstEntry", contextCarrier);
    firstEntrySpan.setComponent(ComponentsDefine.TOMCAT);
    Tags.HTTP.METHOD.set(firstEntrySpan, "GET");
    Tags.URL.set(firstEntrySpan, "127.0.0.1:8080");
    SpanLayer.asHttp(firstEntrySpan);
    AbstractSpan secondEntrySpan = ContextManager.createEntrySpan("/testSecondEntry", contextCarrier);
    secondEntrySpan.setComponent(ComponentsDefine.DUBBO);
    Tags.URL.set(firstEntrySpan, "dubbo://127.0.0.1:8080");
    SpanLayer.asRPCFramework(secondEntrySpan);
    ContextCarrier injectContextCarrier = new ContextCarrier();
    AbstractSpan exitSpan = ContextManager.createExitSpan("/textExitSpan", injectContextCarrier, "127.0.0.1:12800");
    exitSpan.errorOccurred();
    exitSpan.log(new RuntimeException("exception"));
    exitSpan.setComponent(ComponentsDefine.HTTPCLIENT);
    SpanLayer.asHttp(exitSpan);
    ContextManager.stopSpan();
    ContextManager.stopSpan();
    ContextManager.stopSpan();
    TraceSegment actualSegment = tracingData.getTraceSegments().get(0);
    UpstreamSegment upstreamSegment = actualSegment.transform();
    assertThat(upstreamSegment.getGlobalTraceIdsCount(), is(1));
    TraceSegmentObject traceSegmentObject = TraceSegmentObject.parseFrom(upstreamSegment.getSegment());
    TraceSegmentReference reference = traceSegmentObject.getSpans(1).getRefs(0);
    assertThat(reference.getEntryServiceName(), is("/portal/"));
    assertThat(reference.getNetworkAddress(), is("127.0.0.1:8080"));
    assertThat(reference.getParentSpanId(), is(3));
    assertThat(traceSegmentObject.getApplicationId(), is(1));
    assertThat(traceSegmentObject.getSpans(1).getRefsCount(), is(1));
    assertThat(traceSegmentObject.getSpansCount(), is(2));
    SpanObject actualSpan = traceSegmentObject.getSpans(1);
    assertThat(actualSpan.getComponentId(), is(3));
    assertThat(actualSpan.getComponent(), is(""));
    assertThat(actualSpan.getOperationName(), is("/testSecondEntry"));
    assertThat(actualSpan.getParentSpanId(), is(-1));
    assertThat(actualSpan.getSpanId(), is(0));
    assertThat(actualSpan.getSpanType(), is(SpanType.Entry));
    SpanObject exitSpanObject = traceSegmentObject.getSpans(0);
    assertThat(exitSpanObject.getComponentId(), is(2));
    assertThat(exitSpanObject.getComponent(), is(""));
    assertThat(exitSpanObject.getSpanType(), is(SpanType.Exit));
    assertThat(exitSpanObject.getOperationName(), is("/textExitSpan"));
    assertThat(exitSpanObject.getParentSpanId(), is(0));
    assertThat(exitSpanObject.getSpanId(), is(1));
    assertThat(exitSpanObject.getLogsCount(), is(1));
    LogMessage logMessage = exitSpanObject.getLogs(0);
    assertThat(logMessage.getDataCount(), is(4));
    List<KeyWithStringValue> values = logMessage.getDataList();
    assertThat(values.get(0).getValue(), is("error"));
    assertThat(values.get(1).getValue(), is(RuntimeException.class.getName()));
    assertThat(values.get(2).getValue(), is("exception"));
    assertTrue(values.get(2).getValue().length() <= 4000);
}
Also used : UpstreamSegment(org.apache.skywalking.apm.network.proto.UpstreamSegment) LogMessage(org.apache.skywalking.apm.network.proto.LogMessage) KeyWithStringValue(org.apache.skywalking.apm.network.proto.KeyWithStringValue) TraceSegmentObject(org.apache.skywalking.apm.network.proto.TraceSegmentObject) TraceSegmentReference(org.apache.skywalking.apm.network.proto.TraceSegmentReference) SpanObject(org.apache.skywalking.apm.network.proto.SpanObject) TraceSegment(org.apache.skywalking.apm.agent.core.context.trace.TraceSegment) AbstractSpan(org.apache.skywalking.apm.agent.core.context.trace.AbstractSpan)

Aggregations

KeyWithStringValue (org.apache.skywalking.apm.network.proto.KeyWithStringValue)2 LogMessage (org.apache.skywalking.apm.network.proto.LogMessage)2 SpanObject (org.apache.skywalking.apm.network.proto.SpanObject)2 TraceSegmentObject (org.apache.skywalking.apm.network.proto.TraceSegmentObject)2 JsonArray (com.google.gson.JsonArray)1 JsonObject (com.google.gson.JsonObject)1 AbstractSpan (org.apache.skywalking.apm.agent.core.context.trace.AbstractSpan)1 TraceSegment (org.apache.skywalking.apm.agent.core.context.trace.TraceSegment)1 ServiceName (org.apache.skywalking.apm.collector.storage.table.register.ServiceName)1 TraceSegmentReference (org.apache.skywalking.apm.network.proto.TraceSegmentReference)1 UpstreamSegment (org.apache.skywalking.apm.network.proto.UpstreamSegment)1