Observability
The Observability capability is enabled by the following components of Sunbird Observ-
Telemetry Service - Telemetry Service is a microservice that is capable of processing one or more events received from clients. Developed in NodeJS, telemetry service has processed more than 2 billion events per day.

What is Telemetry?

The word β€˜Telemetry’ is derived from its Greek etymological roots, tele - remote and metron - measure.
Telemetry V3 Event Structure
All events follow a common data structure, though the event data structure (β€œedata”) differs for each event. The complete data structure is as follows:
1
{
2
// About the event
3
"eid": , // Required. TODO: Shall we rename it to "verb" ??
4
"ets": , // Required. Epoch timestamp of event (time in milli-seconds. For ex: 1442816723)
5
"ver": , // Required. Version of the event data structure, currently "3.0"
6
"mid": , // Required. Unique message ID. Used for deduplication, replay and update indexes
7
8
// Who did the event
9
"actor": { // Required. Actor of the event.
10
"id": , // Required. Id of the actor. For ex: uid incase of an user
11
"type": // Required. User, System etc.
12
},
13
14
// Context of the event
15
"context": { // Required. Context in which the event has occured.
16
"channel": , // Required. Channel which has produced the event
17
"pdata": { // Optional. Producer of the event
18
"id": , // Required. unique id assigned to that component
19
"pid": , // Optional. In case the component is distributed, then which instance of that component
20
"ver": // Optional. version number of the build
21
},
22
"env": , // Required. Unique environment where the event has occured.
23
"sid": , // Optional. session id of the requestor stamped by portal
24
"did": , // Optional. uuid of the device, created during app installation
25
"cdata": [{ // Optional. correlation data
26
"type":"", // Required. Used to indicate action that is being correlated
27
"id": "" // Required. The correlation ID value
28
}],
29
"rollup": { // Optional. Context rollups
30
"l1": "",
31
"l2": "",
32
"l3": "",
33
"l4": ""
34
}
35
},
36
// What is the target of the event
37
"object": { // Optional. Object which is the subject of the event.
38
"id": , // Required. Id of the object. For ex: content id incase of content
39
"type": , // Required. Type of the object. For ex: "Content", "Community", "User" etc.
40
"ver": , // Optional. version of the object
41
"rollup": { // Optional. Rollups to be computed of the object. Only 4 levels are allowed.
42
"l1": "",
43
"l2": "",
44
"l3": "",
45
"l4": ""
46
}
47
},
48
49
// What is the event data
50
"edata": {} // Required.
51
52
// Tags
53
"tags": [] // Optional. Encrypted dimension tags passed by respective channels
54
}
Copied!
Note:
  • All events have the same structure with only differences in edata structures.
  • All events have unique event codes i.e., (IDs).
  • All events are as per platform schema
For more information about Telemetry services please click here​
Telemetry Spec
  • ​Start - This method initializes the capture of telemetric data associated with the start of user's action
  • ​Impression - This method is used to capture telemetry for user visits to a specific page.
  • ​Interact - This method is used to capture user interactions on a page. For example, search, click, preview, move, resize, configure
  • ​Assess - This method is used to capture user assessments that happen while playing content.
  • ​Response - This method is used to capture user responses. For example; response to a poll, calendar event, or a question.
  • ​Interrupt - This method is used to capture interrupts triggered during user activity. For example; mobile app sent to the background, call on the mobile, etc.
  • ​Feedback - This method is used to capture user feedback
  • ​Share - This method is used to capture everything associated with sharing. For example; Share content, telemetry data, link, file, etc.
  • ​Audit - This method is used to log telemetry when an object is changed. This includes life-cycle changes as well
  • ​Error - This method is used to capture when users face an error
  • ​Heartbeat - This method is used to log telemetry for heartbeat events to denote that the process is running
  • ​Log - This method is used to capture generic logging of events. For example; capturing logs for API calls, service calls, app updates, etc.
  • ​Search - This method is used to capture the search state i.e. when a search is triggered for content, item, assets, etc.
  • ​Metrics - This method is used to log telemetry for service business metrics
  • ​Summary - This method is used to log telemetry summary event
  • ​Exdata - This method is used as a generic wrapper event to capture encrypted or serialized data
  • ​End - This method is used to capture closure after all the activities are completed
For more information about Telemetry Spec please click here​
Data Service -
For more information about Data services please click here​
Data Pipeline
For more information about Data Pipeline please click here​
Report Service
For more information about Report services please click here​
Report Configurator
For more information about Report Configurator please click here​
Powered By Sunbird Obsrv​
Copy link
Edit on GitHub