是否有可用于获取系统使用指标的跨平台C API?
答案 0 :(得分:2)
不幸的是没有。
C标准几乎仅限于动态分配,字符串操作,数学和文本I / O.一旦超越了这一点,就需要OS API,根据定义,它们是特定于操作系统的,而不是跨平台的。
答案 1 :(得分:2)
之前我曾与libstatgrab合作过。通过Cygwin(假设 - 从未尝试过)为主要类Unix变体和Windows提供一些非常有用的系统统计信息。不同操作系统的工作方式如此不同 - 特别是在涉及使用指标时 - 获得所需内容可能具有挑战性。即使像“自由记忆”这样简单的声音,也可能很难以跨平台的方式行事。也许如果你缩小一点,也许我们可以找到一些东西。
答案 2 :(得分:1)
根据您要收集的指标,您可能需要考虑查看PCP(Performance Co-Pilot)。这是一个开源性能框架,最初由Silicon Graphics开发,可从大量来源收集和整理大量可能的指标,并允许您从任何地方监控它们。
基本上PCP会涉及在系统中添加另一个“层” - 例如,您可能会监视混合操作系统计算机的分布式群集,每个计算机都安装在本地PCP;一组“代理”收集每台机器上的性能数据,然后您的代码可以使用libpcp根据需要收集这些指标。
如果不知道您的确切使用情况(如果您正在谈论在最终用户的机器上无缝运行的东西,PCP可能不适合,但是如果您想监控您控制的机器,并且很乐意运行),很难说他们的PCP服务,这是一个很棒的解决方案。)
我们非常高兴地使用PCP从Windows和Linux框中收集指标,以及从我们的应用程序中收集内部指标,并集中记录,报告,监控趋势等。
答案 3 :(得分:0)
好的旧SNMP为客户端和服务器端提供了C库。如果您喜欢较新的内容,则应尝试Prometheus。他们已经准备好使用Node Exporter以及包括C在内的许多语言的客户端库。
还请注意,PCP(在Cowan的答案中提到)自版本4起就支持OpenMetrics标准,因此,如果您决定使用Prometheus作为扩展PCP的度量数据收集器或编写自定义Prometheus客户端,则SNMP是更好的解决方案。通过SNMP Exporter进行Prometheus,但由于它处理MIB和身份验证的方式而更加难以设置。