在Web服务器上监视什么?

你们在web(或sql)服务器上监视什么“健康参数”(Windows 2008)?

内存,CPU,磁盘空间,事件日志,特定的网页,networking..更多?

如果达到了一些关键性的东西,比如在X%或者类似的东西上的内存使用率,你有没有这些报警?

我(或更准确的系统pipe理员)可以使用WhatsUp Gold作为监控工具。 但是现在我觉得几乎没有任何警报。

这取决于服务器在做什么。 例如,我知道我的Exchange 2007服务器将使用大量的内存,这就是Exchange所做的,它尽可能多地抓取,所以监视这个服务器的高RAM使用会让我整晚都清醒,但是我想知道我的磁盘空间越来越小,因为Exchange很容易停止使用低磁盘空间。 另一方面,我并不关心我的打印服务器上的磁盘使用情况。

真的,你需要看看你的服务器,并确定你需要知道什么,对他们正确运行的重要,什么是很好的知道历史或追踪的目的,什么是多余的。 当你确定什么是关键的,那么你真的应该有这些事件的警报或触发器设置,如果你不知道什么时候出错,监视什么点?

我刚刚花了几个月的时间来研究这个确切的问题。 我的研究集中在Nginx上,但是原理是一样的,可以应用于任何Web服务器(Windows或其他)。

首先,有一些理论:你想要监视整个系统堆栈中的指标 – 不只是Web服务器应用程序本身,还包括它运行的进程,运行的服务器以及服务器所在的主机提供商。 :

  • 潜在的坏事(即可能出错的东西 – 磁盘填满,networking饱和等)
  • 实际上不好的事情(即那个确实出错的事情)
  • 好东西(特别是,当他们停止发生 – 例如访问/结帐)

其次,要监视什么。 我煮了这14个项目。 YMMV取决于具体的安装/服务器软件,但我认为这些原则将适用于:

  1. 每秒请求数(活动量)
  2. 响应时间(性能)
  3. 活动连接(活动量
  4. 响应代码(2xx,3xx,5xx及其相对分布)
  5. 处理文件句柄(这是Nginx特定的,涉及到最大工作者数量和可能的连接)
  6. 进程状态(服务器应用程序是否还活着?)
  7. 服务器状态(是服务器本身还活着吗?)
  8. 服务器负载平均值(服务器是否正常?)
  9. 服务器networking使用情况(有足够的带宽?)
  10. 磁盘空间(日志/caching空间)
  11. 托pipe服务提供者状态(AWS正在closures==您的服务器正在closures)
  12. DNS到期(DNS expiring =您的服务器正在closures)
  13. SSL证书过期(证书过期=您的服务器正在closures)
  14. 用户活动(关键页面 – 他们正在查看并返回200 OK?)

好奇的细节在这里:

  • 如何监控Nginx:基本指南

[披露:我隶属于Scalyr公司,该公司负责链接指南,并为我撰写指南]

监测的想法是与基线进行比较。 如果你不知道这是否正常,那么知道你的磁盘使用率是90%,你的带宽是10GB /天是没有意义的。

基本上所有你可以便宜得到(所有的RAW数据应该相当便宜),logging一个基线,这将有助于你发现exception。 exception情况包括程序出错,占用磁盘空间,内存泄漏,内存使用增加,login用户数相同时进程数加倍等。

最重要的是你可以从原始数据中收集到什么,并经常logging这些数据的样本。 如果磁盘空间增长非常缓慢,则磁盘空间采样不需要每五分钟进行一次。

我监视CPU,磁盘空间,CPU队列,ping(检查机器是否运行),IIS服务正在运行,我调用一个ASPX页面来确保.NET很高兴和处理。 我login到应用程序传递用户名和密码为用户将确保页面加载并不会引发500或超时。

我通常不会监视使用的内存,因为通常是100%或接近100%。 IIS在保持内存正常方面做得不错,IIS每天都会重启应用程序池,默认情况下会清理任何残留的内容。

我倾向于不监视磁盘IO,因为它可以是所有其他地方。 在某些系统SQL,Exchange等上,我会跟踪每个驱动器的磁盘队列,但是具有非常高的阈值。 系统会飙升,所以我只想知道他们是否蝙蝠屎。