当我监控服务器时应该关注哪些指标?

当我监控服务器时应该关注哪些指标?

我看到了很多监控工具,它们大多显示相同的内容。但我想知道是否真的有必要监视所有这些内容。

我想知道哪些指标真正重要,例如主要运行网站的 Web 服务器,使用 PHP-FPM、Nginx 和 MySQL。

另外,我正在研究图形,但如何理解和分析它们以防止任何未来的故障?

答案1

重要的指标包括:

  • 表明您提供的服务的正确和正常运行存在问题;或
  • 指出问题的根本原因

哪些指标对你来说重要取决于你根据自己的专业判断,哪些指标最能满足这两个标准。如果你没有专业知识能够提前准确判断,嗯...是的。收集更多你可能永远不需要的数据,总比不收集一些你以后会需要的数据要好。(需要注意的是,如果你的监控开始干扰服务的有效运行,你可能需要稍微调低一点,或者优化统计信息收集)。

如果您正在寻找一个快捷的答案,恐怕我没有——您正处于一个陡峭的学习曲线上,这恰恰说明了系统管理员的意义所在。如果您处于一个停机时间无关紧要的情况,那太好了!您有一个很好的学习机会。如果这项服务运行不完美,您最终会被起诉或破产,您可能需要找一个更有经验的人来为您提供一对一的指导和辅导。

答案2

我刚刚撰写并发布了一篇有关这一主题的指南:

请允许我在这里总结一下:监控任何类型的生产系统时需要考虑 3 个主要目标:

  1. 找出尽可能多的问题;
  2. 尽早发现这些问题;
  3. 尽可能少地产生错误警报(这意味着设置适当的警报)

您可以通过在以下框架下选择指标来实现这一点:

  1. 监控潜在的坏事(可以出错——这通常表现为内存、磁盘、带宽等填满/耗尽
  2. 监控实际的坏事(尽管你尽了最大努力,但还是出错了)
  3. 监控好事(或坏事——关注你希望发生的事情,并在它们发生频率较低时设置警报
  4. 调整和改进(否则你将面临“警报疲劳”的风险,也就是 DevOps 版的“狼来了”)。

每次部署都会有点不同,所以 YMMV,但这是许多经验丰富的专业人士用来思考事情的框架(无论是否明确)。

[编辑披露:我隶属于 Scalyr 公司,该公司涉及该领域,上述链接发布在他们的网站上]

答案3

最基本的是关注 CPU 负载、可用内存和交换、磁盘空间、磁盘 I/O 以及网络/带宽 I/O。这可以使用 munin 或 collectd 等工具来完成。有些人喜欢监控很多事情的复杂性,但如果你保持简单,至少你可以了解整体情况。我还建议你配置监控工具,当事情开始出错时向你发送电子邮件警报(即使用“阈值”或类似的东西)。

另一个非常有用的事情是密切关注最重要的服务器日志,以查找任何异常,即错误消息甚至警告。但此类消息可能非常常见,具体取决于各种软件的日志配置方式。通常,守护进程有一个配置文件,您可以在其中将“LogLevel”从错误(=仅在出现故障时记录)更改为调试(=记录任何内容)。检查服务器上正在运行哪些守护进程,并将日志级别更改为错误或警告。然后,您可以安装日志文件分析工具(如 OSSEC),并训练它在某些事情可以接受时保持沉默,而在出现问题时发出警报。这些警报可以通过电子邮件发送给您。

对于您的特定服务 Nginx 和 Mysql,我建议您监控它们的响应时间。这样做有两个好处:如果您根本没有收到响应,则说明出现了问题。如果您收到的响应表明响应时间异常长(尤其是如果响应时间不是暂时的,而是持续几分钟或几小时),则说明服务存在问题。

答案4

上面的建议非常好。但是,如果您真的只是需要入门,请先查看基本信息:CPU 使用率随时间变化、内存使用率随时间变化、带宽使用率和磁盘空间使用率(或可用磁盘空间)。这四个指标非常常见,因为它们几乎定义了计算机的功能。

监控一段时间后,您就会知道服务器的“正常”状态,然后就能发现异常情况。这时您就可以开始深入挖掘并找出“原因”了——这将需要额外的更具体的监控 :)

相关内容