假设我有一台带有私有接口和公共接口的服务器。公共接口可能有 HTTP(S) 服务器,私有接口可能有 MySQL 和 SSH。
显然,Nagios 可用于检查服务是否在各自的接口上运行。但建立明确测试 MySQL 和 SSH 端口是否运行的检查是否是一个好主意?没开在公共接口上?这样做的目的是为了捕捉无意的错误配置,这些配置打开了本应是私有的服务,并发出适当的警报。
我心里有一部分想法,认为这种做法的可扩展性不是很好——例如,假设有一个 iptables DROP 规则,检查必须等到检查超时时间超过后才能完成并继续。但该超时时间必须足够长,才能区分被阻止的服务与真正陷入困境的开放服务。
这是一个切实可行的想法吗?Nagios 是正确的工具吗?我甚至还没有研究否定 TCP 检查插件结果的可行性,但我确信这是可行的……
答案1
当然可以。监控系统的作用是确保 IT 基础设施当前能够满足业务需求,无论这些需求是什么。
我的直觉是,对于您监控的端口数量没有简单的限制(好吧,65535)以确保它们不会突然开放,而实现此控制的最佳方法是严格的源代码控制加上强大,积极的文件系统监控(例如,绊线)在服务器上。
但如果某些港口绝对业务关键永远不会暴露,那么是的,一定要对此进行特定检查。您可能需要查看 NAGIOSnegate
插件,它随大多数主要发行版一起提供,并且用于执行您所建议的操作。
答案2
您可以将任何检查与negate
插件结合使用以反转检查逻辑。例如,您可以将 CRIT、WARN、UNKNOWN 和 OK 重新定义为其他状态。请参阅 --help 输出以获取更多信息。
如果您担心 DROP 策略会增加检查时间,您可以缩短超时时间。对于这样的检查,您可能也不需要每 5 分钟检查一次。我们有一些类似的检查每小时运行一次。