Printer Monitoring System

A production-ready, SNMP-based printer monitoring solution with a web dashboard, automated discovery, and reporting.

Version 2.0.0 Python 3.11+ Platform Windows Status Production Ready

Overview

The Printer Monitoring System monitors network printers across multiple locations using SNMP. It collects key metrics including page counts, toner levels, drum status, and device health. Data is stored locally in an SQLite database and presented through a modern web dashboard.

Key capabilities

  • Automatic discovery of SNMP-enabled printers across multiple subnets
  • Real-time monitoring of toner, drum, and page counts
  • Web dashboard with filtering, search, and printer detail views
  • PDF reports: current status and multi-period usage summaries
  • Usage analysis for 30, 90, 120, and 365-day periods
  • Low toner alerts, historical tracking, and trend analysis

Features

Network discovery

  • Automatic discovery across multiple subnets
  • Subnet-to-location mapping
  • Model identification and metadata extraction
  • Safe duplicate handling (preserves existing data)

Monitoring & metrics

  • Page counts: total pages and usage by time period
  • Toner levels: percent-based or status (OK/Low)
  • Drum units: remaining capacity percentage
  • Device status: online/offline detection
  • Multi-vendor support: Brother, Samsung, HP, Xerox, and more

Web dashboard

  • Clean, responsive interface
  • Filter by location and printer model
  • Status cards with color-coded alerts
  • Charts with selectable time windows (7–90 days)
  • Printer detail pages with history and usage stats
  • Editable location assignments

Reporting

  • Current Status Report: snapshot of all printers and key metrics
  • Usage Summary Report: 30/90/120/365-day totals and averages
  • PDF exports with professional formatting
  • CSV export for external analysis

Production deployment

  • Windows Service integration
  • Task Scheduler support
  • Automatic restart and monitoring
  • Detailed logging and diagnostics
  • Internal-only access controls (recommended)

System Requirements

Software

  • OS: Windows Server 2019+ or Windows 10/11
  • Python: 3.11 or higher
  • Network: access to printer subnets
  • Protocol: SNMP v1/v2c enabled on printers

Hardware

  • Minimum: 2 GB RAM, 2 CPU cores, 10 GB disk
  • Recommended: 4 GB RAM, 4 CPU cores, 20 GB disk

Python dependencies

Flask==3.0.0
pysnmp==6.2.6
reportlab==4.0.9
waitress==3.0.0
pywin32==306

Quick Start

1) Install & set up

  1. Install Python 3.11+ (ensure “Add Python to PATH” is enabled).
  2. Extract the application to: C:\printermanager
  3. Install dependencies: pip install -r requirements.txt
  4. Create logs folder: C:\printermanager\logs

2) Configure monitored subnets

Create or edit C:\printermanager\subnets.txt:

# Format: SUBNET/CIDR,Location Name
10.164.1.0/24,Main Office
10.164.2.0/24,North Main
10.164.3.0/24,South Branch

3) Run initial discovery

cd C:\printermanager
python auto_configure_monitoring.py

4) Start the dashboard

Recommended: run as a Windows Service for automatic startup.

# Install service
python dashboard_service.py install

# Start service
python dashboard_service.py start

# Set to auto-start
sc config PrinterDashboard start=auto

Access the dashboard

  • From the server: http://localhost:5000
  • From the network: http://<server-ip>:5000

Reports

Current Status Report

  • Snapshot of all printers and their current metrics
  • Includes summary totals, toner/drum levels, and alerts
  • Filterable by location and model

Usage Summary Report

  • Multi-period analysis: 30, 90, 120, 365 days
  • Total pages per period, active printer count, averages
  • Breakdown by printer

CSV export

# Export 90 days of data
python printer_monitor.py export 90 printer_data.csv

Operations & Maintenance

Service management

# Check status
Get-Service PrinterDashboard

# Start/Stop/Restart
Start-Service PrinterDashboard
Stop-Service PrinterDashboard
Restart-Service PrinterDashboard

# View logs
Get-Content C:\printermanager\logs\service.log -Tail 50
Get-Content C:\printermanager\logs\dashboard.log -Tail 50

Database maintenance

  • Database file: C:\printermanager\printer_monitoring.db
  • Recommend periodic backups and occasional SQLite VACUUM

Troubleshooting

Dashboard won’t start

  • Verify Python: python --version
  • Verify packages installed: pip list
  • Check port 5000 usage: netstat -ano | findstr :5000
  • Check logs: C:\printermanager\logs\

Printers not discovered

  • Confirm SNMP v1/v2c enabled and community string configured
  • Confirm UDP/161 reachability from the monitoring server
  • Check firewall rules between server and printer subnets

Page counts look wrong on day 1

This is normal. The system needs at least two readings to calculate pages printed. Day 1 may show 0. Day 2+ will reflect accurate usage.

Security Notes

  • This dashboard is intended for internal network use only.
  • Restrict inbound access to the dashboard port (default 5000) to trusted networks.
  • Use standard Windows hardening practices and monitor logs for failures.

Support

For issues, questions, or feature requests:

  1. Review the troubleshooting guidance above
  2. Check log files in C:\printermanager\logs\
  3. Contact your system administrator

Last Updated: February 12, 2025 • Version 2.0.0 • Production ready