I would like to create a MapObject, where I could display the data of all channels from a sensor and not just the primary. Just like the gauge object but without the gauges or the graph object but of cause without the graph.

For Example I have a custom Powershell Sensor which lists all VMs with snapshots on it with the help of PowerCLI. On my map/dashboard I have an area for vm related monitoring where I want to display a list of vm-Names with VMs which have a current snapshot. Here my Custom PS Sensor:

______________________________________
Connect-VIServer -Server *** -User ***

$VMList = Get-VM | Get-Snapshot | Select-Object VM, Name, Created
$CurrentDate = Get-Date
$SnapshotCount = $VMList.COUNT

$output = @"
<?xml version=`"1.0`" encoding=`"UTF-8`" ?>
<prtg>
<result>
    <channel>Snapshot Count</channel>
    <value>$SnapshotCount</value>
    <CustomUnit>snps</CustomUnit>
    <showChart>0</showChart>
    <showTable>0</showTable>
</result>

"@
foreach ($VM in $VMList) {
    $VMName = $VM.VM
    $SnapshotDate = [datetime]$VM.Created
    $timebetween = New-TimeSpan -Start $SnapshotDate -End $CurrentDate
    $daysbetween = $timebetween.Days
    $tobeappended = @"
<result>
    <channel>$VMName</channel>
    <value>$daysbetween</value>
    <CustomUnit>Days</CustomUnit>
    <showChart>1</showChart>
    <showTable>1</showTable>
</result>

"@
$output = $output + $tobeappended

}
$endofoutput = @"
</prtg>
"@

$output = $output + $endofoutput
[Console]::WriteLine($output);
_____________________________________

Don't judge the naming of my variables^^

This script will create for all of the VMs with an active snapshot a separate channel with the value of "days since last snapshot".

Thanks for your help :)


Article Comments