简单的networking服务器监控(活着)

任何关于软件的提示,如果一个Web服务器启动并运行在Linux上? 它应该能够在不知道任何东西超过URL的情况下运行。 而且它必须具有在网站停机时发送电子邮件警报的function。 对于这个我自己写一个剧本应该不难,但是如果已经有好东西的话,这似乎毫无意义。

请注意,我要监视内部服务器,因此这需要是在我的计算机上运行在同一networking上的工具,而不是基于Web的外部服务。

并注意,小而简单的解决scheme是首选。

更新 :我最终创build了一个我正在使用的小python脚本,可以在这里find。

    你可以在这样的脚本中使用wget

    wget --timeout=3 --tries=1 --spider --no-check-certificate http://serverfault.com if [ $? -ne 0 ];then echo "Site Down" | mail -s "Site Down" [email protected] fi 

    如果wget无法在三秒内首次访问该网站,您将收到一封电子邮件。

    设置一个cron作业,每几分钟运行脚本。

    还有很多其他的select,但这可能是从头开始设置的最简单的方法。

    你有很多select,我会给你两个。

    • Nagios是一个完整的监控应用程序,能够监控远远超过http,但它也可以处理。 它也可以创build各种报告(“告诉我本周/月/年的服务器/服务X的正常运行时间百分比…”)

    • Monit是另一个stream行的select。 也许不像Nagios那样充满function,但是它很好。

    那么,如果你想自己运行一些东西。

    这些是一些select:

    或者,如果您想要一个托pipe解决scheme

    就我个人而言,如果您只是希望监视Web服务器的状态,那么Zabbix和Zenoss是过分的。 但是,如果您还计划监视其他function,而不是比您需要的function更多;)

    我已经提出了Richard和Janne的答案,但是如果你想了解更多关于你的web服务器发送和接收的细节,O'Reilly出版的Clinton Wong编写的“Web客户端编程Perl”的前几章给出了一个很好的概述的HTTP协议。 如果你想要更详细的监测,而不是只是上/下,并要包括响应代码等,这是一个很好的开始。

    这本书是旧的,但仍然有效。 O'Reilly于1997年出版,在http://oreilly.com/openbook/webclient/上免费在线发布了这本书的内容,作为OpenBook计划的一部分。

    如果我有代表,我会投票Janne的答案。

    关于Nagios的重要说明,它已经全面爆发并不意味着它是一个艰苦而长期的安装,它非常简单和友好。

    第二件事,你应该看看你的硬件供应商提供什么。 例如,我使用惠普Proliants,他们有非常好的转速的帮助。

    如果你喜欢Nagios所做的,但不想深入内部,你也可以看看Opsview 。 这是Nagios和其他一些工具,但通过一个很好的GUI交付。 这是一个非常好的起点。

    我会同意,Nagios是一个伟大的软件,但如果你想要一个免费的,我build议你看看AppPerfect无代理监视器 。 使用AppPerfect进行Linux服务器监控非常轻便,在监控过程中为监控目标系统增加了微不足道的开销。 您可以使用此工具来监视与CPU,磁盘,networking和内存相关的所有重要统计信息。 安装非常简单,软件使用非常简单。 Linux服务器监控也提供了一个清晰的文档和教程

    我一直在使用的一个解决scheme是HashiCorp的领事 。

    这当然不仅仅是一个简单的脚本,而且还包含电子邮件输出,但是设置你正在谈论的那种监控仍然是非常简单的(几行YAML或者JSON)。

    您很可能会创build一个模板,但是可以按如下方式监视单个服务器:

     { "service": { "name": "web", "tags": ["production"], "port": 80, "check": { "id": "front-end", "name": "HTTP front-end for web service", "http": "http://web.domain.tld", "interval": "10s", "timeout": "1s" } } } 

    其中一个原因就是,如果你愿意的话,它可以让你超越监控Web前端,并且允许你通过服务对检查进行分组(例如,你的report_server服务可以检查web前端 – 一个用于Web后端,一个用于主DB,所有这些将提供与这一个服务相关的警报)。