Windows Server 2016 Print Server Printer State

Tasty.Printer.Monitoring.Windows2016.PrintServer.Printer.Monitor (UnitMonitor)

This monitor will check the state of printers attached to discovered print servers in the environment. The script that drives this monitor supports cookdown and has been tested on print servers hosting upwards of 1000 printers. The monitor by default runs once per hour. Adjust frequency with caution as running more frequently may cause performance problems in large environments. The script checks 12 unique problem conditions as follows: Unknown Error; Other Error; No Error; Low Paper; No Paper; Low Toner; No Toner; Door Open; Jammed; Offline; Service Requested; Output Bin Full. Each condition can be enabled or disabled individually. In addition, each condition can be configured with a unique threshold that indicates how long the condition should be allowed to persist before flagging an unhealthy condition. This configuration allows for setting of timers per condition to meet individual business repirements. The specific default configurations are seen on the configuration tab for the monitor.

Element properties:

TargetTasty.Printer.Monitoring.Windows2016.PrintServer.Printer
Parent MonitorSystem.Health.AvailabilityState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeTasty.Printer.Monitoring.PrinterState.MT
RemotableTrue
AccessibilityPublic
Alert Message
Windows Server 2016 Print Server Printer State Alert
{0} | Printer {1} on {2} is {0}


Additional Knowledge:
This monitor will check the state of printers attached to discovered print servers in the environment. The script that drives this monitor supports cookdown and has been tested on print servers hosting upwards of 1000 printers. The monitor by default runs once per hour. Adjust frequency with caution as running more frequently may cause performance problems in large environments.
The script checks 12 unique problem conditions as follows:
Unknown Error
Other Error
No Error
Low Paper
No Paper
Low Toner
No Toner
Door Open
Jammed
Offline
Service Requested
Output Bin Full

Each condition can be enabled or disabled individually. In addition, each condition can be configured with a unique threshold that indicates how long the condition should be allowed to persist before flagging an unhealthy condition. This configuration allows for setting of timers per condition to meet individual business repirements. The specific default configurations are seen on the configuration tab for the monitor.

RunAsDefault

Source Code:

<UnitMonitor ID="Tasty.Printer.Monitoring.Windows2016.PrintServer.Printer.Monitor" Accessibility="Public" Enabled="true" Target="Tasty.Printer.Monitoring.Windows2016.PrintServer.Printer" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Tasty.Printer.Monitoring.PrinterState.MT" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Tasty.Printer.Monitoring.Windows2016.PrintServer.Printer.Monitor.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/DataItem/Property[@Name='Error Condition']$</AlertParameter1>
<AlertParameter2>$Data/Context/DataItem/Property[@Name='PrinterName']$</AlertParameter2>
<AlertParameter3>$Target/Property[Type="Tasty.Printer.Monitoring.Windows2016.PrintServer.Printer"]/PrintServerHost$</AlertParameter3>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="PrinterHealthy" MonitorTypeStateID="PrinterHealthy" HealthState="Success"/>
<OperationalState ID="PrinterWarning" MonitorTypeStateID="PrinterWarning" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>3600</IntervalSeconds>
<PrinterName>$Target/Property[Type="Tasty.Printer.Monitoring.Windows2016.PrintServer.Printer"]/PrinterName$</PrinterName>
<UnknownErrorDetection_Enabled>1</UnknownErrorDetection_Enabled>
<UnknownErrorDetection_Threshold>0</UnknownErrorDetection_Threshold>
<OtherErrorDetection_Enabled>1</OtherErrorDetection_Enabled>
<OtherErrorDetection_Threshold>0</OtherErrorDetection_Threshold>
<NoErrorErrorDetection_Enabled>0</NoErrorErrorDetection_Enabled>
<NoErrorErrorDetection_Threshold>0</NoErrorErrorDetection_Threshold>
<LowPaperErrorDetection_Enabled>0</LowPaperErrorDetection_Enabled>
<LowPaperErrorDetection_Threshold>0</LowPaperErrorDetection_Threshold>
<NoPaperErrorDetection_Enabled>1</NoPaperErrorDetection_Enabled>
<NoPaperErrorDetection_Threshold>2</NoPaperErrorDetection_Threshold>
<LowTonerErrorDetection_Enabled>0</LowTonerErrorDetection_Enabled>
<LowTonerErrorDetection_Threshold>0</LowTonerErrorDetection_Threshold>
<NoTonerErrorDetection_Enabled>1</NoTonerErrorDetection_Enabled>
<NoTonerErrorDetection_Threshold>2</NoTonerErrorDetection_Threshold>
<DoorOpenErrorDetection_Enabled>1</DoorOpenErrorDetection_Enabled>
<DoorOpenErrorDetection_Threshold>45</DoorOpenErrorDetection_Threshold>
<JammedErrorDetection_Enabled>1</JammedErrorDetection_Enabled>
<JammedErrorDetection_Threshold>2</JammedErrorDetection_Threshold>
<OfflineErrorDetection_Enabled>1</OfflineErrorDetection_Enabled>
<OfflineErrorDetection_Threshold>2</OfflineErrorDetection_Threshold>
<ServiceRequestedErrorDetection_Enabled>1</ServiceRequestedErrorDetection_Enabled>
<ServiceRequestedErrorDetection_Threshold>15</ServiceRequestedErrorDetection_Threshold>
<OutputBinFullErrorDetection_Enabled>0</OutputBinFullErrorDetection_Enabled>
<OutputBinFullErrorDetection_Threshold>0</OutputBinFullErrorDetection_Threshold>
<TimeoutSeconds>900</TimeoutSeconds>
</Configuration>
</UnitMonitor>