Trace Data Protocol describes the data format between SkyWalking agent/sniffer and backend.
This protocol includes the downstream and upstream data format. Other languages agents/SDKs can use this protocol to uplink data to the SkyWalking backend.
v1.1
Collector discovery service should be the first service after agent started Through this service, get the gRPC service list. The agent can choose any one of them for uplink data. Recommend to acquire the list periodically.
Input GET:http://collectorIp:port/agent/gRPC
Output JSON Array. Each element in the array ia a valid gRPC service address.
["ip address1:port1","ip address2:port2","ip address3:port3"]
Register Application Code to the backend, and receive an integer represents the application.
agent.config
.KeyWithIntegerValue
, which will be used in further data uplink.Replace the literal String service(operation) name by an id(integer)
Network Address includes all remove service address, includes ip, port, hostname, etc., which used in RPC framework, MQ, DB, etc.
Uplink the JVM metrics, including PermSize, HeapSize, CPU, Memory, etc., every second.
All HTTP Services match the gRPC services, just adjust use short keys.
Input:
{ ai: x, #applicationId au: "", #agentUUID rt: x, #registerTime oi: "", #osinfo }
Output:
{ ai: x, #applicationId ii: x, #applicationInstanceId }
Input:
{ "ii": x, #applicationInstanceId "ht": x #heartbeatTime, java timestamp format }
Output: empty
Input:
{ ai: x, #applicationId sn: "", #serviceName st: x, #srcSpanType }
Output:
{ si: x, #osinfo el: { #element ai: x, #applicationId sn: "", #serviceName st: x, #srcSpanType } }
Input:
[ { "gt": [[230150, 185809, 24040000]], "sg": { //TraceSegmentObject "ts": [137150, 185809, 48780000], "ai": 2, //applicationId "ii": 3, //applicationInstanceId "ss": [ //SpanObject { "si": 0, //spanId "tv": 0, //SpanType "lv": 2, //SpanLayer "ps": -1, //parentSpanId "st": 1501858094726, //startTime "et": 1501858096804, //endTime "ci": 3, //componentId "cn": "", //component "oi": 0, //operationNameId "on": "org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()", //operationName "pi": 0, //peerId "pn": "", //peer "ie": false, //isError "rs": [ //TraceSegmentReference { "pts": [230150, 185809, 24040000], //parentTraceSegmentId "pii": 2, //parentApplicationInstanceId "psp": 1, //parentSpanId "psi": 0, //parentServiceId "psn": "/dubbox-case/case/dubbox-rest", //parentServiceName "ni": 0, //networkAddressId "nn": "172.25.0.4:20880", //networkAddress "eii": 2, //entryApplicationInstanceId "esi": 0, //entryServiceId "esn": "/dubbox-case/case/dubbox-rest", //entryServiceName "rv": 0 //RefTypeValue } ], "to": [ //KeyWithStringValue { "k": "url", //key "v": "rest://172.25.0.4:20880/org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()" //value }, { "k": "http.method", "v": "GET" } ], "lo": [{ "ti": 1501858094726, "ld": [{ "k": "NullPointException", "v": "Error Stack" }] }] }, { "si": 1, "tv": 1, "lv": 1, "ps": 0, "st": 1501858094726, "et": 1501858095804, "ci": 9, "cn": "", "oi": 0, "on": "mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]", "pi": 0, "pn": "localhost:27017", "ie": false, "to": [], "lo": [] } ] } } ]