Zabbix7.4.8(四):通过 SNMP 监控打印机
大多数现代网络打印机都支持 SNMP(简单网络管理协议),这是最常用和最有效的监控方式。
一、两种监控方式详解
1.1、SNMP Polling(主动轮询)
这是 Zabbix 监控打印机的 主要方式,不需要 snmptraps。
Zabbix Server 按设定周期(如每 5 分钟)向打印机发起 SNMP 请求:
GET 1.3.6.1.2.1.43.11.1.1.9.1.1 → 黑色碳粉余量
GET 1.3.6.1.2.1.43.10.2.1.4.1.1 → 总打印页数
打印机返回当前值(如 51)
Zabbix Server 将数据存入 zabbix-server-pgsql 数据库
Zabbix Web 从前端展示图表、触发器等
特点:
- 主动获取,稳定可靠
- 不依赖打印机主动发送
- 适用于所有监控指标(碳粉、页数、型号等)
1.2、SNMP Traps(被动接收)
这是 事件驱动型监控,需要启用 zabbix-snmptraps。
打印机遇到事件(如“卡纸”、“碳粉耗尽”),主动向 Zabbix 发送 Trap 消息(UDP 162 端口)
zabbix-snmptraps 服务监听并接收 Trap
将 Trap 转发给 Zabbix Server
Zabbix Server 解析 Trap 内容(如 Printer Status = 4 表示卡纸)
存入 zabbix-server-pgsql,触发告警
特点:
- 实时性强:事件发生立即通知,无需等待轮询
- 减少网络负载:只在事件发生时发送数据
- 需要配置打印机发送 Trap 到 Zabbix IP
- 需要 Zabbix 启用 zabbix-snmptraps 服务
1.3、典型监控指标与获取方式对比
指标 | 获取方式 | 是否依赖 snmptraps |
黑色碳粉余量(%) | SNMP Polling | 否 |
总打印页数 | SNMP Polling | 否 |
打印机型号 | SNMP Polling | 否 |
序列号 | SNMP Polling | 否 |
设备在线状态(Ping) | ICMP Ping | 否 |
卡纸告警 | SNMP Trap | 是 |
缺纸告警 | SNMP Trap | 是 |
碳粉耗尽 | SNMP Trap 或 Polling | Trap 依赖 snmptraps |
门打开 | SNMP Trap | 是 |
二、主动轮询监控打印机操作步骤
2.1、查看打印机是否支持 SNMP及是否已启用
登录http://192.168.1.222,进入网络——安全性——SNMP,如下图:
打印机 IP 地址可被 Zabbix Server 访问。
2.2、获取打印机 OID 信息
打印机通常遵循 HP Printer MIB 或 通用打印机 MIB(Printer-MIB),常用 OID 包括:
OID | 含义 |
1.3.6.1.2.1.25.3.2.1.1 | 打印机状态(如 running, idle, printing) |
1.3.6.1.2.1.43.11.1.1.6 | 墩仓状态(纸张状态) |
1.3.6.1.2.1.43.11.1.1.8 | 墨粉/碳粉级别(百分比) |
1.3.6.1.2.1.43.11.1.1.9 | 墨粉/碳粉最大容量 |
1.3.6.1.2.1.43.8.2.1.14 | 打印机错误信息(如卡纸、缺墨) |
提示:可通过 snmpwalk 命令测试:
snmpwalk -v 2c -c public 192.168.1.222 1.3.6.1.2.1.43
在宿主机上运行上面的命令。
2.3、启动 Zabbix server
docker run --name zabbix-server-pgsql -t -e DB_SERVER_HOST="192.168.1.209" -e DB_SERVER_PORT="5432" -e POSTGRES_USER="zabbix" -e POSTGRES_PASSWORD="root1234~" -e POSTGRES_DB="zabbix_db" -e ZBX_ENABLE_SNMP_TRAPS="true" --network=sinops_network -p 10051:10051 --volumes-from zabbix-snmptraps --restart unless-stopped -d zabbix/zabbix-server-pgsql:latest
ZBX_ENABLE_SNMP_TRAPS:是否启用 SNMP trap 功能。 这需要存在 zabbix-snmptraps(名称需要和启动zabbix-snmptraps的名称一致) 容器实例,并共享 /var/lib/zabbix/snmptraps volume 到 Zabbix server 或 proxy。
说白了,在zabbix server容器中,能看到zabbix-snmptraps中/var/lib/zabbix/snmptraps的内容。
zabbix-snmptraps 镜像:运行 snmptrapd 守护进程,监听 UDP 162 端口,接收 SNMP Traps,并写入文件(默认路径 /var/lib/zabbix/snmptraps)
zabbix-server 镜像:需要读取这些 trap 文件来处理告警
但由于 zabbix-server 和 zabbix-snmptraps 是两个容器,必须共享同一个存储卷,才能让 server 读到 traps。
2.4、下载链接模板:
https://github.com/zabbix/community-templates
Printers\HP\template_hp_laserjet_3390\6.0\template_hp_laserjet_3390.yaml
2.5、导入模板:
在 Zabbix → 数据采集 → 模板 → 导入
2.6、监控——创建主机:
主机名称:HP LaserJet Pro MFP M429dw
可见名称:办公室打印机
接口:SNMP,打印机IP 地址和端口(161)
SNMP 版本:v2c,Community String:public
模版组:Printers——Printer HP LaserJet 3390
三、监控指标
监控项 | 是否有数据 | 值 |
Current cartridge toner level - black | 有 | 51(当前碳粉余量) |
Max cartridge toner level - black | 有 | 100(最大碳粉容量) |
Pages printed - total | 有 | 33593 页 |
Printer model | 有 | HP LaserJet Pro MFP M429dw |
Serial number | 有 | CNDRPBH590 |