Monitoring disk space with exMon

Created by: Gunnar Steinn Magnússon

In this article, you will read about monitoring disk space with exMon. You can monitor your server's filesystem with the PowerShell data provider in exMon. This article explains how to monitor disk space on your server and how to send an email when it falls below some specified threshold.

Monitor a single server

Steps

  1. Create a new Query in exMon Data Governance by right-clicking the Tests folder 
  2. Select the PowerShell data provider 
  3. Add the following PowerShell script to the Query window:
    $computer_name = "machinename"

    $limit_gb = 20

    $limit_bytes = $limit_gb*1024*1024*1024

    $exMonResult = Get-WmiObject Win32_LogicalDisk -ComputerName $computer_name -Filter
    "DeviceID!='A:' and FreeSpace<$limit_bytes"   | Select-Object  @{Name="Computer";
    Expression={$computer_name}},DeviceID,@{Name="Size GB";Expression={$_.Size / 1GB}},
    @{Name="Free GB";Expression={$_.FreeSpace / 1GB}} | exMon-Out-DataTable
  4. Edit the two variables, specifying the server name and the free space limit.
  5. Below is a preview of the email notification you will receive if disk space falls below your specified threshold

 

Monitor multiple servers

To monitor multiple servers, you can use a PowerShell script with query parameters and Object Groups.

Steps

  1. Replace the previous code with:
    $computer_name = "{@computer_name[default:localhost][datatype:string][preview:localhost]}"

    $limit_gb = 20

    $limit_bytes = $limit_gb*1024*1024*1024

    $exMonResult = Get-WmiObject Win32_LogicalDisk -ComputerName $computer_name -Filter
    "DeviceID!='A:' and FreeSpace<$limit_bytes"   | Select-Object  @{Name="Computer";
    Expression={$computer_name}},DeviceID,@{Name="Size GB";Expression={$_.Size / 1GB}},
    @{Name="Free GB";Expression={$_.FreeSpace / 1GB}} | exMon-Out-DataTable
  2. Create an object group and add the query to the object group, once for each server to monitor:
  3. Add Extra Parameters to each query to specify which server to monitor:
  4. --@computer_name es-srv-01
  5. Here is an example when monitoring two servers.

   

 

Gunnar is the author of this solution article.