{"id":9467,"date":"2020-10-15T10:13:56","date_gmt":"2020-10-15T17:13:56","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=9467"},"modified":"2025-06-13T18:21:22","modified_gmt":"2025-06-14T01:21:22","slug":"when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/","title":{"rendered":"Couchbase &amp; Splunk: A Real-Time AI-Driven Analytics Platform"},"content":{"rendered":"<p><em>This article builds on top of the session \u201cWhen Couchbase meets Splunk, the real-time, AI-driven data analytics platform\u201d presented at Couchbase Connect Online 2020 by James Powenski and Andrea Vasco.<\/em><\/p>\n<h2>The Wall of Confusion<\/h2>\n<p>Ever since I was a University student, I had always been fascinated with data science. Back in the day, it was not yet a thing one would brag about &#8211; but I still remember how I felt the first time I stumbled upon estimation theory.<\/p>\n<p>We now live in a Golden Age of Data, an era in which datasets grew exponentially, becoming publicly available; today, many great platforms provide streamlined ways to take advantage of machine learning and deep learning techniques to bring the decision-making process to a superhuman level.<\/p>\n<p><strong>Multi-Dimensional Scaling<\/strong> (MDS) is one of my preferred Couchbase features, with a soft spot for Indexing, Querying, and Analytics workloads isolation: I spent several years mining data on relational databases looking for patterns and correlations across large datasets, and many times I found myself \u2013 needless to say &#8211; running complex queries that would generate friction with DBAs about locks, degradation of performance, and so on.<\/p>\n<p>I hit hard on the so-called <a href=\"https:\/\/levelup.gitconnected.com\/the-wall-of-confusion-623057a4dd26\">Wall of Confusion<\/a>, I guess. This problem was (and is) too so dear to me that in 2013 we <a href=\"https:\/\/www.slideshare.net\/RenatoBonomini\/ccmg-movirioracleworkloadcharacterization\">wrote a paper<\/a> about the demystification of Oracle workload characterization.<\/p>\n<h2>Setting the scene: bringing Continuous Intelligence in ACME<\/h2>\n<p>In 2019, Gartner identified <a href=\"https:\/\/www.gartner.com\/en\/information-technology\/glossary\/continuous-intelligence\">Continuous Intelligence<\/a> as a <a href=\"https:\/\/www.striim.com\/blog\/2019\/05\/gartner-identifies-continuous-intelligence-as-top-10-trend-for-2019\/\">Top-10 Analytics trend<\/a>, estimating that by 2022 &#8220;<em>more than 50% of all business initiatives will require continuous intelligence, leveraging streaming data to enhance real-time decision-making&#8221;. <\/em><\/p>\n<p>In this article \u2013 and series \u2013 we will walk you through a practical way to get yourself started with Continuous Intelligence with Couchbase, aiming at disrupting your business towards digital transformation without significantly impacting your daily operations; we will pretend to be a <a href=\"https:\/\/landing.google.com\/sre\/\">Site Reliability Engineer (SRE)<\/a> at ACME Inc., tasked with the mission of implementing Continuous Intelligence for ACME\u2019s online store.<\/p>\n<p>We will assume you have a basic familiarity with <a href=\"https:\/\/docs.couchbase.com\/server\/current\/analytics\/introduction.html\">Couchbase Analytics<\/a>. As shown in the picture below, Couchbase Analytics allows to create, in real-time, shadow copies of data stored into the KV Engine within a Massive Parallel Processing (MPP) architecture, that can be used to either query the shadow data using a SQL-like language (SQL++) and expose large, pre-aggregated datasets to third party solutions for further processing.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9469 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/10\/Picture1.png\" alt=\"\" width=\"604\" height=\"400\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/Picture1.png 604w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/Picture1-300x199.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/Picture1-20x13.png 20w\" sizes=\"auto, (max-width: 604px) 100vw, 604px\" \/><\/p>\n<p>Couchbase provides the foundational technology needed to kickstart ACME\u2019s journey towards Continuous Intelligence: the flexibility of NoSQL built onto a platform capable of sub-millisecond operations, workload isolation, multi-dimensional linear scalability, and integration with third-party solutions, all combined in one elegant platform spanning from the Multi-cloud to the Edge.<\/p>\n<p>As SRE at ACME, we can easily understand how Couchbase can provide a world-class enterprise data plane for the next-gen online store. What about business logic, though?<\/p>\n<p>Well, it depends on what kind of business logic is needed from our business: Couchbase provides, out of the box, a complete set of capabilities required to either programmatically retrieve individual documents or run ad-hoc\/a priori queries (<a href=\"https:\/\/www.couchbase.com\/blog\/n1ql-to-query-or-to-analyze\/\"><strong>query or analyze<\/strong><\/a>). But for ACME\u2019s next-gen online store, we may want to elevate our game and scout synergies with the many enterprise solutions in today\u2019s market that ship the full analytics arsenal \u2013 data exploration, observability, data navigation, real-time dashboarding, Machine Learning, and AI.<\/p>\n<p>It goes without saying, Couchbase is designed to integrate with them, and in today\u2019s example, we will be using <a href=\"https:\/\/docs.couchbase.com\/server\/current\/analytics\/rest-analytics.html\"><strong>Couchbase Analytics REST APIs<\/strong><\/a> to integrate with <strong>Splunk<\/strong>.<\/p>\n<p>Why Splunk? Here are a few compelling reasons \u2013 without getting too much into detail:<\/p>\n<ul>\n<li><strong><u>Level of Adoption and Maturity<\/u><\/strong>: Splunk is a <a href=\"https:\/\/www.splunk.com\/en_us\/newsroom\/press-releases\/2020\/leading-industry-analyst-firm-ranks-splunk-first-in-itom-market-share-report-for-2019.html#:~:text=In%20the%20report%2C%20Splunk%20is,market%20revenue%20among%20ITOM%20vendors.\"><strong>market leader in the ITOM space<\/strong><\/a>, so chances are that your organization already as skills and environments for you to experiment with<\/li>\n<li><strong><u>Local Trial Version<\/u><\/strong>: if you are on a tight budget, you can install Splunk locally and use it for free for a 60 days trial period<\/li>\n<li><strong><u>Ease of Use<\/u><\/strong>: Splunk <a href=\"https:\/\/www.splunk.com\/en_us\/resources\/search-processing-language.html\"><strong>Search Processing Language (SPL)<\/strong><\/a> is quite easy to learn yet powerful, and there are tons of resources available to get you started<\/li>\n<li><strong><u>Splunk Apps<\/u><\/strong>: Splunk comes with a vibrant ecosystem of one-click-install applications, including a <a href=\"https:\/\/splunkbase.splunk.com\/app\/2890\/\"><strong>Machine Learning Toolkit<\/strong><\/a> capable of unlocking ML models without the need of coding \u2013 and ideal tool for beginners and those not entirely familiar with libraries like Pytorch, Pandas, TensorFlow.<\/li>\n<\/ul>\n<p>As an ACME SRE, we might ask ourselves: <strong>will a simple implementation be capable of delivering significant results? <\/strong>Data scientists will hopefully be willing to confirm, at the current state of the industry, the market\u2019s need for AI does not necessarily require the latest, cutting edge algorithms; as it turns out, traditional techniques like regression, outlier detection, clustering, sentiment analysis are the most effective tools that an organization can implement today to drive digital transformation.<\/p>\n<p>Naturally, it\u2019s a good practice to have a basic understanding of the theory behind these techniques. In contrast, you will not need to know about Convolutional Networks, Reinforcement Learning, Generative Adversarial Networks, Blenders, and so on.<\/p>\n<p>Well, it sounds like we have the plan \u2013 time for the rubber to hit the road! In the next paragraphs, we are going to:<\/p>\n<ul>\n<li>Generate and import into Couchbase a series of JSON documents representative of transactions performed onto the online store;<\/li>\n<li>Replicate this information into an Analytics dataset<\/li>\n<li>Use SQL++ to run queries on this Dataset, and collect the results into Splunk via the Analytics REST APIs.<\/li>\n<li>Use Splunk to create dashboards to showcase operational data and Machine Learning predictions in real time<a href=\"#_ftn1\" name=\"_ftnref1\">[1]<\/a><\/li>\n<\/ul>\n<p>Grab a cup of tea, and get ready: we are about to take off. Let\u2019s go!<\/p>\n<h2>6 Steps to Continuous Intelligence<\/h2>\n<h2>Step #1: Generating Data<\/h2>\n<p>To ensure compliance with the data regulations, we will use an online tool called <a href=\"https:\/\/www.json-generator.com\/\"><strong>JSON generator<\/strong><\/a><a href=\"#_ftnref2\" name=\"_ftnref1\"><strong>[2]<\/strong><\/a> to generate JSON documents representative of transactions on ACME\u2019s online store; below how we have configured the generation parameters<a href=\"#_ftnref3\" name=\"_ftnref2\">[3]<\/a>:<\/p>\n<pre class=\"lang:default decode:true \">[\r\n  '{{repeat(120\t,2000 )}}',\r\n  {\r\n    _id: 'order_{{objectId()}}',\r\n    orderId:'{{integer(90000,1256748321)}}',\r\n    transaction:'{{random(\"declined\",\"approved\")}}',\r\n    name: '{{firstName()}} {{surname()}}',\r\n    gender: '{{gender()}}',\r\n    email: '{{email()}}',\r\n    country: '{{country()}}',\r\n    city: '{{city()}}',\r\n    phone: '{{phone()}}',\r\n    ts: Date.now()+600000,\r\n    product: [\r\n\r\n\t\t'{{repeat(1,9)}}', \r\n      'product: {{random(\"apples\", \"tea bags\", \"butter\", \"milk\", \"kale\", \"wine\", \"cookies\", \"hamburgers\", \"sweet potatoes\", \"brown rice\", \"barley\" ) }}'\r\n    ]\r\n    \r\n  }\r\n ]\r\n<\/pre>\n<p>Once you click on \u201cGenerate\u201d, the tool will respond with a variable set of JSON documents (between 120 and 2000), as per the screenshot below.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9470 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/10\/Picture2.png\" alt=\"\" width=\"977\" height=\"385\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/Picture2.png 977w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/Picture2-300x118.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/Picture2-768x303.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/Picture2-20x8.png 20w\" sizes=\"auto, (max-width: 977px) 100vw, 977px\" \/><\/p>\n<p>We have our baseline, time to move to Couchbase!<\/p>\n<h2>Step #2: Importing data in Couchbase<\/h2>\n<p>We will assume to have a Couchbase cluster already available, running at least the data and the analytics service.<\/p>\n<p>As a first step, we will <a href=\"https:\/\/docs.couchbase.com\/server\/current\/manage\/manage-buckets\/create-bucket.html\">create a bucket<\/a> named <strong>couchmart<\/strong> (feel free to name it as you like) in which the JSON documents will be loaded.<\/p>\n<p>We will then <strong><u>upload the JSON files to the Couchbase cluster<\/u><\/strong>; pick a node running the <strong><u>data service<\/u><\/strong>, and import the files into the <em>\/tmp<\/em> folder (you can use any folder you like). If you have SCP available, run this command from the terminal of your local machine:<\/p>\n<pre class=\"lang:default decode:true \">Scp &lt;jsonfile&gt; &lt;couchbaseuser&gt;@&lt;couchbaseserver&gt;:\/tmp<\/pre>\n<p>Just make sure to set &lt;jsonfile&gt;, &lt;couchbaseuser&gt; and &lt;couchbaseserver&gt; according to your environment.<\/p>\n<p>Last, we will <strong><u>import the JSON files into the couchmart bucket<\/u><\/strong>, using the <em>cbimport<\/em> command (more information <a href=\"https:\/\/docs.couchbase.com\/server\/current\/tools\/cbimport.html\"><strong>here<\/strong><\/a>); first, log into the data node into which you previously uploaded the files via SSH:<\/p>\n<pre class=\"lang:default decode:true \">ssh &lt;couchbaseuser&gt;@&lt;couchbaseserver&gt;<\/pre>\n<p>Once successfully logged in, run the <em>cbimport <\/em>command as described below, making sure to set the fields between &lt;&gt; according to your environment:<\/p>\n<pre class=\"lang:default decode:true \">$CBHOME\/bin\/cbimport json -c couchbase:\/\/localhost -b &lt;bucketname&gt; -u &lt;user&gt; -\r\np &lt;password&gt; -f list -d file:\/\/\/tmp\/&lt;jsonfile&gt; -g %_id% -t 4\r\n<\/pre>\n<p>The import should complete in a bat of an eyelid, as Couchbase can handle orders of magnitude more. You should confirm that our bucket now has some documents from the Couchbase Admin UI in the buckets section \u2013 see screenshot below.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9471 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/10\/Pic3.png\" alt=\"\" width=\"977\" height=\"224\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/Pic3.png 977w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/Pic3-300x69.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/Pic3-768x176.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/Pic3-20x5.png 20w\" sizes=\"auto, (max-width: 977px) 100vw, 977px\" \/><\/p>\n<p>We have data; it\u2019s time for some Analytics!<\/p>\n<h2>Step #3: Create and test Analytics Datasets<\/h2>\n<p>As a first step, we will <strong><u>create a dataset named acmeorders<\/u><\/strong> (guess what? you can name it however you want!) <strong><u>as a shadow replica of the couchmart bucket<\/u><\/strong>; this dataset will contain all the information exposed downstream to Splunk.<\/p>\n<p>If you are not familiar with creating datasets, we recommend checking <a href=\"https:\/\/docs.couchbase.com\/server\/current\/analytics\/5_ddl.html\">the documentation<\/a> and <a href=\"https:\/\/docs.couchbase.com\/server\/current\/analytics\/primer-beer.html\">this tutorial<\/a>. Two SQL++ commands are all it takes to create a full replica of the couchmart buckets:<\/p>\n<pre class=\"lang:default decode:true \">CREATE DATASET acmeorders ON couchmart;<\/pre>\n<p>followed by:<\/p>\n<pre class=\"lang:default decode:true \">CONNECT LINK Local;<\/pre>\n<p>It can\u2019t get any easier than this!<\/p>\n<p>Since we are going to use the rest APIs, now is a good time to test them using the handy curl command below; as always, double-check the values within &lt;&gt; and the configured port for the analytics service:<\/p>\n<pre class=\"lang:default decode:true \">curl -v -u &lt;user&gt;:&lt;password&gt; --data-urlencode \"statement=select * from acmeorders;\" https:\/\/&lt;couchbaseserver&gt;:8095\/analytics\/service<\/pre>\n<p>If this command works, Couchbase is ready to roll. Before we move on to Splunk, please remember that:<\/p>\n<ul>\n<li>Couchbase Analytics service relies on a <strong><u>massive parallel processing architecture (MPP)<\/u><\/strong> that scales linearly; that means that should you need to double the performances, just double the nodes.<\/li>\n<li>In version 6.6, we introduced many great features to the Analytics service; make<a href=\"https:\/\/docs.couchbase.com\/server\/current\/analytics\/introduction.html\"><strong>\u00a0sure to check them out<\/strong><\/a>!<\/li>\n<\/ul>\n<p>All right, Couchbase has our back, time for some actionable intelligence!<\/p>\n<h2>Step #4: Setting up and configuring Splunk<\/h2>\n<p>For the rest of this document, we will assume to have Splunk running on Linux, so the paths might change if you are on Mac or Windows.<\/p>\n<p>If you don\u2019t have a Splunk instance available, you can <a href=\"https:\/\/www.splunk.com\/en_us\/download.html\">install a local instance<\/a> taking advantage of a 60-days free trial. A brand new local installation should take you no longer than 10 minutes to complete.<\/p>\n<p>Make sure to <strong><u>install the<\/u><\/strong> <a href=\"https:\/\/splunkbase.splunk.com\/app\/2890\/\">Splunk Machine Learning Toolkit<\/a>, as well; if you need to know more about how to install a Splunk app, <a href=\"https:\/\/community.splunk.com\/t5\/Archive\/How-to-install-a-splunk-app\/m-p\/87912\">click here<\/a> \u2013 it\u2019s super simple!<\/p>\n<p>To effectively set up the integration with Couchbase (or any other source), it&#8217;s fundamental to <strong><u>configure Splunk to correctly interpret the output of the REST call from Couchbase<\/u><\/strong>\u00a0and store the information in a format effective for SPL. We will accomplish this by creating a new <a href=\"https:\/\/docs.splunk.com\/Splexicon:Sourcetype\">source type<\/a>: in short, a source type defines how Splunk parses data in input; we will not deep dive into how to create a source type, but will provide with a workable solution.<\/p>\n<p>Connect via SSH to your Splunk server, and then browse to:<\/p>\n<pre class=\"lang:default decode:true \">Cd $SPLUNKBASE\/etc\/system\/local<\/pre>\n<p>Create a new file called <strong>props.conf<\/strong> as follows:<\/p>\n<pre class=\"lang:default decode:true\">[couchbase]\r\nSEDCMD-remove_header = s\/(.+\\\"results\\\":\\s\\[\\s)\/\/g\r\nSEDCMD-remove_trailing_commas = s\/\\},\/}\/g\r\nSEDCMD-remove_footer = s\/(\\],\\s\\\"plans\\\".+)\/\/g\r\nTIME_PREFIX = \\\" ts\\\":\\s+\r\ncategory = Structure\r\ndisabled = false\r\npulldown_type = 1\r\nBREAK_ONLY_BEFORE_DATE = \r\nDATETIME_CONFIG = \r\nLINE_BREAKER = (,)\\s\\{\r\nNO_BINARY_CHECK = true\r\nSHOULD_LINEMERGE = false\r\n<\/pre>\n<p>Once saved, <a href=\"https:\/\/docs.splunk.com\/Documentation\/Splunk\/8.0.6\/Admin\/StartSplunk\"><strong>restart Splunk<\/strong><\/a>. You should now be able to use a new source type called <strong>couchbase<\/strong>; just\u00a0browse over Settings &gt; Source Types to double-check all looks good:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9472 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/10\/pic4.png\" alt=\"\" width=\"977\" height=\"372\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic4.png 977w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic4-300x114.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic4-768x292.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic4-20x8.png 20w\" sizes=\"auto, (max-width: 977px) 100vw, 977px\" \/><\/p>\n<p>It\u2019s now time to <a href=\"https:\/\/docs.splunk.com\/Documentation\/Splunk\/8.0.6\/Indexer\/Setupmultipleindexes#Create_events_indexes\"><strong>create a new Splunk Events Index<\/strong><\/a> that we will use to capture the ACME store transactions as queried from Couchbase; in Splunk, browse under Settings &gt; Indexes and click New, then configure a new Index as follows:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9473 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/10\/pic5.png\" alt=\"\" width=\"550\" height=\"577\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic5.png 550w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic5-286x300.png 286w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic5-300x315.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic5-20x20.png 20w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/p>\n<p>Please notice that we named the index <strong><u>acmeorders<\/u><\/strong>, and even though you can name it however you want, <strong><u>we strongly encourage you to keep the same name<\/u><\/strong> \u2013 so you will be able to use the files we\u2019ll share with you without modifying the underlying SPL code.<\/p>\n<p>Splunk is ready; let\u2019s open up the gates and let Couchbase feed some data!<\/p>\n<h2>Step #5: Importing data into Splunk<\/h2>\n<p><strong><u>Importing data into Splunk comes down to defining a <\/u><\/strong><a href=\"https:\/\/docs.splunk.com\/Documentation\/Splunk\/8.0.6\/Data\/WhatSplunkcanmonitor\">new data input<\/a>. Notice that many Splunk extensions are available to handle REST inputs; however, for simplicity, we will configure a <strong><u>script-based local input<\/u><\/strong><a href=\"#_ftnref4\" name=\"_ftnref1\">[4]<\/a>.<\/p>\n<p>First, <strong><u>we need to create a script<\/u><\/strong>; connect via SSH to your Splunk server, and then browse to:<\/p>\n<pre class=\"lang:default decode:true \">Cd $SPLUNKBASE\/bin\/scripts<\/pre>\n<p>Create a new file called <strong>acmeorders.sh<\/strong> as follows; make sure to grant execution permissions to the splunk user:<\/p>\n<pre class=\"lang:default decode:true \">#!\/bin\/bash\r\ncurl -v -u &lt;user&gt;:&lt;password&gt; --data-urlencode \"statement=select * from acmeorders where ts&gt;unix_time_from_datetime_in_ms(current_datetime())  - 90000;\" https:\/\/ &lt;couchbasenode&gt;:8095\/analytics\/service\r\n<\/pre>\n<p>As you might have noticed, the script uses the same curl command we used earlier while testing the acmeorders dataset, with a catch: <strong><u>a where condition<\/u><\/strong>. It\u2019s important to limit the amount of data being imported at each run to avoid massive data duplication, as we will be polling Couchbase every 30 seconds.<\/p>\n<p>The SQL++ where condition:<\/p>\n<pre class=\"lang:default decode:true \">Where ts&gt;unix_time_from_datetime_in_ms(current_datetime())  - 90000<\/pre>\n<p>will retrieve only those documents whose timestamp is <strong><u>at least<\/u><\/strong> 90 seconds old; in other words, we will be able to survive 2 failed polls without losing any data.<\/p>\n<p>Before moving on, it\u2019s important to underline how this approach may work well to run a proof of concept, while for production, you should consider more efficient ways to use placeholders and bookmarks to make sure only new data is read at any given time, or consider an <a href=\"https:\/\/docs.couchbase.com\/server\/current\/eventing\/eventing-overview.html\"><strong>eventing<\/strong><\/a><strong>-based strategy<\/strong> if applicable.<\/p>\n<p>Test the script by prompting on terminal:<\/p>\n<pre class=\"lang:default decode:true \">$SPLUNKBASE\/bin\/scripts\/acmescript.sh<\/pre>\n<p>If this test is successful, it\u2019s time to <strong><u>set up the new data input<\/u><\/strong>. In Splunk, navigate under Settings &gt; Data inputs, and choose a new local input based on a script.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9474 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/10\/pic6.png\" alt=\"\" width=\"977\" height=\"433\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic6.png 977w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic6-300x133.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic6-768x340.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic6-20x9.png 20w\" sizes=\"auto, (max-width: 977px) 100vw, 977px\" \/><\/p>\n<p>Click on Scripts, then New Local Scripts, and configure a new script as follows; first, configure the script path and polling frequency:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9475 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/10\/pic7.png\" alt=\"\" width=\"618\" height=\"418\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic7.png 618w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic7-300x203.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic7-235x160.png 235w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic7-20x14.png 20w\" sizes=\"auto, (max-width: 618px) 100vw, 618px\" \/><\/p>\n<p>Then, configure the input settings as shown below \u2013 paying attention to select <strong>couchbase<\/strong> as a <strong>source type<\/strong>, <strong>Search &amp; Reporting<\/strong> as <strong>App Context<\/strong>, and <strong>acmeorders<\/strong> as an <strong>index<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9476 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/10\/pic8.png\" alt=\"\" width=\"977\" height=\"706\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic8.png 977w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic8-300x217.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic8-768x555.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic8-20x14.png 20w\" sizes=\"auto, (max-width: 977px) 100vw, 977px\" \/><\/p>\n<p>Review and submit to save. <strong><u>To make sure that data is flowing into Splunk correctly<\/u><\/strong>, access the Search and Reporting App:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9477 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/10\/pic9.png\" alt=\"\" width=\"464\" height=\"218\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic9.png 464w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic9-300x141.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic9-20x9.png 20w\" sizes=\"auto, (max-width: 464px) 100vw, 464px\" \/><\/p>\n<p>and try the following SPL query \u2013 making sure to select <strong>All Time<\/strong> instead of <strong>Last 24 hours<\/strong> from the time filter combo box:<\/p>\n<pre class=\"lang:default decode:true \">index=\"acmeorders\" sourcetype=\"couchbase\" | dedup acmeorders.orderId | search acmeorders.product{}=* |  table _time,  acmeorders.name, acmeorders.gender, acmeorders.country, acmeorders.gender, acmeorders.city, acmeorders.orderId, acmeorders.product{} , acmeorders.transaction  | rename acmeorders.product{} as product | rename acmeorders.gender as gender | rename \"acmeorders.transaction\" as approval | rename acmeorders.orderId as orderId | rename acmeorders.name as name | rename acmeorders.country as country | rename acmeorders.city as city<\/pre>\n<p>You should see something similar to the picture below:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9478 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/10\/pic10.png\" alt=\"\" width=\"977\" height=\"466\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic10.png 977w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic10-300x143.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic10-768x366.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic10-20x10.png 20w\" sizes=\"auto, (max-width: 977px) 100vw, 977px\" \/><\/p>\n<p>If this test succeeds\u2026 <strong>Congratulations! You have integrated Splunk with Couchbase!<\/strong><\/p>\n<p>One final step: <strong>unleash Continuous Intelligence<\/strong>!<\/p>\n<h2>Step #6: Deploying a Splunk dashboard with ML-driven anomaly detection<\/h2>\n<p>To be considerate of time, we will not deep dive into how to create Dashboards and Machine Learning models in Splunk; instead, we will provide you with a fully functional dashboard configured to refresh itself every 30 seconds, taking advantage of the <a href=\"https:\/\/docs.splunk.com\/Documentation\/Splunk\/8.0.6\/Viz\/PanelreferenceforSimplifiedXML\">Simple XML Reference<\/a> featured in Splunk.<\/p>\n<p><strong><u>To import the template dashboard<\/u><\/strong>, log into Splunk, and in the Search and Reporting App click on Dashboards and then \u201cCreate a New Dashboard\u201d; give it a name of your choice, click on \u201cCreate Dashboard\u201d.<\/p>\n<p>On the top of the screen, you should now see the \u201cSource\u201d button &#8211; click on it:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9479 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/10\/pic11.png\" alt=\"\" width=\"977\" height=\"116\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic11.png 977w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic11-300x36.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic11-768x91.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic11-20x2.png 20w\" sizes=\"auto, (max-width: 977px) 100vw, 977px\" \/><\/p>\n<p>Just paste the XML code contained<a href=\"https:\/\/docs.google.com\/document\/d\/1sWxT0GQXQPej7Cg1aR5zqPn7ARyWjmWHHrNnRqIBmwY\/edit?usp=sharing\"><strong> in this file<\/strong><\/a>. Once done, click Save, and kick back\u2026 <strong>We are done!<\/strong><\/p>\n<p>As in the below picture, you should now have access to a dashboard showing the total orders ingested, information about products and transaction approvals, and outliers detected using Machine Learning \u2013 <strong><u>updated<\/u><\/strong><u> <strong>in real-time<\/strong><\/u><strong>!<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9480 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/10\/pic12.png\" alt=\"\" width=\"977\" height=\"577\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic12.png 977w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic12-300x177.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic12-768x454.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/pic12-20x12.png 20w\" sizes=\"auto, (max-width: 977px) 100vw, 977px\" \/><\/p>\n<h2>Call to Action: get the genie out of the bottle!<\/h2>\n<p>Before letting you go unleash <strong>Continuous Intelligence<\/strong> in your organization, here is our call to action for you:<\/p>\n<ul>\n<li><strong>Review the session<\/strong> James Powesnki, and I hosted at Couchbase Connect 2020, <em>\u201cWhen Couchbase meets Splunk\/ the real-time, AI-driven data analytics platform.\u201d<\/em><\/li>\n<li><strong>Run multiple new data imports<\/strong> using <a href=\"https:\/\/www.json-generator.com\/\">JSON generator<\/a> and the same procedure we used before (or any equivalent solution) to better <strong>appreciate how fast changes are propagated downstream<\/strong><\/li>\n<li><strong>Experiment with outliers<\/strong>, in example running <a href=\"https:\/\/www.json-generator.com\/\"><strong>JSON generator<\/strong><\/a> with the configuration shown below, that will generate up to two documents, with a <em>null<\/em> name attribute and a dummy product name that should trigger the outlier detection:\n<pre class=\"lang:default decode:true \">[\r\n  '{{repeat(1,2)}}',\r\n  {\r\n    _id: 'order_{{objectId()}}',\r\n    orderId:'{{integer(90000,1256748321)}}',\r\n    transaction:'{{random(\"declined\",\"approved\")}}',\r\n    name: '',\r\n    gender: '{{gender()}}',\r\n    email: '{{email()}}',\r\n    country: '{{country()}}',\r\n    city: '{{city()}}',\r\n    phone: '{{phone()}}',\r\n    ts: Date.now()+600000,\r\n    product: [\r\n\t\t'this is a joke'\r\n    ] \r\n  }  \r\n]\r\n<\/pre>\n<\/li>\n<li><strong>Experiment with other ML-driven insight!<\/strong> For the purpose of this article, we focused on Outlier Detection as it is the only analysis that could be easily exported into XML; there are many other value routes worth exploring, though:\n<ul>\n<li><strong>Clustering: <\/strong>to segment the customer base<\/li>\n<li><strong>Forecasts: <\/strong>to predict the demand for goods, taking into account seasonality<\/li>\n<li><strong>Category Predictions:<\/strong> to anticipate customer\u2019s needs and drive retention<\/li>\n<\/ul>\n<\/li>\n<li><strong>Enhance the analytics datasets<\/strong> taking advantage of the <a href=\"https:\/\/www.couchbase.com\/products\/server\/whats-new\/\"><strong>new Remote Links and External Data features<\/strong><\/a> introduced in Couchbase 6.6<\/li>\n<\/ul>\n<p>Thanks for reading through the full post; I hope you have found it insightful. If you have any questions, please feel free to <a href=\"mailto:andrea.vasco@couchbase.com\">reach out to me<\/a>\u00a0or get in touch with your closest Couchbase representative!<\/p>\n<h3>Now get out there, and lead your business to the next level!<\/h3>\n<p><a href=\"#_ftnref1\" name=\"_ftn1\">[1]<\/a> Refresh every 30 seconds<\/p>\n<p><a href=\"#_ftnref2\" name=\"_ftn1\">[2]<\/a> <a href=\"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/\">FakeIt<\/a> would make another great option as well, more powerful yet slightly more complicated<\/p>\n<p><a href=\"#_ftnref3\" name=\"_ftn2\">[3]<\/a> We adjusted the timestamp <em>ts<\/em> to match the clock on the Couchbase Cluster; feel free to modify it accordingly to your needs<\/p>\n<p><a href=\"#_ftnref4\" name=\"_ftn1\">[4]<\/a> Depending on your needs, it might not be the most efficient solution, but it\u2019s an easy way to get you started<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article builds on top of the session \u201cWhen Couchbase meets Splunk, the real-time, AI-driven data analytics platform\u201d presented at Couchbase Connect Online 2020 by James Powenski and Andrea Vasco. The Wall of Confusion Ever since I was a University [&hellip;]<\/p>\n","protected":false},"author":68758,"featured_media":9481,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[10122,1815,2294,9411,1812],"tags":[1445,9271],"ppma_author":[9116],"class_list":["post-9467","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artificial-intelligence-ai","category-best-practices-and-tutorials","category-analytics","category-multi-dimensional-scaling","category-n1ql-query","tag-mds","tag-multi-dimensional-scaling"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Couchbase &amp; Splunk: A Real-Time AI-Driven Analytics Platform - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Get started in Continuous Intelligence with Couchbase Analytics and Splunk&#039;s machine learning toolkit for powerful realtime dashboard monitoring\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase &amp; Splunk: A Real-Time AI-Driven Analytics Platform\" \/>\n<meta property=\"og:description\" content=\"Get started in Continuous Intelligence with Couchbase Analytics and Splunk&#039;s machine learning toolkit for powerful realtime dashboard monitoring\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-10-15T17:13:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T01:21:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/When-Couchbase-meets-Splunk-the-real-time-AI-driven-data-analytics-platform.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"627\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Andrea Vasco, Solutions Engineer, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/When-Couchbase-meets-Splunk-the-real-time-AI-driven-data-analytics-platform.png\" \/>\n<meta name=\"twitter:creator\" content=\"@AndreUanKenobi\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andrea Vasco, Solutions Engineer, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/\"},\"author\":{\"name\":\"Andrea Vasco, Solutions Engineer, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/ee354ae42cbd654f6755b3a9a0e517df\"},\"headline\":\"Couchbase &amp; Splunk: A Real-Time AI-Driven Analytics Platform\",\"datePublished\":\"2020-10-15T17:13:56+00:00\",\"dateModified\":\"2025-06-14T01:21:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/\"},\"wordCount\":2604,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/franki-chamaki-1K6IQsQbizI-unsplash-scaled.jpg\",\"keywords\":[\"MDS\",\"Multi-Dimensional Scaling (MDS)\"],\"articleSection\":[\"Artificial Intelligence (AI)\",\"Best Practices and Tutorials\",\"Couchbase Analytics\",\"Multi-Dimensional Scaling (MDS)\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/\",\"name\":\"Couchbase &amp; Splunk: A Real-Time AI-Driven Analytics Platform - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/franki-chamaki-1K6IQsQbizI-unsplash-scaled.jpg\",\"datePublished\":\"2020-10-15T17:13:56+00:00\",\"dateModified\":\"2025-06-14T01:21:22+00:00\",\"description\":\"Get started in Continuous Intelligence with Couchbase Analytics and Splunk's machine learning toolkit for powerful realtime dashboard monitoring\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/franki-chamaki-1K6IQsQbizI-unsplash-scaled.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/franki-chamaki-1K6IQsQbizI-unsplash-scaled.jpg\",\"width\":2560,\"height\":1920},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase &amp; Splunk: A Real-Time AI-Driven Analytics Platform\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/ee354ae42cbd654f6755b3a9a0e517df\",\"name\":\"Andrea Vasco, Solutions Engineer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/95cd74d91f6ccdd6ed60ccbabb940fa1\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6111b4a3fc286ab3305ed0f5a95964cf0cb4e4d86793487ab0c5a1aec2871df5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6111b4a3fc286ab3305ed0f5a95964cf0cb4e4d86793487ab0c5a1aec2871df5?s=96&d=mm&r=g\",\"caption\":\"Andrea Vasco, Solutions Engineer, Couchbase\"},\"description\":\"Playing around, meeting with people, breaking stuff, and making things happen. Capable of turning coffee into Engineering, Triathlon, and Blues.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/andreavasco\/\",\"https:\/\/x.com\/AndreUanKenobi\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/andreuankenobi\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbase &amp; Splunk: A Real-Time AI-Driven Analytics Platform - The Couchbase Blog","description":"Get started in Continuous Intelligence with Couchbase Analytics and Splunk's machine learning toolkit for powerful realtime dashboard monitoring","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:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/","og_locale":"en_US","og_type":"article","og_title":"Couchbase &amp; Splunk: A Real-Time AI-Driven Analytics Platform","og_description":"Get started in Continuous Intelligence with Couchbase Analytics and Splunk's machine learning toolkit for powerful realtime dashboard monitoring","og_url":"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/","og_site_name":"The Couchbase Blog","article_published_time":"2020-10-15T17:13:56+00:00","article_modified_time":"2025-06-14T01:21:22+00:00","og_image":[{"width":1200,"height":627,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/When-Couchbase-meets-Splunk-the-real-time-AI-driven-data-analytics-platform.png","type":"image\/png"}],"author":"Andrea Vasco, Solutions Engineer, Couchbase","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/When-Couchbase-meets-Splunk-the-real-time-AI-driven-data-analytics-platform.png","twitter_creator":"@AndreUanKenobi","twitter_misc":{"Written by":"Andrea Vasco, Solutions Engineer, Couchbase","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/"},"author":{"name":"Andrea Vasco, Solutions Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/ee354ae42cbd654f6755b3a9a0e517df"},"headline":"Couchbase &amp; Splunk: A Real-Time AI-Driven Analytics Platform","datePublished":"2020-10-15T17:13:56+00:00","dateModified":"2025-06-14T01:21:22+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/"},"wordCount":2604,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/franki-chamaki-1K6IQsQbizI-unsplash-scaled.jpg","keywords":["MDS","Multi-Dimensional Scaling (MDS)"],"articleSection":["Artificial Intelligence (AI)","Best Practices and Tutorials","Couchbase Analytics","Multi-Dimensional Scaling (MDS)","SQL++ \/ N1QL Query"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/","url":"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/","name":"Couchbase &amp; Splunk: A Real-Time AI-Driven Analytics Platform - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/franki-chamaki-1K6IQsQbizI-unsplash-scaled.jpg","datePublished":"2020-10-15T17:13:56+00:00","dateModified":"2025-06-14T01:21:22+00:00","description":"Get started in Continuous Intelligence with Couchbase Analytics and Splunk's machine learning toolkit for powerful realtime dashboard monitoring","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/franki-chamaki-1K6IQsQbizI-unsplash-scaled.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/10\/franki-chamaki-1K6IQsQbizI-unsplash-scaled.jpg","width":2560,"height":1920},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/when-couchbase-meets-splunk-the-real-time-ai-driven-data-analytics-platform\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase &amp; Splunk: A Real-Time AI-Driven Analytics Platform"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/ee354ae42cbd654f6755b3a9a0e517df","name":"Andrea Vasco, Solutions Engineer, Couchbase","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/95cd74d91f6ccdd6ed60ccbabb940fa1","url":"https:\/\/secure.gravatar.com\/avatar\/6111b4a3fc286ab3305ed0f5a95964cf0cb4e4d86793487ab0c5a1aec2871df5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6111b4a3fc286ab3305ed0f5a95964cf0cb4e4d86793487ab0c5a1aec2871df5?s=96&d=mm&r=g","caption":"Andrea Vasco, Solutions Engineer, Couchbase"},"description":"Playing around, meeting with people, breaking stuff, and making things happen. Capable of turning coffee into Engineering, Triathlon, and Blues.","sameAs":["https:\/\/www.linkedin.com\/in\/andreavasco\/","https:\/\/x.com\/AndreUanKenobi"],"url":"https:\/\/www.couchbase.com\/blog\/author\/andreuankenobi\/"}]}},"authors":[{"term_id":9116,"user_id":68758,"is_guest":0,"slug":"andreuankenobi","display_name":"Andrea Vasco, Solutions Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/6111b4a3fc286ab3305ed0f5a95964cf0cb4e4d86793487ab0c5a1aec2871df5?s=96&d=mm&r=g","author_category":"","last_name":"Vasco, Solutions Engineer, Couchbase","first_name":"Andrea","job_title":"","user_url":"","description":"Playing around, meeting with people, breaking stuff, and making things happen. Capable of turning coffee into Engineering, Triathlon, and Blues."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/9467","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/68758"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=9467"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/9467\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/9481"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=9467"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=9467"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=9467"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=9467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}