C 跨平台系统使用指标

C 跨平台系统使用指标,c,measurement,performance,C,Measurement,Performance,是否有跨平台的C API可用于获取系统使用指标?不幸的是,没有 C标准非常局限于动态分配、字符串操作、数学和文本I/O。一旦超出这一范围,您就需要操作系统API,根据定义,这些API是特定于操作系统的,而不是跨平台的。我以前使用过。通过Cygwin(据说从未尝试过)为主要的类Unix变体和Windows获取一些非常有用的系统统计信息。不同操作系统的工作方式如此不同——特别是在使用指标方面——想要得到你想要的东西可能很有挑战性。即使是听起来像“空闲内存”这样简单的东西,也很难以跨平台的方式采取行动

是否有跨平台的C API可用于获取系统使用指标?

不幸的是,没有


C标准非常局限于动态分配、字符串操作、数学和文本I/O。一旦超出这一范围,您就需要操作系统API,根据定义,这些API是特定于操作系统的,而不是跨平台的。

我以前使用过。通过Cygwin(据说从未尝试过)为主要的类Unix变体和Windows获取一些非常有用的系统统计信息。不同操作系统的工作方式如此不同——特别是在使用指标方面——想要得到你想要的东西可能很有挑战性。即使是听起来像“空闲内存”这样简单的东西,也很难以跨平台的方式采取行动。也许如果你把事情缩小一点,也许我们能找到一些东西。

取决于你想收集的指标,你可能想考虑一下(性能副驾驶)。这是一个开源的性能框架,最初由Silicon Graphics开发,它收集和整理来自大量来源的大量可能指标,并允许您从任何地方监视它们

基本上,PCP需要在系统中添加另一个“层”——例如,您可以监视一个由混合操作系统组成的分布式集群,每个集群都在本地安装了PCP;一组“代理”收集每台机器上的性能数据,然后您的代码可以根据需要使用libpcp收集这些指标

如果不知道您的具体使用场景,很难说(如果您谈论的是在最终用户的机器上无缝运行的东西,PCP可能不适合,但是如果您想要监控您控制的机器,并且乐于在它们上运行PCP服务,这是一个很棒的解决方案)

我们非常高兴地使用PCP从Windows和Linux机箱中收集指标,以及从我们的应用程序中收集内部指标,并集中记录、报告、监控趋势等。

好的老版本为客户端和服务器端提供了C库。如果你喜欢新的,你应该试试。他们已经准备好使用多种语言的客户端库,包括


还请注意,PCP(Cowan的回答中提到)自版本4起就支持OpenMetrics标准,因此,如果您决定使用Prometheus作为度量数据采集器扩展PCP或编写自定义Prometheus客户端,则是更好的解决方案,而Prometheus也通过以下方式支持SNMP:,但由于它处理MIB和身份验证的方式,设置起来更加困难。

libstatgrab看起来很酷。我想知道它目前是否保养得很好。