Add Win 2012 plugins and group allrds files in one folder. Modify check file. Update man and install instructions.

This commit is contained in:
George Mocanu 2015-02-04 19:01:10 +02:00
parent 488720de1e
commit 5d53d70f71
9 changed files with 112 additions and 13 deletions

View File

@ -1,2 +1,17 @@
# check_mk-rds_licenses # check_mk-rds_licenses
Monitor per user RDS licenses usage. Monitor per user RDS licenses usage.
The check for rds licenses usage is based on folowing plugins:
- rds_licenses_2008.ps1
- rds_licenses_2012.ps1
- elevate_shell.ps1
If the Windows Server is 64 bit version the agent for x64 must be installed.
Install procedure:
On Windows 2008 Server: copy the rds_licenses_2008.ps1 file in plugins
directory of check_mk agent folder.
On Windows 2012 Server: copy the elevate_shell.ps1 into plugins directory
of check_mk agent folder and the rds_licenses_2012.ps1 into check_mk agent folder.
The elevate_shell.ps1 will elevate de privileges for running rds_licences_2012.ps1
and the user which run check_mk agent must have the rights to "run as
administrator".

View File

@ -0,0 +1,42 @@
# This code was published by Benjamin Armstrong on blogs.msdn.com
# This script will open an elevated powershell terminal and will run the specified script
# The script(s) that must be run with elevated privileges must be configured on the last lines
# Get the ID and security principal of the current user account
$myWindowsID=[System.Security.Principal.WindowsIdentity]::GetCurrent()
$myWindowsPrincipal=new-object System.Security.Principal.WindowsPrincipal($myWindowsID)
# Get the security principal for the Administrator role
$adminRole=[System.Security.Principal.WindowsBuiltInRole]::Administrator
# Check to see if we are currently running "as Administrator"
if ($myWindowsPrincipal.IsInRole($adminRole))
{
# We are running "as Administrator" - so change the title and background color to indicate this
$Host.UI.RawUI.WindowTitle = $myInvocation.MyCommand.Definition + "(Elevated)"
$Host.UI.RawUI.BackgroundColor = "DarkBlue"
clear-host
}
else
{
# We are not running "as Administrator" - so relaunch as administrator
# Create a new process object that starts PowerShell
$newProcess = new-object System.Diagnostics.ProcessStartInfo "PowerShell";
# Specify the current script path and name as a parameter
$newProcess.Arguments = $myInvocation.MyCommand.Definition;
# Indicate that the process should be elevated
$newProcess.Verb = "runas";
# Start the new process
[System.Diagnostics.Process]::Start($newProcess);
# Exit from the current, unelevated, process
exit
}
# Run your code that needs to be elevated here
# Will run rds_licenses script from check_mk directory
& "C:\Program Files (x86)\check_mk\rds_licenses_2012.ps1"

View File

@ -0,0 +1,14 @@
The check for rds licenses usage is based on folowing plugins:
- rds_licenses_2008.ps1
- rds_licenses_2012.ps1
- elevate_shell.ps1
If the Windows Server is 64 bit version the agent for x64 must be installed.
Install procedure:
On Windows 2008 Server: copy the rds_licenses_2008.ps1 file in plugins
directory of check_mk agent folder.
On Windows 2012 Server: copy the elevate_shell.ps1 into plugins directory
of check_mk agent folder and the rds_licenses_2012.ps1 into check_mk agent folder.
The elevate_shell.ps1 will elevate de privileges for running rds_licences_2012.ps1
and the user which run check_mk agent must ghave the rights to "run as
administrator".

View File

@ -0,0 +1,17 @@
# SpearHead Systems george.mocanu@sphs.ro
# Check for Windows 2012 Server
Import-Module RemoteDesktopServices
$path = "RDS:\LicenseServer\LicenseKeyPacks\"
Write-Host "<<<rds_licenses>>>"
foreach($pack in Get-ChildItem $path)
{
$checkName = $pack.Name -replace '\s',''
$newPath = Join-Path $path $pack
$total = (Get-Item $newPath\TotalLicenses).CurrentValue
$usage = (Get-Item $newPath\IssuedLicensesCount).CurrentValue
Write-Host $checkName " " $total " " $usage
}
exit

View File

@ -5,16 +5,21 @@ license: GPL
distribution: distribution:
description: description:
This check return usage of RDS licenses. This check return usage of RDS licenses.
You need to install the plugin {rds_licenses.ps1} You need to install the plugin {rds_licenses_2008.ps1}
into the {plugins} directory of your windows agent. into the {plugins} directory of your windows agent in
case of Win 2008 Server. In case of Win 2012 Server
in plugin directory must be copied elevate_shell.ps1
and the rds_licenses_2008.ps1 must be copied into
check_mk agent folder and the user which run the check_mk
service must be allowed to elevate privileges.
This check was tested with Windows 2008 Server This check was tested with Windows 2008 Server
and must have PowerShell installed. On Windows x64 is and must have PowerShell installed. On Windows x64 is
recommended to use x64 agent. As always you must set recommended to use x64 agent. As always you must set
"set-executionpolicy remotesigned" on monitored host. "set-executionpolicy remotesigned" on monitored host.
The check gets critical if the usage percentage is above The check gets critical if the usage percentage is above
90 percents and warning if the usage percentage is above 95 percents and warning if the usage percentage is above
80 percents. 90 percents.
Both limits are definable in Wato under "Parameters for Both limits are definable in Wato under "Parameters for
Inventorized Checks", "Applications, Processes & Services". Inventorized Checks", "Applications, Processes & Services".

View File

@ -3,10 +3,10 @@
# SpearHead Systems # SpearHead Systems
# EXAMPLE DATA FROM: # EXAMPLE DATA FROM:
# fomat: PerUserLicenses 20 15 # fomat: Win2k8_Pack_Name No_of_Installed_Licenses No_of_Used_Licenses
# #
#<<<rds_licenses>>> #<<<rds_licenses>>>
#PerUserLicenses 20 15 #Win2k8_Pack_Name 20 15
factory_settings["rds_licenses_default_values"] = { factory_settings["rds_licenses_default_values"] = {
"levels": (80, 90), "levels": (80, 90),
@ -28,17 +28,23 @@ def check_rds_licenses(item, params, info):
if line[0] == item: if line[0] == item:
total = int(line[1]) total = int(line[1])
used = int(line[2]) used = int(line[2])
if total != 0:
usedPerc = int(((used*100)/total)) usedPerc = int(((used*100)/total))
else:
usedPerc = int(((used*100)/1))
perfdata = [ ( "usage", usedPerc, warn, crit ) ] perfdata = [ ( "usage", usedPerc, warn, crit ) ]
if total != 0: if total != 0:
if usedPerc > crit: if usedPerc > crit:
return (2, "License use level: %d percents" %usedPerc, perfdata) return (2, "License use level: %d percents. %d licenses used out of %d installed." %(usedPerc, used, total), perfdata)
elif usedPerc > warn: elif usedPerc > warn:
return (1, "License use level: %d percents" %usedPerc, perfdata) return (1, "License use level: %d percents. %d licenses used out of %d installed." %(usedPerc, used, total), perfdata)
else: else:
return (0, "License use level: %d percents" %usedPerc, perfdata) return (0, "License use level: %d percents. %d licenses used out of %d installed." %(usedPerc, used, total), perfdata)
else: else:
return (0, "No licenses installed") if used == 0:
return (0, "No licenses installed, none used", perfdata)
else:
return (2, "No licenses installed, %d licenses used" %used, perfdata)
return(3, "Plugin not running on host") return(3, "Plugin not running on host")
check_info["rds_licenses"] = { check_info["rds_licenses"] = {

Binary file not shown.

BIN
rds_licenses-1.1.mkp Normal file

Binary file not shown.