{"id":338,"date":"2020-03-05T17:10:37","date_gmt":"2020-03-05T16:10:37","guid":{"rendered":"http:\/\/thomas-kopton.de\/vblog\/?p=338"},"modified":"2020-07-29T12:57:55","modified_gmt":"2020-07-29T11:57:55","slug":"parsing-csv-files-using-vrealize-log-insight","status":"publish","type":"post","link":"https:\/\/thomas-kopton.de\/vblog\/?p=338","title":{"rendered":"Parsing CSV Files using vRealize Log Insight"},"content":{"rendered":"\n<p>Last year I published a blog post focusing on the <strong>JSON parser<\/strong> available in <strong>vRealize Log Insight<\/strong> (<a href=\"https:\/\/thomas-kopton.de\/vblog\/?p=144\">https:\/\/thomas-kopton.de\/vblog\/?p=144<\/a>) and I believe this could have been a beginning of a series \u2013 \u201c<strong>vRLI Parsers<\/strong> \u201c.<\/p>\n\n\n\n<p>In this post I will show how to configure and utilize the <strong>CSV parser<\/strong> using a very prominent and media-effective use case:<\/p>\n\n\n\n<p class=\"has-text-color has-medium-font-size has-vivid-red-color\"><strong>COVID-19\naka Coronavirus!<\/strong><strong><\/strong><\/p>\n\n\n\n<p>The needed data is publicly available, e.g. here:<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/CSSEGISandData\/COVID-19\">https:\/\/github.com\/CSSEGISandData\/COVID-19<\/a> The actual data sources are listed on the GitHub project page and the data itself is already in the format we need to feed it into vRLI \u2013 CSV files. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Data Review<\/h4>\n\n\n\n<p> The time series data files provided by CSSE are in the following format: <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1031\" height=\"427\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-1.png\" alt=\"\" class=\"wp-image-340\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-1.png 1031w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-1-300x124.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-1-1024x424.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-1-768x318.png 768w\" sizes=\"auto, (max-width: 1031px) 100vw, 1031px\" \/><\/a><figcaption><em>Figure 1: CSSE CSV file format<\/em><\/figcaption><\/figure>\n\n\n\n<p>Or shown as raw data:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1031\" height=\"375\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-2.png\" alt=\"\" class=\"wp-image-342\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-2.png 1031w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-2-300x109.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-2-1024x372.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-2-768x279.png 768w\" sizes=\"auto, (max-width: 1031px) 100vw, 1031px\" \/><\/a><figcaption><em>Figure 2: CSSE CSV file format &#8211; in an editor<\/em><\/figcaption><\/figure>\n\n\n\n<p>vRealize Log Insight processes every single CSV row as one message and if we do not specify our own timestamp as part of the message, vRLI will use the <strong>ingestion time<\/strong> as the <strong>timestamp<\/strong> for the message. This is clearly nothing we would like to have in order to have some meaningful diagrams showing us e.g. how the virus spreads in various countries. We will change the timestamp accordingly.<\/p>\n\n\n\n<p>We also see that the original data contains \u201c,\u201d signs as part of province or state names, this is not compatible with the vRLI CSV parser as it would change the number and content of the fields. I have used Numbers on my Mac to &#8220;clean up&#8221; the file and replace the real &#8220;,&#8221; field separation signs with &#8220;;&#8221;.<\/p>\n\n\n\n<p>To ingest the data, we will use the vRLI agent and an appropriate configuration of the agent. <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">vRLI Agent Config <\/h4>\n\n\n\n<p>My setup in for this use case is:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>vRLI 8.0.0-14870409 <\/li><li>vRLI agent 8.0.0.14743436<\/li><li>vRLI agent      installed on a Debian OS<\/li><li>Agent successfully connected to vRLI<\/li><\/ul>\n\n\n\n<p>The configuration of the agent to parse CSV files is general pretty simple.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"> [filelog|some_csv_logs]\n directory=\/tmp\/corona-data\n include=*.txt;*.csv\n parser=mycsv\n &nbsp;\n [parser|mycsv]\n base_parser=csv\n delimiter = \";\"\n debug=yes\n fields=timestamp,testrun,location,country,confnumber\n field_decoder={\"timestamp\":\"tsp_parser\"}\n &nbsp;\n [parser|tsp_parser]\n base_parser=timestamp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \n debug=yes\n ;format=%Y-%m-%d %H:%M:%S\n format=%s <\/pre>\n\n\n\n<p>Let us take the configuration to pieces and analyze what the single parts are doing. The first four lines, 1 \u2013 4, contains the main section telling vRLI where to look for specified files and what parser to use to process the messages stored in those files. The parser is not specified directly as one of the OOB parsers but as a parser section. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"949\" height=\"460\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-3.png\" alt=\"\" class=\"wp-image-345\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-3.png 949w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-3-300x145.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-3-768x372.png 768w\" sizes=\"auto, (max-width: 949px) 100vw, 949px\" \/><\/a><figcaption><em>Figure 3: Parser configuration &#8211; part 1<\/em><\/figcaption><\/figure>\n\n\n\n<p>Lines 6 \u2013 11 contains the actual parser\nconfiguration. In this section we specify the <strong>base parser<\/strong>, means one of\nthe parsers available in vRLI. In our case csv.<\/p>\n\n\n\n<p>Line 10 describes how to name the fields\nextracted from every row in a CSV file, separated by \u201c;\u201d in my case. The specification\nof <strong>fields has to match exactly the number of fields in the file<\/strong> we want\nto parse, and every single line of the file needs to have exactly the same\nnumber of fields. The fields itself might be empty. In this case we expect lines\nin our csv file containing exactly five values separated by \u201c;\u201d.<\/p>\n\n\n\n<p>We assume the first value is a timestamp, the second one will be a number we will use later on to filter for messages in vRLI in case we ingest the same set of data several times, like every day. Location and country are pretty clear and \u201c<em>confnumber<\/em>\u201d is the actual number of confirmed cases as in the repository by Johns Hopkins CSSE. Line 11 specifies a special <strong>decoder<\/strong> for a field extracted in line 10 \u2013 here we will use a special decoder to decode or parse the timestamp. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"444\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-4-1024x444.png\" alt=\"\" class=\"wp-image-346\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-4-1024x444.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-4-300x130.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-4-768x333.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-4.png 1089w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption><em>Figure 4: Parser configuration &#8211; part 2<\/em><\/figcaption><\/figure>\n\n\n\n<p>Lines 13 \u2013 14 specifies our decoder for the timestamp field. A decoder is just another term for parser. As for every parser we specify the base parser, line 14. Line 17 tells the timestamp parser how to process the value in the \u201ctimestamp\u201d field. In this case we expect the value to be an UNIX epoch timestamp. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-5.png\"><img loading=\"lazy\" decoding=\"async\" width=\"914\" height=\"472\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-5.png\" alt=\"\" class=\"wp-image-348\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-5.png 914w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-5-300x155.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-5-768x397.png 768w\" sizes=\"auto, (max-width: 914px) 100vw, 914px\" \/><\/a><figcaption><em>Figure 5: Parser configuration &#8211; part 3<\/em><\/figcaption><\/figure>\n\n\n\n<p>With this configuration we expect the data in a csv file to have the following format (example):<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-6.png\"><img loading=\"lazy\" decoding=\"async\" width=\"937\" height=\"193\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-6.png\" alt=\"\" class=\"wp-image-349\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-6.png 937w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-6-300x62.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-6-768x158.png 768w\" sizes=\"auto, (max-width: 937px) 100vw, 937px\" \/><\/a><figcaption><em>Figure 6: CSV format for the vRLI parser<\/em><\/figcaption><\/figure>\n\n\n\n<p>I am using the timestamp instead of the date\nas in the original file because:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>The <strong>format<\/strong> used by Johns Hopkins CSSE is not optimal for the vRLI timestamp parser<\/li><li>I want to see all data in a short <strong>time frame<\/strong> in vRLI. The goal is to have a fancy diagram to compare the numbers across different countries.<\/li><\/ol>\n\n\n\n<p>We will replace the original timestamps, which are day per data point, with 10ms steps per data point.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Format Adjustment <\/h4>\n\n\n\n<p>As we can see, the original csv file needs\nto be \u201cslightly\u201d adjusted to be correctly parsed by the parser we configured.<\/p>\n\n\n\n<p>This is pretty easy to achieve with few lines. PowerShell, Bash or in my case <strong>vRO<\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-7.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1089\" height=\"627\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-7.png\" alt=\"\" class=\"wp-image-350\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-7.png 1089w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-7-300x173.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-7-1024x590.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-7-768x442.png 768w\" sizes=\"auto, (max-width: 1089px) 100vw, 1089px\" \/><\/a><figcaption><em>Figure 7: vRO Workflow to adjust the csv file<\/em><\/figcaption><\/figure>\n\n\n\n<p>This very simple workflow can be found on VMware Code soon. I will update the link shortly.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Data Import <\/h4>\n\n\n\n<p>Now we are ready to let vRealize Log Insight do the job. Just put the new csv file into the specified folder on the box where you have configured the vRLI agent, wait few seconds, every day in the original file is a second in the parsed file, and analyze the numbers.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-8.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1089\" height=\"375\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-8.png\" alt=\"\" class=\"wp-image-352\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-8.png 1089w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-8-300x103.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-8-1024x353.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-8-768x264.png 768w\" sizes=\"auto, (max-width: 1089px) 100vw, 1089px\" \/><\/a><figcaption><br><em>Figure 7: vRLI analyzing Coronavirus data &#8211; 1<\/em><\/figcaption><\/figure>\n\n\n\n<p>Let\u2019s see how we are doing here in Germany compared to Italy and US:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-9.png\"><img loading=\"lazy\" decoding=\"async\" width=\"3576\" height=\"1224\" src=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-9.png\" alt=\"\" class=\"wp-image-353\" srcset=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-9.png 3576w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-9-300x103.png 300w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-9-1024x350.png 1024w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-9-768x263.png 768w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-9-1536x526.png 1536w, https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-9-2048x701.png 2048w\" sizes=\"auto, (max-width: 3576px) 100vw, 3576px\" \/><\/a><figcaption><em>Figure 7: vRLI analyzing Coronavirus data &#8211; <\/em>8<\/figcaption><\/figure>\n\n\n\n<p class=\"has-text-color has-medium-font-size has-vivid-cyan-blue-color\"><strong>Stay safe!<\/strong><\/p>\n\n\n\n<p>Thomas &#8211; <a href=\"https:\/\/twitter.com\/ThomasKopton\">https:\/\/twitter.com\/ThomasKopton<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last year I published a blog post focusing on the JSON parser available in vRealize Log Insight (https:\/\/thomas-kopton.de\/vblog\/?p=144) and I believe this could have been a beginning of a series \u2013 \u201cvRLI Parsers \u201c. In this post I will show how to configure and utilize the CSV parser using a very prominent and media-effective use &#8230;<\/p>\n","protected":false},"author":1,"featured_media":352,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22],"tags":[35,8,7],"class_list":["post-338","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-vrealize-log-insight","tag-csv","tag-parser","tag-vrli"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Parsing CSV Files using vRealize Log Insight - TOMsOps<\/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:\/\/thomas-kopton.de\/vblog\/?p=338\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Parsing CSV Files using vRealize Log Insight - TOMsOps\" \/>\n<meta property=\"og:description\" content=\"Last year I published a blog post focusing on the JSON parser available in vRealize Log Insight (https:\/\/thomas-kopton.de\/vblog\/?p=144) and I believe this could have been a beginning of a series \u2013 \u201cvRLI Parsers \u201c. In this post I will show how to configure and utilize the CSV parser using a very prominent and media-effective use ...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thomas-kopton.de\/vblog\/?p=338\" \/>\n<meta property=\"og:site_name\" content=\"TOMsOps\" \/>\n<meta property=\"article:published_time\" content=\"2020-03-05T16:10:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-07-29T11:57:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-8.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1089\" \/>\n\t<meta property=\"og:image:height\" content=\"375\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Thomas Kopton\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thomas Kopton\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=338#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=338\"},\"author\":{\"name\":\"Thomas Kopton\",\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/#\\\/schema\\\/person\\\/892d6b96c66b1dd4b75c6e32fdbfea82\"},\"headline\":\"Parsing CSV Files using vRealize Log Insight\",\"datePublished\":\"2020-03-05T16:10:37+00:00\",\"dateModified\":\"2020-07-29T11:57:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=338\"},\"wordCount\":901,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=338#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/wp-content\\\/uploads\\\/2020\\\/03\\\/Picture-8.png\",\"keywords\":[\"csv\",\"parser\",\"vRLI\"],\"articleSection\":[\"vRealize Log Insight\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=338#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=338\",\"url\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=338\",\"name\":\"Parsing CSV Files using vRealize Log Insight - TOMsOps\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=338#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=338#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/wp-content\\\/uploads\\\/2020\\\/03\\\/Picture-8.png\",\"datePublished\":\"2020-03-05T16:10:37+00:00\",\"dateModified\":\"2020-07-29T11:57:55+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/#\\\/schema\\\/person\\\/892d6b96c66b1dd4b75c6e32fdbfea82\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=338#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=338\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=338#primaryimage\",\"url\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/wp-content\\\/uploads\\\/2020\\\/03\\\/Picture-8.png\",\"contentUrl\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/wp-content\\\/uploads\\\/2020\\\/03\\\/Picture-8.png\",\"width\":1089,\"height\":375},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?p=338#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Parsing CSV Files using vRealize Log Insight\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/#website\",\"url\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/\",\"name\":\"TOMsOps\",\"description\":\"Just another VMware Cloud Management Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/#\\\/schema\\\/person\\\/892d6b96c66b1dd4b75c6e32fdbfea82\",\"name\":\"Thomas Kopton\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g\",\"caption\":\"Thomas Kopton\"},\"url\":\"https:\\\/\\\/thomas-kopton.de\\\/vblog\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Parsing CSV Files using vRealize Log Insight - TOMsOps","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:\/\/thomas-kopton.de\/vblog\/?p=338","og_locale":"en_US","og_type":"article","og_title":"Parsing CSV Files using vRealize Log Insight - TOMsOps","og_description":"Last year I published a blog post focusing on the JSON parser available in vRealize Log Insight (https:\/\/thomas-kopton.de\/vblog\/?p=144) and I believe this could have been a beginning of a series \u2013 \u201cvRLI Parsers \u201c. In this post I will show how to configure and utilize the CSV parser using a very prominent and media-effective use ...","og_url":"https:\/\/thomas-kopton.de\/vblog\/?p=338","og_site_name":"TOMsOps","article_published_time":"2020-03-05T16:10:37+00:00","article_modified_time":"2020-07-29T11:57:55+00:00","og_image":[{"width":1089,"height":375,"url":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-8.png","type":"image\/png"}],"author":"Thomas Kopton","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Thomas Kopton","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=338#article","isPartOf":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=338"},"author":{"name":"Thomas Kopton","@id":"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82"},"headline":"Parsing CSV Files using vRealize Log Insight","datePublished":"2020-03-05T16:10:37+00:00","dateModified":"2020-07-29T11:57:55+00:00","mainEntityOfPage":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=338"},"wordCount":901,"commentCount":0,"image":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=338#primaryimage"},"thumbnailUrl":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-8.png","keywords":["csv","parser","vRLI"],"articleSection":["vRealize Log Insight"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thomas-kopton.de\/vblog\/?p=338#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=338","url":"https:\/\/thomas-kopton.de\/vblog\/?p=338","name":"Parsing CSV Files using vRealize Log Insight - TOMsOps","isPartOf":{"@id":"https:\/\/thomas-kopton.de\/vblog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=338#primaryimage"},"image":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=338#primaryimage"},"thumbnailUrl":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-8.png","datePublished":"2020-03-05T16:10:37+00:00","dateModified":"2020-07-29T11:57:55+00:00","author":{"@id":"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82"},"breadcrumb":{"@id":"https:\/\/thomas-kopton.de\/vblog\/?p=338#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thomas-kopton.de\/vblog\/?p=338"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=338#primaryimage","url":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-8.png","contentUrl":"https:\/\/thomas-kopton.de\/vblog\/wp-content\/uploads\/2020\/03\/Picture-8.png","width":1089,"height":375},{"@type":"BreadcrumbList","@id":"https:\/\/thomas-kopton.de\/vblog\/?p=338#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thomas-kopton.de\/vblog"},{"@type":"ListItem","position":2,"name":"Parsing CSV Files using vRealize Log Insight"}]},{"@type":"WebSite","@id":"https:\/\/thomas-kopton.de\/vblog\/#website","url":"https:\/\/thomas-kopton.de\/vblog\/","name":"TOMsOps","description":"Just another VMware Cloud Management Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thomas-kopton.de\/vblog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/thomas-kopton.de\/vblog\/#\/schema\/person\/892d6b96c66b1dd4b75c6e32fdbfea82","name":"Thomas Kopton","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e746aafbd3733172ceb4d600ba1feda61bc87cd3b70f5a9dfb581907cc7973b1?s=96&d=mm&r=g","caption":"Thomas Kopton"},"url":"https:\/\/thomas-kopton.de\/vblog\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts\/338","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=338"}],"version-history":[{"count":10,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts\/338\/revisions"}],"predecessor-version":[{"id":360,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/posts\/338\/revisions\/360"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=\/wp\/v2\/media\/352"}],"wp:attachment":[{"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=338"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=338"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thomas-kopton.de\/vblog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=338"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}