我想写我自己的服务器监控应用程序。 理想情况下,它可以显示统计信息,如负载,正常运行时间,CPU活动,最活跃的进程,内存使用情况等。从服务器获取信息的最佳方法是什么? 我最初想到的是运行ssh -e命令,但是想查看是否有比查询服务器更高效的方法。
或者,最好是将数据与Munin或类似的监测工具进行汇总?
UPDATE
为了更清楚起见,我主要感兴趣的是从服务器获取上述各种数据的最佳方式,以便我可以将其呈现在我有兴趣构build的Android应用中。 在服务器上写实际的探测器本身并不是我想要做的工作,这就是为什么我希望Nagios或类似的东西可能已经提供了数据寻找。 我只需要将这些数据提取出来并在我自己的工具中进行渲染即可。
处理这个问题的一个方法是在你的服务器上运行一个snmp代理,然后用munin或cacti这样的东西来收集结果。 这里有一个体面的仙人掌教程 ,介绍如何在Linux机器上设置net-snmp代理。
使用snmp的好处是它是networking设备的最低公分母报告机制。 几乎所有的联网设备都可以configuration为运行snmp客户端(非常低端的客户交换机和路由器除外)。 因此,如果您使用snmp来监视您的linux机器,那么使用snmp来监视您的交换机,路由器,networking打印机等也是很简单的。一般来说,您将定期轮询设备。
请注意,旧版本的snmp协议(2c)是相当不安全的。 为了处理那么多人只要设置snmp代理来运行只读。 在实践中,只要您在内部networking上使用只读snmp,安全风险就很低。 但是,在使用之前,您应该了解snmp安全模型的局限性。
我可能会build议你看看已经做了什么,而不是试图重新发明轮子。 我发现Nagios很不错,并提供了一个可以轻松扩展监控点的基础。 代理使用安全协议进行通信,但是configuration为您需要的function。
你从错误的地方开始。 你所监视的并不比监视它的重要。 前者会一直改变,你需要从一个系统开始:
有很多现成的工具可以提供上述function,通常会捆绑各种标准探针。 我喜欢Nagios,因为它在探测器和调度/报告引擎之间有明确的分离 – 这使得增加额外的探测器变得微不足道,并且有一个预先编写好的探测器和附加组件库(默认的仪表板不是那么好) ,但写我自己很容易)。