【问题标题】:Cross Platform System Usage Metrics跨平台系统使用指标
【发布时间】:2010-02-13 01:00:08
【问题描述】:

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

【问题讨论】:

    标签: c measurement performance


    【解决方案1】:

    我之前曾与libstatgrab 合作过。通过 Cygwin 为您提供一些非常有用的系统统计信息,用于主要的类 Unix 变体和 Windows(据说 - 从未尝试过)。不同操作系统的工作方式如此不同——尤其是在使用指标方面——要获得你想要的东西可能会很困难。即使是听起来像“空闲内存”这样简单的东西,以跨平台的方式进行操作也可能很棘手。如果你把范围缩小一点,也许我们能找到一些东西。

    【讨论】:

    • libstatgrab 看起来很酷。我想知道它目前是否维护得很好。
    【解决方案2】:

    很遗憾没有。

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

    【讨论】:

      【解决方案3】:

      根据您要收集的指标,您可能需要考虑查看PCP(绩效副驾驶)。这是一个开源性能框架,最初由 Silicon Graphics 开发,它从大量来源收集和整理大量可能的指标,让您可以从任何地方监控它们。

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

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

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

      【讨论】:

        【解决方案4】:

        古老的SNMP 为客户端和服务器端提供C 库。如果你喜欢更新的东西,你应该试试Prometheus。他们有 Node Exporter 可供使用,还有适用于多种语言的客户端库,包括 C

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

        【讨论】:

          猜你喜欢
          • 2010-10-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-22
          • 2010-09-20
          • 2015-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多