syntax = "proto3"; option java_multiple_files = true; option java_package = "org.skywalking.apm.network.trace.proto"; import "Downstream.proto"; service TraceSegmentService { rpc collect (stream UpstreamSegment) returns (Downstream) { } } message UpstreamSegment { repeated string globalTraceIds = 1; bytes segment = 2; // the byte array of TraceSegmentObject } message TraceSegmentObject { string traceSegmentId = 1; repeated TraceSegmentReference refs = 2; repeated SpanObject spans = 3; int32 applicationId = 4; int32 applicationInstanceId = 5; } message TraceSegmentReference { string parentTraceSegmentId = 1; int32 parentSpanId = 2; int32 parentApplicationId = 3; string networkAddress = 4; int32 networkAddressId = 5; string entryServiceName = 6; int32 entryServiceId = 7; repeated string globalTraceIds = 8; } message SpanObject { int32 spanId = 1; int32 parentSpanId = 2; int64 startTime = 3; int64 endTime = 4; int32 operationNameId = 5; string operationName = 6; int32 peerId = 7; string peer = 8; SpanType spanType = 9; SpanLayer spanLayer = 10; int32 componentId = 11; string component = 12; bool isError = 13; repeated KeyValue tags = 14; repeated LogMessage logs = 15; } enum SpanType { Entry = 0; Exit = 1; Local = 2; } enum SpanLayer { Database = 0; RPCFramework = 1; Http = 2; MQ = 3; } message KeyValue { string key = 1; string value = 2; } message LogMessage { int64 time = 1; repeated KeyValue data = 2; }