在网络服务器上监控什么?

在网络服务器上监控什么?

你们在 Web(或 SQL)服务器(Windows 2008)上监控哪些“健康参数”?

RAM、CPU、磁盘空间、事件日志、特定网页、网络……还有?

当达到某个临界点时,比如内存使用率超过 X% 或类似情况,您是否会在所有这些情况上发出警报?

我(或者更准确地说是系统管理员)可以使用 WhatsUp Gold 作为监控工具。但我认为目前几乎没有设置任何警报。

答案1

这取决于服务器实际在做什么。例如,我知道我的 Exchange 2007 服务器将使用大量内存,这就是 Exchange 所做的,它会尽可能地占用内存,因此监控此服务器的高内存使用量会让我整夜难眠,但是我想知道我的磁盘空间是否不足,因为 Exchange 很容易在磁盘空间不足的情况下停止工作。另一方面,我并不真正关心我的打印服务器上的磁盘使用情况。

实际上,您需要查看服务器并确定您需要了解哪些信息、哪些信息对服务器正常运行很重要、哪些信息对于历史或跟踪目的有用以及哪些信息是多余的。确定了哪些信息至关重要后,您确实应该为这些事件设置警报或触发器,如果​​您不知道什么时候出错,监控又有什么意义呢?

答案2

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

首先,一些理论:您想要监控整个系统堆栈的指标 - 不仅仅是 Web 服务器应用程序本身,还包括它在其中运行的进程、它所运行的服务器以及服务器所在的托管提供商。您想要监控:

  • 潜在的坏事(即可以出现问题——磁盘写满、网络饱和等)
  • 实际的坏事(即做过出错)
  • 好事(具体来说,当它们不再发生时——例如访问/checkout)

第二,监控什么。我将其归结为以下 14 项。具体情况可能有所不同,具体取决于具体的安装/服务器软件,但我认为这些原则无论如何都适用:

  1. 每秒请求数(活动量)
  2. 响应时间(性能)
  3. 活动连接(活动量
  4. 响应代码(2xx、3xx、5xx 及其相对分布)
  5. 处理文件句柄(这是 Nginx 特有的,与最大工作线程数和可能的连接数有关)
  6. 进程状态(服务器应用程序是否处于活动状态?)
  7. 服务器状态(服务器本身是否处于活动状态?)
  8. 服务器平均负载(服务器是否健康?)
  9. 服务器网络使用情况(带宽是否足够?)
  10. 磁盘空间(日志/缓存的空间)
  11. 托管服务提供商状态(AWS 宕机 == 您的服务器宕机)
  12. DNS 过期(DNS 过期 = 您的服务器将关闭)
  13. SSL 证书过期(证书过期 = 您的服务器将宕机)
  14. 用户活动(关键页面 - 它们是否正在被查看并返回 200 OK?)

如果感兴趣的话可以在这里查看完整详情:

[披露:我与 Scalyr 公司有关联,该公司提供链接指南,我也是为该公司编写该指南的。]

答案3

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

基本上,尽可能便宜地获取所有数据(所有 RAW 数据应该相当便宜),记录基线,这将帮助您检测异常。异常包括程序出错并占用所有磁盘空间、内存泄漏增加内存使用量、登录用户数量相同但进程数量增加一倍等。

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

答案4

我监控 CPU、磁盘空间、CPU 队列、ping(检查机器是否启动)、IIS 服务是否正在运行,我调用 ASPX 页面以确保 .NET 正常运行。我像用户一样输入用户名和密码登录应用程序,以确保页面加载并且不会抛出 500 或超时。

我通常不监控内存使用情况,因为内存使用率通常为 100% 或接近 100%。IIS 在保持内存正常方面做得不错,并且默认情况下 IIS 每天左右都会重新启动应用程序池,以清除任何残留内容。

我倾向于不监控磁盘 IO,因为它可能在其他地方。在某些系统(SQL、Exchange 等)上,我会跟踪每个驱动器的磁盘队列,但阈值非常高。系统会出现峰值,所以我只想知道它们是否会变得很糟糕。

相关内容