简单的Web服务器监视(运行)


8

关于监视Web服务器是否已在Linux上运行的软件的任何技巧?它应该可以在不了解URL的情况下运行。并且它必须具有在网站出现故障时发送电子邮件警报的功能。为自己编写脚本应该不难,但是如果已经有了一些不错的东西,那似乎毫无意义。

请注意,我将监视内部服务器,因此该工具必须是在同一网络上的计算机上运行的工具,而不是基于外部Web的服务。

并请注意,小型和简单的解决方案是首选。

更新:我最终创建了一个我目前正在使用的小python脚本,可以在此处找到。


可能有什么
华纳2010年

另请参阅:serverfault.com/questions/44/…-此主题已被广泛涉及。
华纳2010年

Answers:


12

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

wget --timeout=3 --tries=1 --spider --no-check-certificate http://serverfault.com

if [ $? -ne 0 ];then
  echo "Site Down" | mail -s "Site Down" admin@yourdomain.com
fi

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

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

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


7
只要您不在对其进行监视的服务器上运行它-您就不知道我多久见过一次;-)
Geraint Jones,2010年

谢谢。另外,我发现--spider也是一个有用的选项,因为它避免了将页面实际保存到磁盘上。
Zitrax'9

2
而且,如果没有安装“ postfix”,则mail命令只会无声地发送失败。
Zitrax

3
@Zitrax:如果没有安装wget,则会出现错误。如果没有建立网络,则wget将失败。如果没有可执行脚本,则cron作业将失败,依此类推。另外我没有安装“后缀”,对我来说效果很好,因为我使用的是exim。
理查德·霍洛威

1
为什么--no-check-certificate呢?警告有关TLS部署已损坏的信息也是有价值的信息。
Avamander '19

7

您有很多选择,我给您两个。

  • Nagios是一个功能完善的监视应用程序,它不仅可以监视http,还可以处理它。它还可以创建各种资源库(“告诉我本周/月/年的服务器/服务X的正常运行时间百分比...”)

  • Monit是另一个流行的选择。也许不像Nagios那样充满特色,但是仍然很好。


我一直在寻找小而简单的东西,因此monit似乎更接近于此。
Zitrax

1

好吧,如果您想自己运行一些东西。

这些是一些选项:

或者,如果您需要托管解决方案:

就个人而言,如果您仅希望监视Web服务器的状态,我认为Zabbix和Zenoss太过分了。但是,如果您还打算监视其他任何东西,而它们没有比您需要的更多功能;)


我想pingdom和上升趋势无法监视我的内部网络上的站点。
Zitrax

@Zitrax:不,他们不能。我读了那部分。
Wolph'9

1

我赞成Richard和Janne的回答,但是如果您想进一步了解您的Web服务器发送和接收的内容,Clinton Wong撰写的O'Reilly著作“使用Perl进行Web客户端编程”的前几章对此进行了概述。 HTTP协议。如果您想要不仅仅是上/下更详细的监控,并且想要包括响应代码等,那么这是一个很好的起点。

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


0

如果我有代表,我将对Janne的答案投赞成票。

关于Nagios的重要说明,它是完整的,并不意味着它是一个艰难而漫长的安装,它相当简单且友好。

第二件事,您应该真正查看硬件供应商提供的服务。例如,我使用的是HP Proliants,它们具有非常好的rpm的帮助。


0

如果您喜欢Nagios的功能,但又不想深入研究内部结构,则还可以查看Opsview。它是Nagios和其他几个工具,但通过一个不错的GUI交付。这是一个很好的起点。


0

我同意Nagios是一个很棒的软件,但是如果您想要一个免费软件,我建议您看一下AppPerfect Agentless Monitor。带有AppPerfect的Linux Server Monitoring非常轻巧,并且在监视时对目标系统的开销可忽略不计。您可以使用此工具监视与CPU,磁盘,网络和内存有关的所有重要统计信息。设置非常简单,软件也非常易于使用。此处还提供用于Linux服务器监视的清晰文档和教程。


0

我一直在使用的一种解决方案是HashiCorp的领事

当然,它不仅仅是一个带有电子邮件输出的简单脚本,但是设置您正在谈论的监视类型仍然非常容易(几行YAML或JSON)。

您很可能会创建一个模板,但是可以按以下步骤监视单个服务器:

{
  "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后端,一个用于主数据库,所有这些都将提供与此一项服务相关的警报。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.