提取服务器统计数据以进行远程监控

提取服务器统计数据以进行远程监控

我想编写自己的服务器监控应用程序。理想情况下,它可以显示诸如负载、正常运行时间、CPU 活动、最活跃的进程、进程的内存使用情况等统计信息。从服务器获取这些信息的最佳方法是什么?我最初考虑运行 ssh -e 命令,但想看看是否有比轮询服务器更有效的方法。

或者,最好将其与 Munin 或类似监控工具所汇总的数据结合起来吗?

更新

更明确地说,我主要感兴趣的是从服务器获取上述数据的最佳方式,以便我可以将其呈现在我感兴趣的 Android 应用中。在服务器上编写实际的探测器实际上不属于我想要做的工作范围,这就是为什么我希望 Nagios 或类似的东西可能已经提供了我正在寻找的数据。我只需要提取该数据并将其呈现在我自己的工具中。

答案1

处理此问题的一种方法是在您的服务器上运行 snmp 代理,并使用 munin 或 cacti 之类的工具收集结果。以下是不错的仙人掌教程它解释了如何在Linux机器上设置net-snmp代理。

使用 snmp 的优点是它是网络设备的最低通用报告机制。几乎所有联网设备都可以配置为运行 snmp 客户端(除了非常低端的消费者交换机和路由器)。因此,如果您使用 snmp 来监控您的 linux 机器,那么使用 snmp 来监控您的交换机、路由器、联网打印机等也很简单。通常,您将定期轮询设备。

请注意,旧版本的 snmp 协议 (2c) 非常不安全。为了解决这个问题,许多人只是将 snmp 代理设置为只读运行。实际上,只要您在内部网络上使用只读 snmp,安全风险就很低。然而,在使用 snmp 安全模型之前,您应该了解它的局限性。

答案2

我可能会建议你看看已经做了什么,而不是重新发明轮子。我发现 Nagios 做得非常好,并提供了一个基础,你可以轻松地从中扩展监控点。代理确实使用安全协议进行通信,但配置了你需要的功能。

答案3

你的起点是错误的。监控什么并不比监控方式重要。前者总是会变化,你需要从一个系统开始:

  • 安排探测器的运行
  • 为目标调用适当的探测器
  • 整理结果
  • 提供实时警报,
  • 趋势报告
  • 仪表板

有很多现成的工具可以提供上述功能,并且通常与各种标准探测器捆绑在一起。我喜欢 Nagios,因为它在探测器和调度/报告引擎之间有明确的区分 - 这使得添加额外的探测器变得轻而易举,并且具有大图书馆预先编写的探测器和附加组件(默认仪表板在我看来并不是那么好,但编写我自己的很容易)。

相关内容