message SegmentObject { // A string id represents the whole trace. string traceId = 1; // A unique id represents this segment. string traceSegmentId = 2; // Span collections included in this segment. repeated SpanObject spans = 3; // The logic name represents the service. string service = 4; // The logic name represents the service instance. string serviceInstance = 5; // Whether the segment includes all tracked spans. bool isSizeLimited = 6; }
message SpanObject { // The number id of the span. int32 spanId = 1; // The number id of the parent span in the whole segment. int32 parentSpanId = 2; // Start timestamp in milliseconds of this span, int64 startTime = 3; // End timestamp in milliseconds of this span, int64 endTime = 4; // In the across thread and across process, these references targeting the parent segments. repeated SegmentReference refs = 5; // A logic name represents this span. string operationName = 6; // Remote address of the peer in RPC/MQ case.This is required when spanType = Exit string peer = 7; // Span type represents the role in the RPC context. SpanType spanType = 8; // Span layer represent the component tech stack, related to the network tech. SpanLayer spanLayer = 9; // Component id is a predefinited number id in the SkyWalking. int32 componentId = 10; // The status of the span. bool isError = 11; // String key, String value pair. repeated KeyStringValuePair tags = 12; // String key, String value pair with an accurate timestamp. repeated Log logs = 13; // Force the backend don't do analysis, if the value is TRUE. bool skipAnalysis = 14; }
message SegmentReference { // Represent the reference type. // Typically, refType == CrossProcess means SpanObject#spanType = entry. RefType refType = 1; // A string id represents the whole trace. string traceId = 2; // Another segment id as the parent. string parentTraceSegmentId = 3; // The span id in the parent trace segment. int32 parentSpanId = 4; // The service logic name of the parent segment. string parentService = 5; // The service logic name instance of the parent segment. string parentServiceInstance = 6; // The endpoint name of the parent segment. string parentEndpoint = 7; // The network address, including ip/hostname and port, which is used in the client side. // Such as Client --> use 127.0.11.8:913 -> Server // then, in the reference of entry span reported by Server, the value of this field is 127.0.11.8:913. string networkAddressUsedAtPeer = 8; }
message Log { // The timestamp in milliseconds of this event., int64 time = 1; // String key, String value pair. repeated KeyStringValuePair data = 2; }
enumSpanType{ // Server side of RPC. Consumer side of MQ. Entry = 0; // Client side of RPC. Producer side of MQ. Exit = 1; // A common local code execution. Local = 2; }
// A ID could be represented by multiple string sections. message ID { repeated string id = 1; }
// Type of the reference enumRefType{ // Map to the reference targeting the segment in another OS process. CrossProcess = 0; // Map to the reference targeting the segment in the same process of the current one, just across thread. CrossThread = 1; }
// Map to the layer of span enumSpanLayer{ // Unknown layer. Could be anything. Unknown = 0; // A database layer, used in tracing the database client component. Database = 1; // A RPC layer, used in both client and server sides of RPC component. RPCFramework = 2; // HTTP is a more specific RPCFramework. Http = 3; // A MQ layer, used in both producer and consuer sides of the MQ component. MQ = 4; // A cache layer, used in tracing the cache client component. Cache = 5; }