作为 ERP 实施的一部分,我们有一台运行 LPD 服务的 Windows Server 2003 R2 机器。我使用 Nagios 来监控网络,并且已经设置了此主机。我现在正在尝试设置一项服务来监控在此主机上运行的 Windows LPD 服务,并确保队列中没有任何东西停留太久。我发现http://exchange.nagios.org/directory/Plugins/Operating-Systems/Linux/check_lpstat/details但我感觉我在尝试配置它时快要失去理智了!
Nagios 在 ubuntu 10.04 上运行。我需要一个带有 lpstat 的软件包,因此我尝试了 cups-client。lpstat -h [servername]
刚返回lpstat: transport endoint is not connected
,而谷歌没有给我任何错误消息,除了不相关情况(主要与安装相关)的稀疏错误报告,因此我尝试了 lprng,它希望我首先生成/etc/printcap
,但我对提供打印服务的 Nagios 框不感兴趣,因此我也放弃了它。我开始寻找另一个选项并安装了 lpr 包,希望利用lpq
我在一些谷歌搜索中看到的命令。不幸的是,我所看到的一定是针对不同的实现,因为它不接受 -H 选项(或我看到的任何其他指定远程主机的选项)。
显然,我在这里走错了路。我知道我可以telnet [servername] 515
确保建立连接,但这只是告诉我端口是开放的,对吧?这可能会返回成功,但仍然会出现队列持有错误,对吧?(说真的,因为如果我在最后两项上假设错误,那么我就把这件事变得毫无必要地困难了)。
答案1
你是对的,一个简单的 TCP 连接并不能可靠地告诉你系统是否正常运行。
lpstat
将尝试连接到独立电力供应站端口,我相信 Windows 上的 LPD 服务仅提供标准的 unix车牌识别在端口 515 上(参见http://technet.microsoft.com/en-us/library/cc728404.aspx)。
NagiosExchangecheck_lpq
不是一个好的解决方案。你也许可以使用check_grep
作为的包装器lpq
,您要么需要一个lpq
能直接连接到打印机的,要么需要一个可以通过工作 CUPS 或 lpr-ng 连接的。
这可能是你最好的选择: http://planet.pks.mpg.de/trac/site/browser/src/nagios/plugins/check_lpr.pl?rev=178&order=name
(单击源代码下方的“原始格式”链接下载源代码)。您需要一个可以运行的 perl 和模块Net::LPR
。您可能需要对其进行一些修改,特别是如果您需要添加逻辑来检测卡住的作业。我不能说我经常使用它,但它在真正的打印机和(lpr-ng)上对我来说效果很好lpd
,尽管我没有在 Windows/LPD 上使用它。
$ perl check_lpr.pl -v -H hp1f01 -P Auto
OK - JetDirect lpd: no jobs queued on the port Auto
您还可以考虑在 Windows 系统上使用check_nrpe
和nrpe_nt
(或类似的)服务/进程检查来确保服务正常运行;或者使用某些 powershell 直接查询打印队列(例如通过 WMI)。