Nagios以为其良好的状态检测机制,使Nagios可以利用在不同平台上的不同插件实现监控,当然它也支持使用SNMP协议(简单网络管理协议)实现各个平台和设备的监控,所以Nagios也可以使用SNMP协议来监控局域网内的打印机,Nagios监控打印机是使用check_hpjd工具调用SNMP协议来监控打印机的,在安装好的Nagios中的libexec插件目录下可能没有,是因为服务器上没有安装SNMP协议相关的依赖包net-snmp和net-snmp-utils,所以可以直接用yum或者是apt安装下,再重新编译下nagios-plugins,有一点像Nagios没有安装MySQL时没有check_mysql一样,操作如下:

[root@localhost nagios-plugins-2.2.1]# yum -y install net-snmp net-snmp-utils
[root@localhost nagios-plugins-2.2.1]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
[root@localhost nagios-plugins-2.2.1]# make && make install

此时再看libexec插件目录下就有check_hpjd插件,打印机的监控方式有点类似于Nagios监控Windows上的NSClient++,可以参看http://jim123.blog.51cto.com/4763600/1956790,在Nagios配置好后就有打印的配置模板,同NSClient++中一样修改下模板:

/usr/local/nagios/etc/objects/printer.cfg

define hostgroup{
        hostgroup_name  network-printers
        alias           Network Printers
        }
########################################################################################        
/usr/local/nagios/etc/servers/192.168.1.254.cfg

define host{
        use             generic-printer         ; Inherit default values from a template
        host_name       hplj200                 ; The name we're giving to this printer
        alias           HP LaserJet 200dn       ; A longer name associated with the printer
        address         192.168.1.254           ; IP address of the printer
        hostgroups      network-printers        ; Host groups this printer is associated with
        contact_groups  admins
        }
define service{
        use                     generic-service         ; Inherit values from a template
        host_name               hplj200                 ; The name of the host the service is associated with
        service_description     Printer Status          ; The service description
        check_command           check_hpjd!-C public    ; The command used to monitor the service
        check_interval  10      ; Check the service every 10 minutes under normal conditions
        retry_interval  1       ; Re-check the service every minute until its final/hard state is determined
        max_check_attempts      2
        notifications_enabled   1
        }
define service{
        use                     generic-service
        host_name               hplj200
        service_description     PING
        check_command           check_ping!3000.0,80%!5000.0,100%
        check_interval  10
        retry_interval  1
        max_check_attempts      2
        notifications_enabled   1
        }

当然如果是多台的话,也可以配置成通用模板,然后根据定义好的cfg_dir去配置多个文件:

/usr/local/nagios/etc/objects/printer.cfg

define host{
        name                    network-printers
        check_period            24x7            
        check_interval          5              
        retry_interval          1           
        max_check_attempts      4            
        check_command           check-host-alive       
        notification_period     24x7         
        notification_interval   30              
        notification_options    d,r            
        contact_groups          admins         
        register                0              
        }
define service{
        name                            network-printers               
        max_check_attempts              4                       
        normal_check_interval           3                      
        retry_check_interval            1                       
        register                        0    
        check_period                    24x7  
        process_perf_data               1         
        }

配置好后重启Nagios后就可以实现打印机的监控wKiom1mVZoyi4kMqAAAau-PMe94393.png-wh_50

如果是不知道局域网内有多少台打印机,则可以通过nmap扫描一下局域内的9100端口就知道

[root@localhost ~]# nmap -p 515 --open 192.168.1.0/24