
{"id":12129,"date":"2024-12-26T19:07:30","date_gmt":"2024-12-26T19:07:30","guid":{"rendered":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/telemetry_2-0\/instrumenting_rdkb_components_to_use_telemetry2-0\/"},"modified":"2025-03-25T05:18:32","modified_gmt":"2025-03-25T05:18:32","slug":"instrumenting_rdkb_components_to_use_telemetry2-0","status":"publish","type":"page","link":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/telemetry_2-0\/instrumenting_rdkb_components_to_use_telemetry2-0\/","title":{"rendered":"Instrumenting RDKB components to use Telemetry2.0"},"content":{"rendered":"<!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD HTML 4.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/REC-html40\/loose.dtd\">\n <html><body><div class=\"contentLayout2\">\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h2 class=\"wp-main-header wp-block-heading\">Introduction<\/h2><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<p>While migrating to Telemetry2.0 from DCA telemetry, the traditional log grepping is targetted to reduce as much as possible by instrumenting the&nbsp; markers coming from RDKB components.To achieve this, RDKB components are supposed make required changes with the use of APIs from Telemetry 2.0 shared library (commonlib &#8211; <a class=\"external-link\" href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdk\/components\/generic\/telemetry\/+\/refs\/heads\/rdk-next\/source\/commonlib\/\" rel=\"nofollow\">https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdk\/components\/generic\/telemetry\/+\/refs\/heads\/rdk-next\/source\/commonlib\/<\/a><span> )<\/span><\/p><p><strong>Brief Background:<\/strong><\/p><p>In DCA telemetry, the markers fetched from xconf are grepped in log files and reported in json format to splunk server.<\/p><p><span>The markers are of 3 types:<\/span><\/p><ol><li>Split based markers.&nbsp;<\/li><li>Count based markers<\/li><li>TR-181 based markers.<\/li><\/ol><div class=\"table-wrap\"> <table class=\"relative-table wrapped confluenceTable\"><colgroup class=\"\"><col class=\"\" style=\"width: 13.5031%;\"><col class=\"\" style=\"width: 52.6345%;\"><col class=\"\" style=\"width: 33.7302%;\"><\/colgroup><tbody class=\"\"><tr class=\"\"><th class=\"confluenceTh\">Marker Type<\/th><th class=\"confluenceTh\">Sample configuration from xconf<\/th><th class=\"confluenceTh\">Description with respect to sample configuration<\/th><\/tr><tr class=\"\"><td class=\"confluenceTd\">Split based markers<\/td><td class=\"confluenceTd\"><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">{\"header\":\"WIFI_ACS_1_split\",\"content\":\"WIFI_ACS_1:\",\"type\":\"wifihealth.txt\",\"pollingFrequency\":\"0\"}<\/pre><\/td><td class=\"confluenceTd\">Expects the value after content &#8220;WIFI_ACS_1:&#8221;<\/td><\/tr><tr class=\"\"><td class=\"confluenceTd\">Count based markers&nbsp;<\/td><td class=\"confluenceTd\"><pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">{\"header\":\"RF_ERROR_IPV6PingFailed\",\"content\":\"Ping to IPv6 Gateway Address are failed\",\"type\":\"SelfHeal.txt.0\",\"pollingFrequency\":\"0\"}<\/pre><\/td><td class=\"confluenceTd\">Expects the occurance count of content &#8220;Ping to IPv6 Gateway Address are failed&#8221;<\/td><\/tr><tr class=\"\"><td class=\"confluenceTd\">TR-181 based markers<\/td><td class=\"confluenceTd\">{&#8220;header&#8221; : &#8220;XDNS_split&#8221;,&#8221;content&#8221; : &#8220;Device.DeviceInfo.X_RDKCENTRAL-COM_EnableXDNS&#8221;,&#8221;type&#8221; : &#8220;&lt;message_bus&gt;&#8221;,&#8221;pollingFrequency&#8221;:&#8221;48&#8243;}<\/td><td class=\"confluenceTd\">Markers whose type is configured as &#8220;&lt;message_bus&gt;&#8221;<\/td><\/tr><\/tbody><\/table> <\/div><p><br>In T2.0,&nbsp; 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&nbsp; markers. Once a marker is instrumented from component side, its configuration on xconf will be changed&nbsp; from the configured file name to &#8220;&lt;event&gt;&#8221; in&nbsp; &nbsp;&#8216;type:&#8217; section.<\/p><p>Example: <span>{&#8220;header&#8221;:&#8221;WIFI_ACS_1_split&#8221;,&#8221;content&#8221;:&#8221;WIFI_ACS_1:&#8221;,&#8221;type&#8221;:&lt;event&gt;&#8221;,&#8221;pollingFrequency&#8221;:&#8221;0&#8243;}<\/span><\/p><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<hr><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h2 class=\"wp-main-header wp-block-heading\"><strong>Overview of Instrumenting RDKB components with T2 shared library (commonlib) APIs:<\/strong><\/h2><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<div class=\"conf-macro output-block\" data-hasbody=\"false\" data-macro-name=\"drawio\">\n\t<div class=\"drawio-macro\" data-macroid=\"0ad9efaf-ab70-4df1-a915-94cf4952156a\" data-buildnum=\"9012\" id=\"drawio-macro-content-0ad9efaf-ab70-4df1-a915-94cf4952156a\"><\/div>\n\t<div id=\"drawio-macro-data-0ad9efaf-ab70-4df1-a915-94cf4952156a\"><span class=\"confluence-embedded-file-wrapper confluence-embedded-manual-size\">\n\t<a class=\"lightboxcaller-image\" href=\"\/wp-content\/uploads\/sites\/16\/2025\/01\/Overview_of_Instrumenting_RDKB.png\"><\/a>\n\t<img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2025\/01\/Overview_of_Instrumenting_RDKB.png\">\n<\/span><\/div>\n<\/div><p>Steps to instrument split based and count based markers from RDKB components side:<\/p><ol><li>Check if that particular device Build have the Telemtry2.0 building capability<\/li><li>Include required headers&nbsp;<\/li><li>Compile the component with telemetry 2.0 support<\/li><li>Initialize the module with telemetry<\/li><li>Find the correct place to report a marker<\/li><li>Use appropriate APIs to report markers and values.<\/li><li>Must check notes<\/li><\/ol><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<ol><li>To check if a particular device build have the Telemtry2.0 building capability<ol><li>Should have an entry in device based.xml file<\/li><li>&#8220;telemetry2_0&#8221; should be appeneded to DISTRO_FEATURES in machine configuration file.<span>&nbsp;<\/span><span>NOTE: Distro feature will be removed soon, and this page will be updated to reflect that.<\/span><\/li><\/ol><\/li><li><span>Include required headers \/ declare enough sized telemetry buffer and send events to T2 with t2_event_s() api<\/span><ol><li><span>NOTE: Now that T2.0 is present on all RDK-B platforms, there is no need to use the #if defined for the header or T2.0 API calls<\/span><ol><li><span><s>#if defined(ENABLE_FEATURE_TELEMETRY2_0)<\/s><br>#include &lt;telemetry_busmessage_sender.h&gt;<br><s>#endif<\/s><\/span><ol><li><a class=\"external-link\" href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdkb\/components\/opensource\/ccsp\/CcspWifiAgent\/+\/refs\/heads\/rdk-next\/include\/TR-181\/ml\/cosa_wifi_internal.h\" rel=\"nofollow\">https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdkb\/components\/opensource\/ccsp\/CcspWifiAgent\/+\/refs\/heads\/rdk-next\/include\/TR-181\/ml\/cosa_wifi_internal.h<\/a><\/li><li><a class=\"external-link\" href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdkb\/components\/opensource\/ccsp\/CcspWifiAgent\/+\/refs\/heads\/rdk-next\/source\/TR-181\/sbapi\/wifi_monitor.c\" rel=\"nofollow\">https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdkb\/components\/opensource\/ccsp\/CcspWifiAgent\/+\/refs\/heads\/rdk-next\/source\/TR-181\/sbapi\/wifi_monitor.c<\/a><\/li><\/ol><\/li><\/ol><\/li><\/ol><\/li><li>To compile a component with Telemetry2.0 if it is enabled for that device. NOTE: Distro feature will be removed soon, and this page will be updated to reflect that<strong style=\"letter-spacing: 0.0px;\">.<\/strong><ol><li>Add depends to telemetry module.<\/li><li>Add Compile time (-DENABLE_FEATURE_TELEMETRY2_0) and linking time (-ltelemetry_msgsender) flags&nbsp; to the recipe file.<\/li><li>Make sure that bb file has below line to avoid compilation errors.<ol><li>CFLAGS_append = &#8221; -I${STAGING_INCDIR}\/ccsp &#8220;<\/li><li>Sample review: <a class=\"external-link\" href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdk\/components\/generic\/rdk-oe\/meta-rdk-broadband\/+\/refs\/heads\/rdk-next\/recipes-ccsp\/ccsp\/ccsp-wifi-agent.bb\" rel=\"nofollow\">https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdk\/components\/generic\/rdk-oe\/meta-rdk-broadband\/+\/refs\/heads\/rdk-next\/recipes-ccsp\/ccsp\/ccsp-wifi-agent.bb<\/a><\/li><\/ol><\/li><\/ol><\/li><li>Initialize the module with telemetry<ol><li>Initialization needs to be done only once at the very initial stage of application \/ module<ol><li>Example: <a class=\"external-link\" href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdkb\/components\/opensource\/ccsp\/CcspCr\/+\/refs\/heads\/rdk-next\/source\/CrSsp\/ssp_main.c\" rel=\"nofollow\">https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdkb\/components\/opensource\/ccsp\/CcspCr\/+\/refs\/heads\/rdk-next\/source\/CrSsp\/ssp_main.c<\/a><ol><li><\/ol><\/li><\/ol><\/li><\/ol><\/li><li>Find the correct place to report a marker<ol><li>Previously&nbsp; in DCA telemetry, a marker is reported based on the xconf configured &#8220;content&#8221; string &#8211;&nbsp; when the content string is found in corresponding configured filename configured under &#8216;type:&#8217; section .<ol><li>\/* Refer :&nbsp; {&#8220;header&#8221;: &#8220;<span>WIFI_INFO_Hotspot_client_connected<\/span>&#8220;, &#8220;content&#8221;: &#8220;<span>Added case, Client with:<\/span>&#8220;, &#8220;type&#8221;: &#8220;<span>Hotspotlog.txt.0<\/span>&#8220;,&#8221;pollingFrequency&#8221;:&#8221;0&#8243;} *\/<\/li><\/ol><\/li><li>So, find the right place where the content string is being written to the corresponding log file in order to event a marker in T2.0.<ol><li><a class=\"external-link\" href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdkb\/components\/opensource\/ccsp\/hotspot\/+\/refs\/heads\/rdk-next\/source\/hotspotfd\/cosa_hotspot_dml.c\" rel=\"nofollow\">https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdkb\/components\/opensource\/ccsp\/hotspot\/+\/refs\/heads\/rdk-next\/source\/hotspotfd\/cosa_hotspot_dml.c<\/a><span>&nbsp;<\/span>(Line number 144 gives the idea)<span>&nbsp;<\/span><span>CcspTraceInfo((&#8220;Added case, Client with MAC:%s will be addedn&#8221;, l_cMacAddr));<\/span><\/li><\/ol><\/li><li>Once the place is decided, use the right API to report Marker and values.&nbsp;<ol><li>For markers without &#8220;_split&#8221; suffix, the marker data is just a count of the number of times the marker is received.&nbsp; In this case, the<span>&nbsp;<\/span><em>t2_event_d<\/em><span><span>&nbsp;<\/span>API can be used because the marker data passed to the API is not important.<\/span><ol><li>Example<em>:&nbsp; t2_event_d(&#8220;WIFI_INFO_Hotspot_client_connected&#8221;, 1);<\/em><span><span>&nbsp;<\/span>in&nbsp;<a class=\"external-link\" href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdkb\/components\/opensource\/ccsp\/hotspot\/+\/refs\/heads\/rdk-next\/source\/hotspotfd\/cosa_hotspot_dml.c\" rel=\"nofollow\">https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdkb\/components\/opensource\/ccsp\/hotspot\/+\/refs\/heads\/rdk-next\/source\/hotspotfd\/cosa_hotspot_dml.c<\/a><\/span><\/li><\/ol><\/li><li>For markers with &#8220;_split&#8221; suffix, the marker data is important, so use the API most appropriate to the marker data.&nbsp; For instance, if the marker data is a string, use<span>&nbsp;<\/span><em>t2_event_s<\/em><span>.&nbsp; But if marker data is numeric, use one of<span>&nbsp;<\/span><\/span><em>t2_event_d<\/em><span><span>&nbsp;<\/span>or<\/span><em><span>&nbsp;<\/span>t2_event_f<\/em><span>.&nbsp; Also note that testing must ensure the string used for marker data matches the string expected by legacy telemetry.<\/span><ol><li>Example :<span>&nbsp;<\/span><em>t2_event_s(&#8220;acs_split&#8221;, pStr);<\/em><span><span>&nbsp;<\/span>in<span>&nbsp;<\/span><a class=\"external-link\" href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdkb\/components\/opensource\/ccsp\/CcspTr069Pa\/+\/refs\/heads\/rdk-next\/source-embedded\/DslhManagementServer\/ccsp_management_server_pa_api.c#767\" rel=\"nofollow\">https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdkb\/components\/opensource\/ccsp\/CcspTr069Pa\/+\/refs\/heads\/rdk-next\/source-embedded\/DslhManagementServer\/ccsp_management_server_pa_api.c#767<\/a><\/span><\/li><\/ol><\/li><\/ol><\/li><\/ol><\/li><li><span>Use appropriate APIs to event markers and values<\/span><ol><li>In RDKB we have logs coming from both scripts and component&#8217;s code (code in C). From which markers are reported\/grepped.<\/li><li>List of APIs :<ol><li>To report markers from components<ul><li>t2_event_s(char* marker, char* value)&nbsp;&#8211; To send _split marker with string value to T2<ul><li>Usage:<ul><li>t2_event_s(&#8220;xh_mac_3_split&#8221;, &#8220;xh_MAC_value&rdquo;);<\/li><li>t2_event_s(&#8220;xh_mac_3_split&#8221;, strBuff); \/* where strBuff contains the string value to be reported for this marker *\/<\/li><\/ul><\/li><li><em>NOTE: T<span>he instrumented component could use a static buffer or do a buffer malloc itself; but T2 common lib makes its own copy regardless, so instrumented component must clean up after itself.<\/span><\/em><\/li><\/ul><\/li><li>t2_event_f(char* marker, double value) &#8211; To send marker with double value to T2<ul><li>Usage: t2_event_d(&#8220;<span>HWREV_split<\/span>&#8220;, 2.2);<\/li><\/ul><\/li><li>t2_event_d(char* marker, int value) &#8211; To send marker with integer value to T2&nbsp; (or) to report count based markers<ul><li>Usage:<ol><li>t2_event_d(&#8220;WIFI_INFO_Zero_5G_Clients&#8221;, 1);&nbsp; \/* To report counter based markers&#8211; The value is reported as &#8220;1&#8221; *\/<\/li><li>t2_event_d(&#8220;Total_5G_clients_split&#8221;, num_devs); \/* To report integer type split markers *\/<ol><li>Sample Review:&nbsp;<a class=\"external-link\" href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdkb\/components\/opensource\/ccsp\/CcspWifiAgent\/+\/refs\/heads\/rdk-next\/source\/TR-181\/sbapi\/wifi_monitor.c\" rel=\"nofollow\">https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdkb\/components\/opensource\/ccsp\/CcspWifiAgent\/+\/refs\/heads\/rdk-next\/source\/TR-181\/sbapi\/wifi_monitor.c<\/a><\/li><\/ol><\/li><\/ol><\/li><\/ul><\/li><\/ul><\/li><\/ol><\/li><\/ol><\/li><li>Must Check Notes<ol><li><span>While instrumenting components<\/span><ul><li><span>&nbsp;If you are defining a character array buffer&nbsp; to store the value corresponding to marker ,<strong>&nbsp;<\/strong>Make sure Maximum buffer size is allocated, And is reset with &#8216; &#8216; before and after its use.<\/span><ul><li><span>Example: &#8220;telemetryBuff&#8221; usage in<span>&nbsp;<\/span><a class=\"external-link\" href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdkb\/components\/opensource\/ccsp\/CcspWifiAgent\/+\/refs\/heads\/rdk-next\/source\/TR-181\/sbapi\/wifi_monitor.c\" rel=\"nofollow\">https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdkb\/components\/opensource\/ccsp\/CcspWifiAgent\/+\/refs\/heads\/rdk-next\/source\/TR-181\/sbapi\/wifi_monitor.c<\/a><\/span><\/li><li><span>In many cases, an existing buffer already being built\/used within the component can be used rather than necessitating creation of a new buffer; see<span>&nbsp;<\/span><a class=\"external-link\" href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdkb\/components\/opensource\/ccsp\/CcspTr069Pa\/+\/refs\/heads\/rdk-next\/source-embedded\/DslhManagementServer\/ccsp_management_server_pa_api.c\" rel=\"nofollow\">https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdkb\/components\/opensource\/ccsp\/CcspTr069Pa\/+\/refs\/heads\/rdk-next\/source-embedded\/DslhManagementServer\/ccsp_management_server_pa_api.c<\/a><\/span><\/li><\/ul><\/li><li><span>To Report count based markers , The value should be mentioned as &#8220;1&#8221; while using t2_event_d() API.<\/span><\/li><\/ul><\/li><li>While instrumenting&nbsp; Scripts<ol><li>Source the&nbsp;utility&nbsp;script<em><span>&nbsp;<\/span>\/lib\/rdk\/t2Shared_api.sh&nbsp;<\/em><\/li><li>Invoke :<ol><li>t2ValNotify &#8220;Marker&#8221; &#8220;Value&#8221;<span><span>&nbsp;<\/span>&#8211; To report split based markers<\/span><\/li><li>t2CountNotify&nbsp; &#8220;Marker&#8221;<span>&nbsp;<\/span><span>&#8211; To report count based markers.<\/span><\/li><li><span><span data-teams=\"true\"><a class=\"external-link\" href=\"https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdkb\/components\/opensource\/ccsp\/sysint\/+\/refs\/heads\/rdk-next\/uploadRDKBLogs.sh\" rel=\"nofollow\">https:\/\/code.rdkcentral.com\/r\/plugins\/gitiles\/rdkb\/components\/opensource\/ccsp\/sysint\/+\/refs\/heads\/rdk-next\/uploadRDKBLogs.sh<\/a><\/span><\/span><\/li><\/ol><\/li><\/ol><\/li><\/ol><\/li><\/ol><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<hr><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<h2 class=\"wp-main-header wp-block-heading\">References<\/h2><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<ol><li><a href=\"\/documentation\/documentation\/device_management\/xconf\/telemetry_2-0\/t2-0_common_library_apis\">T2.0 Common Library APIs<\/a><\/li><li>Relates to <a href=\"\/documentation\/documentation\/device_management\/xconf\/telemetry_2-0\/instrumenting_rdkv_components_to_use_telemetry_2-0\">Instrumenting RDKV components to use Telemetry 2.0<\/a><\/li><\/ol><\/div>\n<\/div>\n<\/div>\n<div class=\"columnLayout single\" data-layout=\"single\">\n<div class=\"cell normal\" data-type=\"normal\">\n<div class=\"innerCell\">\n<p><br><\/p><\/div>\n<\/div>\n<\/div>\n<\/div><\/body><\/html>\n","protected":false},"excerpt":{"rendered":"<p>Introduction While migrating to Telemetry2.0 from DCA telemetry, the traditional log grepping is targetted to [&hellip;]<\/p>\n","protected":false},"author":597,"featured_media":0,"parent":11575,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"class_list":["post-12129","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Instrumenting RDKB components to use Telemetry2.0 - RDK Documentation Portal | Documentation<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/telemetry_2-0\/instrumenting_rdkb_components_to_use_telemetry2-0\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Instrumenting RDKB components to use Telemetry2.0 - RDK Documentation Portal | Documentation\" \/>\n<meta property=\"og:description\" content=\"Introduction While migrating to Telemetry2.0 from DCA telemetry, the traditional log grepping is targetted to [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/telemetry_2-0\/instrumenting_rdkb_components_to_use_telemetry2-0\/\" \/>\n<meta property=\"og:site_name\" content=\"RDK Documentation Portal | Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-25T05:18:32+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/telemetry_2-0\/instrumenting_rdkb_components_to_use_telemetry2-0\/\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/telemetry_2-0\/instrumenting_rdkb_components_to_use_telemetry2-0\/\",\"name\":\"Instrumenting RDKB components to use Telemetry2.0 - RDK Documentation Portal | Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\"},\"datePublished\":\"2024-12-26T19:07:30+00:00\",\"dateModified\":\"2025-03-25T05:18:32+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/telemetry_2-0\/instrumenting_rdkb_components_to_use_telemetry2-0\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/telemetry_2-0\/instrumenting_rdkb_components_to_use_telemetry2-0\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/telemetry_2-0\/instrumenting_rdkb_components_to_use_telemetry2-0\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentation\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Device Management\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Xconf\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Telemetry 2.0\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/telemetry_2-0\/\"},{\"@type\":\"ListItem\",\"position\":6,\"name\":\"Instrumenting RDKB components to use Telemetry2.0\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/\",\"name\":\"RDK Documentation Portal | Documentation\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Instrumenting RDKB components to use Telemetry2.0 - RDK Documentation Portal | Documentation","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/telemetry_2-0\/instrumenting_rdkb_components_to_use_telemetry2-0\/","og_locale":"en_US","og_type":"article","og_title":"Instrumenting RDKB components to use Telemetry2.0 - RDK Documentation Portal | Documentation","og_description":"Introduction While migrating to Telemetry2.0 from DCA telemetry, the traditional log grepping is targetted to [&hellip;]","og_url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/telemetry_2-0\/instrumenting_rdkb_components_to_use_telemetry2-0\/","og_site_name":"RDK Documentation Portal | Documentation","article_modified_time":"2025-03-25T05:18:32+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/telemetry_2-0\/instrumenting_rdkb_components_to_use_telemetry2-0\/","url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/telemetry_2-0\/instrumenting_rdkb_components_to_use_telemetry2-0\/","name":"Instrumenting RDKB components to use Telemetry2.0 - RDK Documentation Portal | Documentation","isPartOf":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website"},"datePublished":"2024-12-26T19:07:30+00:00","dateModified":"2025-03-25T05:18:32+00:00","breadcrumb":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/telemetry_2-0\/instrumenting_rdkb_components_to_use_telemetry2-0\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/telemetry_2-0\/instrumenting_rdkb_components_to_use_telemetry2-0\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/telemetry_2-0\/instrumenting_rdkb_components_to_use_telemetry2-0\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":2,"name":"Documentation","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":3,"name":"Device Management","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/"},{"@type":"ListItem","position":4,"name":"Xconf","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/"},{"@type":"ListItem","position":5,"name":"Telemetry 2.0","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/device_management\/xconf\/telemetry_2-0\/"},{"@type":"ListItem","position":6,"name":"Instrumenting RDKB components to use Telemetry2.0"}]},{"@type":"WebSite","@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website","url":"https:\/\/developer.rdkcentral.com\/documentation\/","name":"RDK Documentation Portal | Documentation","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/12129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/users\/597"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/comments?post=12129"}],"version-history":[{"count":3,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/12129\/revisions"}],"predecessor-version":[{"id":12141,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/12129\/revisions\/12141"}],"up":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/11575"}],"wp:attachment":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/media?parent=12129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}