RDK Resources
[*RDK Preferred*]
Code Management Facility
RDK Forums
[RDK Conferences]
RDK Support
Archives
Papers & Presentations Archive
As part of Telemetry 2.0 , a marker event system has been added to reduce grepping of log files and to improve telemetry handling performance. Following are major aspects of the marker event system:
Configuration
The XConf/DCM response TelemetryProfile definition has been extended to indicate the source of a marker for report generation is the event system. When the TelemetryProfile "type" field equals "<event>" the T2 component will not include the marker in the log file grep process. If the "type" field is set to "<event>", then the "content" field is set to the name of the component.
When the T2 component converts a TelemetryProfile to a report profile at .BulkData.Profile.{i}. it creates a Parameter.{i}. entry for each marker . The Use field is set for marker event handling by the T2 component.
Example
Existing marker with log file as the source:
"telemetryProfile": [{ "header": "SYS_SH_WIFI_restart", "content": "WIFI_process is not running", "type": "SelfHeal.txt.0", "pollingFrequency": "0" },
Updated marker with event feed as the source; "type" and "content" field are changed:
"telemetryProfile": [{ "header": "SYS_SH_WIFI_restart", "content": ""com.cisco.spvtg.ccsp.wifiagent"", "type": "<event>", "pollingFrequency": "0" },
Processing
A shared library is used by components to send targeted marker occurrences through an event feed to the T2 component.Components using the shared library shall conditionally compile it in via #if defined(ENABLE_FEATURE_TELEMETRY2_0) in order to support platform-specific compilation.When the T2 component receives a marker event it processes the marker name and value according to the Use definition in the report profile. The T2 component will store absolute as received, accumulate, or aggregate values. Marker events are processed per report profile.
When a report is generated markers that were processed from the event feed are included in the report as specified by the report profile.
•APIs for component metrics and events
t2_event_s(char*eventName, char* value) t2_event_d(char*eventName, int value) t2_event_f(char*eventName, double value) |
---|
S.NO | DataModel | Description | DataType |
---|---|---|---|
1 | Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.Telemetry.Enable | Enable the T2 Process | Boolean |
2 | Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.Telemetry.Version | ‘2.0’ : Operates only with legacy support | String |
3 | Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.Telemetry.ConfigURL | https://xconf.xcal.tv/loguploader/getT2Settings | String |
T2 Report Profile
S.NO | DataModel | Description | DataType |
---|---|---|---|
1 | Device.X_RDKCENTRAL-COM_T2.ReportProfiles | Value must be a JSON configuration blob | String |
2 | Device.X_RDKCENTRAL-COM_T2.ReportProfilesMsgPack | Value must be a JSON configuration blob in base 64 encoded msgpack format | String |
The markers are of 3 types .
1.Split based markers.
2. Count based markers
3. TR-181 based markers.
Marker Type | Sample configuration from xconf | Description with respect to sample configuration |
---|---|---|
Count based markers | {"header":"RF_ERROR_IPV4PingFailed","content":"Ping to IPv4 Gateway Address are failed","type":"SelfHeal.txt.0","pollingFrequency":"0"} | Expects the occurrence count of content "Ping to IPv4 Gateway Address are failed" |
Split based markers | {"header":"bootuptime_ClientConnectComplete_split","content":"Client_Connect_complete:","type":"LM.txt.log","pollingFrequency":"0"} | Expects the value after content "Client_Connect_complete:" |
TR-181 based markers | {"header" : "CMMAC_split","content" : "Device.DeviceInfo.X_COMCAST-COM_CM_MAC","type" : "<message_bus>","pollingFrequency":"48"} | Markers whose type is configured as "<message_bus>" |
In T2.0, the aim is to instrument possible number of split and count based markers from component side. These are termed as event markers. Can be classified as one more type under the classification of markers.
Once a marker is instrumented from component side, its configuration on xconf will be changed from the configured file name to "<event>" in 'type:' section.
Example:
{"header":"bootuptime_ClientConnectComplete_split","content":"ccsp-lm-lite","type":<event>","pollingFrequency":"0"}
A Telemetry 2.0 Report Profile is a configuration, authored in JSON, that can be sent to any RDK device which supports Telemetry 2.0. A Report Profile contains properties that are interpreted by the CPE in order to generate and upload a telemetry report. These properties define the details of a generated report, including:
Property | Type | Required |
---|---|---|
profiles | array | Required |
An array of profile objects that each defines a Telemetry 2.0 Report Profile.
profiles
maximum number of items: the maximum number of items for this array is: 10
profile
object
Property | Type | Required |
---|---|---|
name | string | Required |
versionHash | string | Required |
value | object | Required |
Name of the Profile. This is value is accessible from within the Report Profile as dataModel parameter "Profile.Name".
name
string
Unique value that is expected to change when anything within the Report Profile is changed.
versionHash
string
The JSON representing this Report Profile.
value
object
(JSON object which is a T2 Report Profile)Property | Type | Required |
---|---|---|
Description | string | Optional |
Version | string | Optional |
Protocol | string | Required |
EncodingType | string | Required |
ReportingInterval | integer | Optional |
ActivationTimeOut | integer | Optional |
TimeReference | string | Optional |
GenerateNow | boolean | Optional |
Parameter | array | Required |
HTTP | object | Optional |
JSONEncoding | object | Optional |
Text describing the purpose of this Report Profile.
Description
string
Version of the profile. This value is opaque to the Telemetry 2 component, but can be used by server processing to indicate specifics about data available in the generated report.
Version
string
The protocol to be used for the upload of report generated by this profile.
Protocol
string
enum: the value of this property must be equal to one of the following values:
Value | Explanation |
---|---|
"HTTP" | When Protocol is equal to HTTP, an HTTP element is expected to occur within the Profile. |
The encoding type to be used in the report generated by this profile.
EncodingType
string
enum: the value of this property must be equal to one of the following values:
Value | Explanation |
---|---|
"JSON" | When EncodingType is equal to JSON, a JSONEncoding element is expected to occur within the Profile. |
The interval, in seconds, at which this profile shall cause a report to be generated.
ReportingInterval
integer
The amount of time, in seconds, that this profile shall remain active on the device. This is the amount of time from which the profile is received until the CPE will consider the profile to be disabled. After this time, no further reports will be generated for this report.
ActivationTimeOut
integer
TBD. Must be value of "0001-01-01T00:00:00Z" for Telemetry 2.0.
TimeReference
string
The default value is:
"0001-01-01T00:00:00Z"
When true, indicates that the report for this Report Profile should be generated immediately upon receipt of the profile.
GenerateNow
boolean
The default value is:
false
An array of objects which defines the data to be included in the generated report. Each object defines the type of data, the source of the data and an optional name to be used as the name (marker) for this data in the generated report.
Parameter
object[]
object
(Parameter Definition)
maximum number of items: the maximum number of items for this array is: 800
HTTP Protocol details that will be used when Protocol="HTTP".
HTTP
object
object
JSON Encoding details that will be used when EncodingType="JSON".
JSONEncoding
object
object