...
Trace object should contain(Span object should be similar to OpenTracing spec)
Code Block |
---|
"edata": { "id": {UUID}, // TraceId. Common for all sub-systems(this is to track entire workflow front-end to back-end) "name": "qr-scan" // service/module name to identify "span" { "nametraceID": {UUID}, "operationName": {string} //ex: "qr-scan" for the qr scan workflow. Use some unique string for each workflow/span "idspanID": {worflowId}, // UniqueId for this workflow. Always same for multiple scans "parentIdparentSpanId": {span.id} // Optional: This is to track who is the parent of the request. Helps to create the tree structure of the trace "context": [{ "type":"", "key":"", "value":""}] // Context of the workflow, ex: "dialcode": "4XJG3F" on scan of this dial code workflow started "tags": [{"key":"", "type":"", "value":""}] // https://github.com/opentracing/specification/blob/master/semantic_conventions.md#span-tags-table } } |
OpenTracing API “SPAN“ spec:
Code Block |
---|
{ "traceID": "73abf3be4c32c2b8", "spanID": "73abf3be4c32c2b8", "flags": 1, "operationName": "operation", "references": [], "startTime": 1531757144093000, "duration": 9888, "parentSpanId": 0, "tags": [ { "key": "sampler.type", "type": "string", "value": "const" }, { "key": "sampler.param", "type": "bool", "value": true } ], "logs": [], "processID": "p1", "warnings": null } |
Use OpenTracing API to generate Trace & Span objects. Jenkins & Jaeger have built on top of these API’s.
Sample Data to Analyze: https://docs.google.com/spreadsheets/d/1v96dZ0m21OVHswfZU84frOcymYd1kVqD7SqYLCyguFE/edit?usp=sharing
font-end implementation:
Use Javascript NPM module for front-end:
...