
{"id":9880,"date":"2022-06-21T09:10:28","date_gmt":"2022-06-21T09:10:28","guid":{"rendered":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/documentation\/rdk_video_documentation\/components\/open-sourced_components\/dca\/"},"modified":"2025-03-25T05:18:35","modified_gmt":"2025-03-25T05:18:35","slug":"dca","status":"publish","type":"page","link":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dca\/","title":{"rendered":"DCA"},"content":{"rendered":"<p><br \/>\n <\/p>\n<div class=\"toc-macro client-side-toc-macro  conf-macro output-block\" data-headerelements=\"H1,H2,H3,H4,H5,H6,H7\" data-hasbody=\"false\" data-macro-name=\"toc\"> <\/div>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Overview<\/h2>\n\n\n<p class=\"with-breadcrumbs\">Data Collection and Analysis (DCA) is responsible for collecting the data from various log files and send to server. The script dca_utility.sh is in place on the set-top box. Based on the DCM response it will create a cron job in the settop box.<\/p>\n<p><strong>*\/20 * * * * nice -n 20 sh \/lib\/rdk\/dca_utility.sh 1<\/strong><\/p>\n<p>This cron job will send out the JSON message with the level one parameter values to the splunk server.<\/p>\n<p>There are 3 level of loggins message and upload to the server.&nbsp;<span>Using S3 as the log back end for second and third level logging.<\/span><\/p>\n<ul>\n<li><span><strong>First Level<\/strong><br \/><\/span>\n<ul>\n<li><span>Frequency &#8211; start with 5 minutes and then expand.<\/span><\/li>\n<li><span>If log upload frequency is 5 minutes, that is separate from the log collection frequency, which will be based on various parameters.&nbsp;<br \/><\/span>\n<ul>\n<li><span>Parameters could be counters.&nbsp;<\/span><\/li>\n<li><span>Parameters may not be available in logs but may need real-time probing using snmp\/tr-69 or other methods.<\/span><\/li>\n<li><span>We will need collect records based on frequency at which collection needs to occur.<\/span><\/li>\n<\/ul>\n<\/li>\n<li><span>Log some events back to the cloud. Could be to S3 or another destination.<\/span><\/li>\n<li><span>Records that it upload should be records that could be fed into Splunk without having to do much processing, for example, a name\/value pair or another that is easy to expose on Splunk.<\/span><\/li>\n<li><span>There could be multiple records since logging period.&nbsp;<\/span><\/li>\n<li><span>Data collection frequency and upload frequency can be configured differently.<\/span><\/li>\n<li><span>The level will be enabled for every device.<\/span><\/li>\n<\/ul>\n<\/li>\n<li><span><strong>Second Level<\/strong><br \/><\/span>\n<ul>\n<li><span>Medium number of logs. Full logs will need to be pushed.&nbsp;<\/span><\/li>\n<li><span>Second and Third level are similar.&nbsp;<\/span><\/li>\n<\/ul>\n<\/li>\n<li><span><strong>Third Level<\/strong><br \/><\/span>\n<ul>\n<li><span>Similar to current method of full log uploads.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n<h2 class=\"wp-block-heading wp-main-header\"><span>Architectural diagram<\/span><\/h2>\n\n\n<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2023\/09\/DCA%20Architecture%20Diagram.drawio.png\"><\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Process Flow<\/h2>\n\n\n<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/sites\/16\/2023\/09\/Process%20Flow.drawio.png\"><\/p>\n<ul>\n<li>DCMscript.sh communicates with Xconf server and fetches the predefined markers<\/li>\n<li>Using the markers, DCM Script will prepare a sorted map file for the log lookup, creates a CRON job for DCA Agent.<\/li>\n<li>CRON job retrieves data from the device using DCA which filters search patterns by looking into logs.<\/li>\n<li>From the retrieved data, it will create a JSON formatted message.<\/li>\n<li>JSON format data is uploaded to server<\/li>\n<\/ul>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">Message Format from Settop &nbsp;Box<\/h2>\n\n\n<div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\">\n<div class=\"codeHeader panelHeader pdl\"><b>Sample Settop box JSON Message<\/b><\/div>\n<div class=\"codeContent panelContent pdl\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">{\"searchResult\":[{\"Total Space available\":\"30\"},{\"Heartbeat\":\"61\"},{\"Success tune\":\"280\"},{\"Failure tune\":\"0\"},{\"mac\":\"14:D4:FE:65:A9:81\"},{\"Version\":\"PX001AN_VBN_master_HYB_021622172015_PBTsd_RTT\"}]}<\/pre>\n<\/div>\n<\/div>\n<div class=\"code panel pdl conf-macro output-block\" data-hasbody=\"true\" data-macro-name=\"code\">\n<div class=\"codeHeader panelHeader pdl\"><b>Sample Message from XCONF DCM Response<\/b><\/div>\n<div class=\"codeContent panelContent pdl\">\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">{\"urn:settings:GroupName\":\"test\",\"urn:settings:CheckOnReboot\":true,\"urn:settings:CheckSchedule:cron\":\"47\n9 * *\n*\",\"urn:settings:CheckSchedule:DurationMinutes\":10,\"urn:settings:CheckSchedule:StartDate\":\"2014-01-01\n01:01:01\",\"urn:settings:CheckSchedule:EndDate\":\"2017-11-01\n01:01:01\",\"urn:settings:LogUploadSettings:Message\":null,\"urn:settings:LogUploadSettings:Name\":\"test\",\"urn:settings:LogUploadSettings:NumberOfDays\":0,\"urn:settings:LogUploadSettings:UploadRepositoryName\":\"Amazon\",\"urn:settings:LogUploadSettings:RepositoryURL\":\"http:\/\/logs.xcal.tv\",\"urn:settings:LogUploadSettings:UploadOnReboot\":true,\"urn:settings:LogUploadSettings:upload\":true,\"urn:settings:LogUploadSettings:LogFiles\":[{\"id\":\"2609da75-59ed-494f-96a0-369328be6a9c\",\"name\":\"logfile1\",\"deleteOnUpload\":true},{\"id\":\"6cfb1b02-4147-4980-8e3c-26754d14329e\",\"name\":\"logfile2\",\"deleteOnUpload\":true}],\"urn:settings:LogUploadSettings:LogFiles:StartDate\":\"\",\"urn:settings:LogUploadSettings:LogFiles:EndDate\":\"\",\"urn:settings:LogUploadSettings:UploadSchedule:cron\":\"6\n2 * *\n*\",\"urn:settings:LogUploadSettings:UploadSchedule:levelone:cron\":null,\"urn:settings:LogUploadSettings:UploadSchedule:leveltwo:cron\":null,\"urn:settings:LogUploadSettings:UploadSchedule:levelthree:cron\":\"3\",\"urn:settings:LogUploadSettings:UploadSchedule:DurationMinutes\":20,\"urn:settings:LogUploadSettings:UploadSchedule:StartDate\":\"2014-01-01\n01:01:01\",\"urn:settings:LogUploadSettings:UploadSchedule:EndDate\":\"2016-01-01\n01:01:01\",\"urn:settings:VODSettings:Name\":null,\"urn:settings:VODSettings:LocationsURL\":null,\"urn:settings:VODSettings:SRMIPList\":null}<\/pre>\n<\/div>\n<\/div>\n<p><\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">STB Script Design<\/h2>\n\n\n<p>Script will create temporary files split from the logs based on the seek value(Which keeps track of the point till we have looked in the logs). Once the strings are looked in the temporary file the script deletes the temporary file from the settop box. All the string\/SNMP queries that settop box has to monitor is derived from the DCM response.&nbsp;<\/p>\n\n\n<h2 class=\"wp-block-heading wp-main-header\">API Documentation&nbsp;<\/h2>\n\n\n<p>&nbsp;To know more about SoC\/Application level APIs details use in RDK, refer the link&nbsp;&nbsp;<a href=\"https:\/\/wiki.rdkcentral.com\/doxygen\/rdkv-opensourced\/d5\/d67\/group___d_c_a___a_p_i_s.html\" rel=\"nofollow\">DCA API Documentation<\/a><\/p>\n<p><\/p>\n<p><\/p>\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Overview Data Collection and Analysis (DCA) is responsible for collecting the data from various log [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":0,"parent":9844,"menu_order":6,"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-9880","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>DCA - 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\/rdk_video_documentation\/components\/dca\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DCA - RDK Documentation Portal | Documentation\" \/>\n<meta property=\"og:description\" content=\"Overview Data Collection and Analysis (DCA) is responsible for collecting the data from various log [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dca\/\" \/>\n<meta property=\"og:site_name\" content=\"RDK Documentation Portal | Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-25T05:18:35+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=\"3 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\/rdk_video_documentation\/components\/dca\/\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dca\/\",\"name\":\"DCA - RDK Documentation Portal | Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\"},\"datePublished\":\"2022-06-21T09:10:28+00:00\",\"dateModified\":\"2025-03-25T05:18:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dca\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dca\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dca\/#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\":\"RDK Video\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Components\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"DCA\"}]},{\"@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":"DCA - 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\/rdk_video_documentation\/components\/dca\/","og_locale":"en_US","og_type":"article","og_title":"DCA - RDK Documentation Portal | Documentation","og_description":"Overview Data Collection and Analysis (DCA) is responsible for collecting the data from various log [&hellip;]","og_url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dca\/","og_site_name":"RDK Documentation Portal | Documentation","article_modified_time":"2025-03-25T05:18:35+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dca\/","url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dca\/","name":"DCA - RDK Documentation Portal | Documentation","isPartOf":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website"},"datePublished":"2022-06-21T09:10:28+00:00","dateModified":"2025-03-25T05:18:35+00:00","breadcrumb":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dca\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dca\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/dca\/#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":"RDK Video","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/"},{"@type":"ListItem","position":4,"name":"Components","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_video_documentation\/components\/"},{"@type":"ListItem","position":5,"name":"DCA"}]},{"@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\/9880","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\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/comments?post=9880"}],"version-history":[{"count":3,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9880\/revisions"}],"predecessor-version":[{"id":11667,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9880\/revisions\/11667"}],"up":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9844"}],"wp:attachment":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/media?parent=9880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}