在查看了一些关于服务器监控软件的帖子后,我得出了一个简单的问题:
我应该使用哪种服务器监控工具来自动检测“异常”情况并提出如何解决的建议?
我寻找一种软件,用于在安装后检查系统性能并计算一些平均负载值(内存、CPU 等)。当发生某些事情(CPU 负载增加到 20%)时,它会尝试检测原因。如果是 apache,它应该检查访问日志。如果是 mysql,它应该检查 mysql 日志并告诉我发生了什么。这是因为某些用户解码了大量图像,我想知道执行了哪个命令、何时执行以及用户名。磁盘使用情况、内存、进程数、线程等也是如此。
理想情况下,该软件应该定期检查系统并报告问题:PHP 错误日志中的错误、过时的软件包、安全漏洞。
换句话说,我正在寻找可以保持我的简单的 Debian/Apache/PHP/MySQL 服务器的软件,而不需要强迫我每天监控图表。
答案1
答案2
类似的软件有很多,需要注意的一点是,您应该在不同的主机上运行它,否则如果出现问题,您很有可能得不到通知。
举个例子,我们结合使用 nagios(负责所有的监控和警报,换句话说,当需要操作员查看某些东西时,它负责唤醒某人)和 cacti(也可以进行警报,但我们只是用它来收集和汇总各种指标,从网络流量到系统负载到电子邮件垃圾邮件统计信息)。
当您收到警报时(来自 nagios cacti zabbix 等等),查看一些性能数据(cacti、zabbix 等都会这样做)通常会帮助您诊断问题所在。
在通常的 LAMP 堆栈上,您描述的两个最常见的问题情况(至少根据我的经验)是 HTTP 或 SQL 服务器根本没有响应或在合理的时间内没有响应(nagios 探测器将检查这一点)或系统上的平均负载非常高。
这两项检查大概能解决 95% 的问题,但您还应该注意许多其他事项 - 例如:
- Apache 不断以你配置的最大进程数/线程数运行,意味着你的服务器无法跟上负载
- 系统运行“正常”,但 RAID 中的一个驱动器出现故障(您不知道这种事情多久会被忽视几个月 - 或者至少在下一次磁盘故障之前 ;)
您所发现的几乎所有产品都能够监控/绘制您向其抛出的所有内容,除了其包含的工具和无处不在的 SNMP 之外,您通常还可以通过简单的 shell 脚本、短程序等来扩展它们。
答案3
扎比克斯监控解决方案可以监控您想要的任何内容并相应地触发操作,例如,操作可以是执行处理日志的脚本并在需要时返回结果。您还可以在满足一个或多个条件时触发操作(例如,日志解析脚本的输出显示错误并且 CPU 负载超过 40%)。
答案4
Nagios 安装
Nagios 是一个主机和服务监视器,旨在先于您的客户、最终用户或管理人员通知您网络问题。它被设计为在 Linux 操作系统下运行,但在大多数变体下也能正常工作。监控守护程序使用外部插件对您指定的主机和服务进行间歇性检查,这些插件将状态信息返回给 Nagios。遇到问题时,守护程序可以通过各种不同的方式(电子邮件、即时消息、短信等)向管理联系人发送通知。在您的服务器上安装 Nagios 将有助于提高服务器的可靠性。
Nagios 有很多功能,使其成为一个非常强大的监控工具。下面列出了一些主要功能: 监控网络服务(SMTP、POP3、HTTP、NNTP、PING 等) 监控主机资源(处理器负载、磁盘和内存使用情况、正在运行的进程、日志文件等) 监控温度等环境因素 计划停机时间,用于在计划停机期间抑制主机和服务通知 简单的插件设计,允许用户轻松开发自己的主机和服务检查 定义网络主机层次结构的能力,允许检测和区分已关闭的主机和无法访问的主机 支持实施冗余和分布式监控服务器 能够通过 Web 界面确认问题 当服务或主机问题发生并得到解决时,联系通知(通过电子邮件、寻呼机或其他用户定义的方法) 可以选择将主机和服务通知升级到不同的联系人组 能够定义在服务或主机事件期间运行的事件处理程序,以便主动解决问题 外部命令接口,允许通过使用事件处理程序、Web 界面和第三方应用程序动态修改监控和通知行为 在程序重启后保留主机和服务状态