{"id":1150,"date":"2023-04-02T20:28:11","date_gmt":"2023-04-02T19:28:11","guid":{"rendered":"https:\/\/mortenknudsen.net\/?p=1150"},"modified":"2023-04-10T11:13:42","modified_gmt":"2023-04-10T10:13:42","slug":"clientinspector-a-cool-showcase-to-demonstrate-log-ingestion-api-azure-log-ingestion-pipeline-azure-data-collection-rules-and-my-new-powershell-module-azlogdcringestps","status":"publish","type":"post","link":"https:\/\/mortenknudsen.net\/?p=1150","title":{"rendered":"ClientInspector &#8211; a cool showcase to demonstrate Log ingestion API, Azure Log Ingestion Pipeline, Azure Data Collection Rules and my new Powershell module AzLogDcrIngestPS"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><strong>Are you in control?<\/strong>&nbsp;&#8211; or are some of your core infrastructure processes like&nbsp;<strong>patching, antivirus, bitlocker enablement<\/strong>&nbsp;drifting? Or would you like to do&nbsp;<strong>advanced inventory<\/strong>, where you can lookup your&nbsp;<strong>warranty state<\/strong>&nbsp;against Lenovo or Dell warranty, then keep reading.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Check out&nbsp;<a href=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2\"><strong>ClientInspector<\/strong> (github)<\/a>, which can help you get&nbsp;<strong>great insight<\/strong>&nbsp;to your complete&nbsp;<strong>client environment<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ClientInspector is&nbsp;<strong>free<\/strong>&nbsp;to the community &#8211; built to be a&nbsp;<strong>cool showcase<\/strong>&nbsp;of how you can bring back&nbsp;<strong>data<\/strong>&nbsp;from your clients using&nbsp;<strong>Azure Log Ingestion Pipeline<\/strong>,&nbsp;<strong>Azure Data Collection Rules<\/strong>,&nbsp;<strong>Azure LogAnalytics<\/strong>; view them with&nbsp;<strong>Azure Monitor &amp; Azure Dashboards<\/strong>&nbsp;&#8211; and get &#8220;drift-alerts&#8221; using&nbsp;<strong>Microsoft Sentinel<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The little &#8220;helper&#8221; that makes the magic is my new <a href=\"https:\/\/github.com\/KnudsenMorten\/AzLogDcrIngestPS\" target=\"_blank\" rel=\"noreferrer noopener\">Powershell module, <strong>AzLogDcrIngestPS<\/strong> (github)<\/a>. I have also written a <a href=\"https:\/\/mortenknudsen.net\/?p=1148\" target=\"_blank\" rel=\"noreferrer noopener\">blog-post about this module<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can get the whole infrastructure for ClientInspector up and running within 10 min using the <a href=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2-DeploymentKit\" target=\"_blank\" rel=\"noreferrer noopener\">DeploymentKit for ClientInspector (github).<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/youtu.be\/0MKPgzvDNRk\">Video 3m 01s &#8211; Dashboards<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Quick Links<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"letter-spacing:0px\"><a href=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2#what-data-is-being-collected-\">What data is being collected ?<\/a><br><a href=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2#desired-state-dashboards---how-to-get-insight-of-my-environment-from-the-data-\">Desired State Dashboards &#8211; How to get insight of my environment from the data ?<\/a><br><a href=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2#how-do-i-query-the-data---kusto-kql-is-the-answer\">How do I query the data? &#8211; Kusto (KQL) is the answer<\/a><br><a href=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2#architecture-schema--networking\">Architecture, Schema &amp; Networking<\/a><br><a href=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2#implementation\">Implementation<\/a><br><a href=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2#dependencies\">Dependencies<\/a><br><a href=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2#running-clientinspectorps1---3-modes\">Running ClientInspector.ps1 &#8211; 3 modes<\/a><br><a href=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2#sample-output-of-clientinspector\">Sample output of ClientInspector<\/a><br><a href=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2#security\">Security<\/a><br><a href=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2#layout-of-clientinspector-data-set\">Layout of ClientInspector data-set<\/a><br><a href=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2#verbose-mode--more-help\">Verbose-mode &amp; More help<\/a><br><a href=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2#cost---how-much-does-it-cost-to-store-these-data-\">Cost &#8211; How much does it cost to store these data ?<\/a><br><a href=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2#contact\">Contact<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Videos of solution<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/youtu.be\/4kA4BE0zJ9g\">Video 3m 19s &#8211; Running ClientInspector using commandline (normal mode)<\/a><br><a href=\"https:\/\/youtu.be\/rIUNs3yT-eI\">Video 1m 40s &#8211; Automatic creation of 2 tables &amp; DCRs (verbose mode)<\/a><br><a href=\"https:\/\/youtu.be\/khQMDcON6r8\">Video 1m 37s &#8211; Automatic creation of 2 tables &amp; DCRs (normal mode)<\/a><br><a href=\"https:\/\/youtu.be\/NDSNhvpa4Gs\">Video 1m 34s &#8211; See schema of DCR and table)<\/a><br><a href=\"https:\/\/youtu.be\/OZWj7xZHLI8\">Video 2m 19s &#8211; Data manipulation<\/a><br><a href=\"https:\/\/youtu.be\/_GlI0h7ZOsg\">Video 1m 58s &#8211; Kusto queries against data<\/a><br><a href=\"https:\/\/youtu.be\/0MKPgzvDNRk\">Video 3m 01s &#8211; Dashboards<\/a><br><a href=\"https:\/\/youtu.be\/3ZDyTwiLU0w\">Video 0m 48s &#8211; Sample usage of data &#8211; lookup against Lenovo warranty db<\/a><br><a href=\"https:\/\/youtu.be\/_RNlSqRcetg\">Video 7m 25s &#8211; Deployment via ClientInspector DeploymentKit<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading has-large-font-size\"><a href=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2#archicture--flow-of-clientinspector\"><\/a><\/h3>\n\n\n\n<h1 class=\"wp-block-heading\">Archicture &amp; flow of ClientInspector<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">ClientInspector (v2) is uploading the collected data into&nbsp;<strong>custom logs<\/strong>&nbsp;in&nbsp;<strong>Azure LogAnalytics workspace<\/strong>&nbsp;&#8211; using&nbsp;<strong>Log ingestion API<\/strong>,&nbsp;<strong>Azure Data Collection Rules (DCR)<\/strong>&nbsp;and&nbsp;<strong>Azure Data Collection Endpoints (DCE)<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"684\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/ClientInspectorV2_ArchitectureV2-2-1024x684.png\" alt=\"\" class=\"wp-image-1382\" srcset=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/ClientInspectorV2_ArchitectureV2-2-1024x684.png 1024w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/ClientInspectorV2_ArchitectureV2-2-300x200.png 300w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/ClientInspectorV2_ArchitectureV2-2-768x513.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading has-large-font-size\"><a href=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2#sample-dashboards\"><\/a>Sample Dashboards<\/h1>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"678\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/ClientInspectorV2_KPI-Dashboard-1024x678.png\" alt=\"\" class=\"wp-image-1373\" srcset=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/ClientInspectorV2_KPI-Dashboard-1024x678.png 1024w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/ClientInspectorV2_KPI-Dashboard-300x199.png 300w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/ClientInspectorV2_KPI-Dashboard-768x508.png 768w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/ClientInspectorV2_KPI-Dashboard-1536x1017.png 1536w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/ClientInspectorV2_KPI-Dashboard.png 1819w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2\/blob\/main\/img\/Sample-Bitlocker-2.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2\/raw\/main\/img\/Sample-Bitlocker-2.png\" alt=\"Antivirus\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2\/blob\/main\/img\/Sample-Bluescreens.png\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" src=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2\/raw\/main\/img\/Sample-Bluescreens.png\" alt=\"Bluescreens\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h1 class=\"wp-block-heading has-large-font-size\"><a href=\"https:\/\/github.com\/KnudsenMorten\/ClientInspectorV2#disclaimer\"><\/a>Disclaimer<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">It is important for me to state that I&#8217;m not trying to build a separate management tool, which will compete with Microsoft security and management stack.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nothing beats Microsoft Azure\/M365 management and security stack. They are rock star solutions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But I&#8217;m really&nbsp;<strong>passioned<\/strong>&nbsp;about the&nbsp;<strong>logging capabilities<\/strong>&nbsp;and the power&nbsp;<strong>to bring data back from clients, servers, cloud and 3rd party systems<\/strong>&nbsp;&#8211; and getting&nbsp;<strong>cool valueable information out of the data<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I have a similar solution for&nbsp;<strong>servers<\/strong>&nbsp;&#8211;&nbsp;<strong>ServerInspector<\/strong>. Unfortunately, it is not public.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Happy hunting&nbsp;\ud83d\ude04<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Big thanks &#8211; you are rock stars \ud83d\ude42<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Lastly, I would like to give&nbsp;<strong>big credits<\/strong>&nbsp;to a few people, who I have worked together with on building&nbsp;<strong>AzLogDcrIngestPS Powershell module<\/strong>&nbsp;and&nbsp;<strong>my daily work with the Azure log &amp; viewing capabilities<\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table><thead><tr><th>Name<\/th><th>Role<\/th><\/tr><\/thead><tbody><tr><td>Ivan Varnitski<\/td><td>Program Manager &#8211; Azure Pipeline<\/td><\/tr><tr><td>Evgeny Ternovsky<\/td><td>Program Manager &#8211; Azure Pipeline<\/td><\/tr><tr><td>Nick Kiest<\/td><td>Program Manager &#8211; Azure Data Collection Rules<\/td><\/tr><tr><td>Oren Salzberg<\/td><td>Program Manager &#8211; Azure LogAnalytics<\/td><\/tr><tr><td>Guy Wild<\/td><td>Technical Writer &#8211; Azure LogAnalytics<\/td><\/tr><tr><td>John Gardner<\/td><td>Program Manager &#8211; Azure Workbooks<\/td><\/tr><tr><td>Shikha Jain<\/td><td>Program Manager &#8211; Azure Workbooks<\/td><\/tr><tr><td>Ingo Bringemeier<\/td><td>Principal Program Manager &#8211; Azure Monitor<\/td><\/tr><tr><td>Shayoni Seth<\/td><td>Program Manager &#8211; Azure Monitor Agent<\/td><\/tr><tr><td>Jeff Wolford<\/td><td>Program Manager &#8211; Azure Monitor Agent<\/td><\/tr><tr><td>Xema Pathak<\/td><td>Program Manager &#8211; Azure VMInsight (integration to Azure Monitor Agent)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"819\" height=\"1024\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/IMG_7519-819x1024.jpg\" alt=\"\" class=\"wp-image-1923\" srcset=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/IMG_7519-819x1024.jpg 819w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/IMG_7519-240x300.jpg 240w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/IMG_7519-768x960.jpg 768w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/IMG_7519-1229x1536.jpg 1229w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/04\/IMG_7519.jpg 1440w\" sizes=\"auto, (max-width: 819px) 100vw, 819px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Are you in control?&nbsp;&#8211; or are some of your core infrastructure processes like&nbsp;patching, antivirus, bitlocker enablement&nbsp;drifting? Or would you like &#8230; <\/p>\n<p class=\"read-more-container\"><a title=\"ClientInspector &#8211; a cool showcase to demonstrate Log ingestion API, Azure Log Ingestion Pipeline, Azure Data Collection Rules and my new Powershell module AzLogDcrIngestPS\" class=\"read-more button\" href=\"https:\/\/mortenknudsen.net\/?p=1150#more-1150\" aria-label=\"Read more about ClientInspector &#8211; a cool showcase to demonstrate Log ingestion API, Azure Log Ingestion Pipeline, Azure Data Collection Rules and my new Powershell module AzLogDcrIngestPS\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":1370,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"ngg_post_thumbnail":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[140,55,59,129,131,61,128,54,143,141,57,130,28,139,136,138,137,142,56,133,134,146,60,132,58,145,135,144],"tags":[],"class_list":["post-1150","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ama","category-azure","category-azure-arc","category-azure-data-collection-rules","category-azure-data-ingestion-pipeline","category-azure-extensions","category-azure-log-ingestion-api","category-azure-loganalytics","category-azure-logging","category-azure-monitor-agent","category-azure-security","category-clientinspector","category-community","category-data-collection-endpoint","category-data-transformation","category-dce","category-dcr","category-logging","category-m365-security","category-microsoft-security","category-mvpbuzz","category-performance-collection","category-scripting","category-security","category-sentinel","category-servicemap","category-transformation","category-vminsight","infinite-scroll-item","resize-featured-image"],"featured_image_src":"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/ClientInspector_300.png","author_info":{"display_name":"Morten Knudsen","author_link":"https:\/\/mortenknudsen.net\/?author=1"},"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack_featured_media_url":"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2023\/03\/ClientInspector_300.png","_links":{"self":[{"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=\/wp\/v2\/posts\/1150","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1150"}],"version-history":[{"count":19,"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=\/wp\/v2\/posts\/1150\/revisions"}],"predecessor-version":[{"id":2255,"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=\/wp\/v2\/posts\/1150\/revisions\/2255"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=\/wp\/v2\/media\/1370"}],"wp:attachment":[{"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1150"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1150"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1150"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}