我正在寻找一种方法来诊断问题,例如交换死亡,其中气球存储过程填满交换并杀死整个机器(例如apache).
我已经在使用仙人掌,我可以设置nagios(虽然不愿意)或munin但据我所知他们不能记录个人程序使用 – 只是整体状态.
我知道我可以滚动一个>>的脚本到每30秒一些文件,但我想看看现有的成熟解决方案是否已经存在.
理想情况下,它会:
>每N秒记录进程的内存使用情况
>每N秒记录进程的cpu使用率
>支持图表和历史
>支持平均值 – 就像mysqld在最后一天使用43%的cpu并平均400MB内存
>自由开源
流程名称不是也不应该事先知道 – 这个想法是让它监控,然后看看顶级违规者.
我的系统是Linux(OpenSUSE).
解决方法
你只想要顶级罪犯,考虑在批处理模式下以相对较长的间隔(60秒加)运行顶级.您可能需要多个顶级运行来捕获多个资源上的顶级违规者.我已经将系统配置为在资源被过度使用时运行顶部几个周期.
考虑以批处理模式运行sar以捕获资源利用率.我意识到这是基于服务器的,但它有助于确定问题发生的时间.
运行munin并启用通知.这可能会让您有机会进入并观察服务器停机.您可以在问题发生故障之前纠正问题.
对于内存泄漏,交换使用量的稳定增加表明存在问题.我曾经看过服务器慢慢死了一段时间.问题服务是监视其他内存泄漏过程的程序.系统管理员一直坚持增加交换使用不是问题,直到服务器停止响应.
您可能会发现cfengine的异常检测可用于触发脚本在出现问题时捕获系统状态.除了使用最多资源的进程之外,您可能还需要大量信息.对于突然涌入的使用情况,您可能需要一个网络连接列表(按地址而不是名称).内存使用也很有用.