{
  "version": "Notebook/1.0",
  "items": [
    {
      "type": 1,
      "content": {
        "json": "**NOTE**: This data connector depends on a parser based on Kusto Function **VMwareESXi** to work as expected. [Follow steps to get this Kusto Function](https://aka.ms/sentinel-vmwareesxi-parser)"
      },
      "name": "text - 8"
    },
    {
      "type": 9,
      "content": {
        "version": "KqlParameterItem/1.0",
        "parameters": [
          {
            "id": "cd8447d9-b096-4673-92d8-2a1e8291a125",
            "version": "KqlParameterItem/1.0",
            "name": "TimeRange",
            "type": 4,
            "description": "Sets the time name for analysis",
            "value": {
              "durationMs": 7776000000
            },
            "typeSettings": {
              "selectableValues": [
                {
                  "durationMs": 1800000
                },
                {
                  "durationMs": 3600000
                },
                {
                  "durationMs": 86400000
                },
                {
                  "durationMs": 604800000
                },
                {
                  "durationMs": 2592000000
                },
                {
                  "durationMs": 7776000000
                }
              ]
            },
            "timeContext": {
              "durationMs": 86400000
            }
          }
        ],
        "style": "pills",
        "queryType": 0,
        "resourceType": "microsoft.operationalinsights/workspaces"
      },
      "name": "parameters - 11"
    },
    {
      "type": 3,
      "content": {
        "version": "KqlItem/1.0",
        "query": "VMwareESXi\r\n| make-series TotalEvents = count() default = 0 on TimeGenerated from {TimeRange:start} to {TimeRange:end} step {TimeRange:grain};",
        "size": 0,
        "title": "Events Over Time",
        "color": "blueDark",
        "timeContext": {
          "durationMs": 0
        },
        "timeContextFromParameter": "TimeRange",
        "queryType": 0,
        "resourceType": "microsoft.operationalinsights/workspaces",
        "visualization": "timechart",
        "graphSettings": {
          "type": 0
        }
      },
      "customWidth": "60",
      "name": "query - 12",
      "styleSettings": {
        "maxWidth": "55"
      }
    },
    {
      "type": 12,
      "content": {
        "version": "NotebookGroup/1.0",
        "groupType": "editable",
        "title": "Environment Summary",
        "items": [
          {
            "type": 3,
            "content": {
              "version": "KqlItem/1.0",
              "query": "VMwareESXi\r\n| where SyslogMessage has 'VmPoweredOnEvent'\r\n| extend DstHostname = extract(@'\\[\\d+\\]\\s+\\[(.*?)\\s+on', 1, SyslogMessage)\r\n| summarize dcount(DstHostname)",
              "size": 3,
              "title": "Total VMs",
              "timeContext": {
                "durationMs": 0
              },
              "timeContextFromParameter": "TimeRange",
              "queryType": 0,
              "resourceType": "microsoft.operationalinsights/workspaces",
              "visualization": "card",
              "textSettings": {
                "style": "bignumber"
              }
            },
            "customWidth": "50",
            "name": "query - 3",
            "styleSettings": {
              "margin": "10",
              "padding": "10"
            }
          },
          {
            "type": 3,
            "content": {
              "version": "KqlItem/1.0",
              "query": "VMwareESXi\n| where SyslogMessage has_all ('UserLoginSessionEvent', 'logged in')\n| extend SrcUsername = extract(@'User\\s(.*?)@\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}', 1, SyslogMessage)\n| summarize dcount(SrcUsername)",
              "size": 3,
              "title": "Users",
              "timeContext": {
                "durationMs": 0
              },
              "timeContextFromParameter": "TimeRange",
              "queryType": 0,
              "resourceType": "microsoft.operationalinsights/workspaces",
              "visualization": "card",
              "textSettings": {
                "style": "bignumber"
              }
            },
            "customWidth": "50",
            "name": "query - 1"
          },
          {
            "type": 3,
            "content": {
              "version": "KqlItem/1.0",
              "query": "VMwareESXi\n| where SyslogMessage has_all ('UserLoginSessionEvent', 'logged in')\n| extend SrcIpAddr = extract(@'root@(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})', 1, SyslogMessage)\n| summarize dcount(SrcIpAddr)",
              "size": 3,
              "title": "Total IP Addreses",
              "timeContext": {
                "durationMs": 0
              },
              "timeContextFromParameter": "TimeRange",
              "queryType": 0,
              "resourceType": "microsoft.operationalinsights/workspaces",
              "visualization": "card",
              "textSettings": {
                "style": "bignumber"
              }
            },
            "customWidth": "40",
            "name": "query - 2"
          },
          {
            "type": 3,
            "content": {
              "version": "KqlItem/1.0",
              "query": "VMwareESXi\n| where SyslogMessage has ('Patch store disk')\n| extend sp = tolong(extract(@'free space is:\\s(\\d+)', 1, SyslogMessage)) / 1000000000\n| project ds = strcat(tostring(sp), ' GB')",
              "size": 3,
              "title": "Patch Disk Space Available",
              "noDataMessage": "0",
              "timeContext": {
                "durationMs": 0
              },
              "timeContextFromParameter": "TimeRange",
              "queryType": 0,
              "resourceType": "microsoft.operationalinsights/workspaces",
              "visualization": "card",
              "textSettings": {
                "style": "bignumber"
              }
            },
            "customWidth": "25",
            "name": "query - 3"
          },
          {
            "type": 3,
            "content": {
              "version": "KqlItem/1.0",
              "query": "VMwareESXi\n| where SyslogMessage has_all ('Temp directory', 'free space')\n| extend sp = tolong(extract(@'free space is:\\s(\\d+)', 1, SyslogMessage)) / 1000000000\n| project tmp_sp = strcat(sp, ' GB')",
              "size": 3,
              "title": "Temp Disk Space Available",
              "timeContext": {
                "durationMs": 0
              },
              "timeContextFromParameter": "TimeRange",
              "queryType": 0,
              "resourceType": "microsoft.operationalinsights/workspaces",
              "visualization": "card",
              "textSettings": {
                "style": "bignumber"
              }
            },
            "customWidth": "25",
            "name": "query - 4"
          }
        ]
      },
      "customWidth": "40",
      "name": "group - 11"
    },
    {
      "type": 3,
      "content": {
        "version": "KqlItem/1.0",
        "query": "VMwareESXi\n| where SyslogMessage has ('VmPoweredOffEvent')\n| extend DstHostname = extract(@'\\[\\d+\\]\\s+\\[(.*?)\\s+on', 1, SyslogMessage)\n| summarize off_t = max(TimeGenerated) by DstHostname\n| project DstHostname, Status=strcat(iff(isnotempty(off_t), '❌ - Powered Off', '✅ - Running'))\n",
        "size": 3,
        "title": "VM status",
        "timeContext": {
          "durationMs": 0
        },
        "timeContextFromParameter": "TimeRange",
        "queryType": 0,
        "resourceType": "microsoft.operationalinsights/workspaces",
        "visualization": "table"
      },
      "customWidth": "30",
      "name": "query - 11"
    },
    {
      "type": 3,
      "content": {
        "version": "KqlItem/1.0",
        "query": "VMwareESXi\n| where SyslogMessage has_all ('UserLoginSessionEvent', 'logged in')\n| extend SrcIpAddr = extract(@'@(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})', 1, SyslogMessage)\n| where isnotempty(SrcIpAddr)\n| summarize count() by SrcIpAddr",
        "size": 3,
        "title": "Source Addresses",
        "timeContext": {
          "durationMs": 0
        },
        "timeContextFromParameter": "TimeRange",
        "queryType": 0,
        "resourceType": "microsoft.operationalinsights/workspaces",
        "visualization": "piechart"
      },
      "customWidth": "25",
      "name": "query - 9"
    },
    {
      "type": 3,
      "content": {
        "version": "KqlItem/1.0",
        "query": "VMwareESXi\r\n| where SyslogMessage has_any ('UserLoginSessionEvent', 'UserLogoutSessionEvent')\r\n| extend SrcIpAddr = extract(@'@(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})', 1, SyslogMessage)\r\n| extend SrcUsername = extract(@'User\\s(.*?)@\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}', 1, SyslogMessage)\r\n| project EventTime=TimeGenerated, User=SrcUsername, SourceAddress=SrcIpAddr, Status=strcat(iff(SyslogMessage has 'UserLoginSessionEvent', '✅ - Logged in', '❌ - Logged out' ))\r\n",
        "size": 0,
        "title": "User Sessions",
        "timeContext": {
          "durationMs": 0
        },
        "timeContextFromParameter": "TimeRange",
        "queryType": 0,
        "resourceType": "microsoft.operationalinsights/workspaces",
        "visualization": "table",
        "gridSettings": {
          "filter": true
        },
        "tileSettings": {
          "titleContent": {
            "columnMatch": "URL Category",
            "formatter": 1
          },
          "leftContent": {
            "columnMatch": "count_",
            "formatter": 12,
            "formatOptions": {
              "palette": "auto"
            },
            "numberFormat": {
              "unit": 17,
              "options": {
                "style": "decimal",
                "maximumFractionDigits": 2,
                "maximumSignificantDigits": 3
              }
            }
          },
          "secondaryContent": {
            "columnMatch": "Trend",
            "formatter": 9,
            "formatOptions": {
              "palette": "purple"
            }
          },
          "showBorder": false
        }
      },
      "customWidth": "45",
      "name": "query - 0",
      "styleSettings": {
        "maxWidth": "30"
      }
    },
    {
      "type": 3,
      "content": {
        "version": "KqlItem/1.0",
        "query": "VMwareESXi\n| where SyslogMessage has_all ('UserLoginSessionEvent', 'denis', 'logged in')\n//| extend SrcUsername = extract(@'User\\s(.*?)@\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}', 1, SyslogMessage)\n| extend SrcIpAddr = extract(@'@(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})', 1, SyslogMessage)\n| order by TimeGenerated\n| project EventTime = TimeGenerated, SourceAddress = SrcIpAddr",
        "size": 0,
        "title": "Root Sessions",
        "timeContext": {
          "durationMs": 0
        },
        "timeContextFromParameter": "TimeRange",
        "queryType": 0,
        "resourceType": "microsoft.operationalinsights/workspaces",
        "visualization": "table",
        "tileSettings": {
          "titleContent": {
            "columnMatch": "User",
            "formatter": 1
          },
          "leftContent": {
            "columnMatch": "TotalMailsReceived",
            "formatter": 12,
            "formatOptions": {
              "palette": "auto"
            },
            "numberFormat": {
              "unit": 17,
              "options": {
                "maximumSignificantDigits": 3,
                "maximumFractionDigits": 2
              }
            }
          },
          "secondaryContent": {
            "columnMatch": "Trend",
            "formatter": 10,
            "formatOptions": {
              "palette": "magenta"
            }
          },
          "showBorder": false
        }
      },
      "customWidth": "30",
      "name": "query - 10"
    }
  ],
  "fromTemplateId": "sentinel-VMwareESXiWorkbook",
  "$schema": "https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json"
}