我正在寻找一种诊断问题的方法,比如交换死亡,在这个过程中,一个内存溢出的进程填满swap并杀死整个机器(比如apache)。
我已经在使用仙人掌,而且我可以设置nagios(虽然宁可不)或者munin,但是据我所知,他们不能logging单个程序的使用情况 – 只是总体状态。
我知道我可以每隔30秒将一个脚本滚动到某个文件,但是我想看看现有的成熟解决scheme是否已经存在。
再一次,理想情况是:
进程名不是,也不应该事先知道 – 这个想法是让它监视,然后看看顶尖的罪犯。
我的系统是Linux(OpenSUSE)。
你只是想要顶尖的犯人,考虑在批处理模式下以相对较长的时间间隔(60秒加上)跑top 。 您可能需要多个top运行来捕获多个资源上的顶级违规者。 我已经configuration系统在资源过度使用的情况下运行几个周期。
考虑以批处理模式运行sar来捕获资源利用率。 我意识到这是基于服务器,但确定发生问题的时间是有用的。
运行munin并启用通知。 这可能会让你有机会进入并观察服务器closures。 您可能可以在问题发生之前纠正问题。
对于内存泄漏,交换使用的稳步增加表明存在问题。 我曾经看过一个服务器在一段时间内慢慢死去。 问题服务是监视其他内存泄漏进程的程序。 系统pipe理员坚持认为越来越多的交换使用不成问题,直到服务器停止响应。
你可能会发现cfengine的exception检测可以用来触发一个脚本来捕捉系统状态,当出现问题时。 除了使用最多资源的进程之外,您可能还需要大量的信息。 对于突然涌入的使用情况,您可能需要一个networking连接列表(通过地址而不是名称)。 内存使用也是有用的。
sysstat几乎完全是为了你的目的。
我之前用过:
http://freshmeat.net/projects/atop/
“Atop是一个ASCII全屏性能监视器,能够报告所有进程的活动(即使进程在间隔期间已经完成),每天logging系统和进程活动以进行长期分析,通过使用高亮的系统资源颜色等。定期显示与CPU,内存,交换,磁盘和networking层相关的系统级活动,并为每个活动进程显示CPU利用率,内存增长,优先级,用户名,状态,并退出代码“。
你有没有试过collectd?
这是非常强大的和可定制的。
有很多的插件,可以与纳吉奥斯集成。
位于Nagios之上的Centreon与NRPE结合在一起。 然后,您可以编写自定义脚本以任何您希望NRPE的格式报告数据。 然后,Nagios使用NRPE从远程服务器轮询数据,而Centreon制作了一张漂亮的图表,并增加了大量的用户灵活性。 我们使用它在http://beyondhosting.net我有一个VZ容器模板与centreon + nagios设置已经如果你想要它。
graphicscentreonbuild立hostthenpost.org/tyler/2010-07-23_1719.png
nmon是一个很棒的工具,可以做你想要的。 针对AIX和Linux开发。 产生大量详细的输出并且易于报告。 如果你是谷歌,那么就有一个IBM wiki,它有大量的文档和额外的工具来parsing数据。
服务器密度正是你所描述的。
我在我们的一台生产服务器上使用它,我非常高兴。 它的最大特点是能够查看图表,点击峰值并查看当前时间的服务器CPU /内存消耗,包括所有正在运行的进程。 他们称之为快照 。
它不断在改进。 最新function之一是exception检测 ,可以让您轻松检测exception情况。 您还可以设置各种阈值
http://studyhat.blogspot.com/2010/08/user-activity-view-processes-display.html
看看上面的链接小内码给你的内存cpu等
当我提出类似的问题时,提出了答案:
伊卡潘 说 :
Munin是在安装和configuration过程中以最less的努力获得正常运行时间图表的最简单方法。 我也使用atop来处理某些进程的CPU使用情况,但这不是你要求的。
大卫Spillet 说 :
我使用collectd来logging其他一些参数中的系统负载。 它将数据存储在RRD存储中,可以使用许多可用的工具和脚本进行graphics化分析。 我使用这个脚本的修改版本作为我的graphics( 示例输出 )。
Collectd拥有插件来监视大量的东西(通常要求的东西以及顶部的东西),如果你需要一些专门的东西,创build你自己的东西不应该是困难的,所以使得一个非常灵活的工具。 在rrd.cgi中configurationgraphics是一个非常手动的过程,虽然不难,尽pipe您可能会发现更方便的工具来处理由collectd维护的RRD文件。
你也可以检查Nagios或OpenNMS 。
Munin将不需要Nagios或任何其他工具就可以完成所有你需要的function。 有些RPM可用于OpenSUSE。
也许好的旧的OProfile做你所需要的? 这是一个基于内核的系统级分析器,只有很小的(几个百分点)开销。
然后有一个很好的Perl脚本PSMon ,它允许你设置所有types的CPU /内存限制。 如果超过,那么psmon将logging错误和/或杀死违规进程。
后者不会产生任何分析报告给你,但如果它决定一遍又一遍地杀死同样的过程,你可能已经find了你正在寻找的讨厌的混蛋。 🙂