【问题标题】:RRD to measure CPU and Memory usageRRD 测量 CPU 和内存使用情况
【发布时间】:2011-06-30 00:14:26
【问题描述】:

我想在持续集成期间测量服务器的 CPU 和内存使用情况,并将它们表示为几个图表。我使用循环数据库文件 (*.rrd) 在带有 RRD4J 库的 java 中执行此操作。

我不知道如何定义循环存档... 我试过这种 RRA:

rrdDefCPU.addDatasource("CPU", DsType.COUNTER, 150, 0, 100);
rrdDefCPU.addArchive("RRA:AVERAGE:0.5:8:300"); 

或者

rrdDefCPU.addDatasource("CPU", DsType.COUNTER, 600, 0, 100);
rrdDefCPU.addArchive("RRA:AVERAGE:0.5:1:600"); 

在这两种情况下,我每秒记录一个测量值,但在 5 分钟内我仍然在图表上记录 2 个点。我想要一个在同一时期包含更多值的图表。

【问题讨论】:

    标签: java rrdtool rrd


    【解决方案1】:

    如果您在 5 分钟间隔内没有看到更多细节,那么我猜您的步长是 5 分钟,并且您是通过复制演示代码得到的。请在您的问题中显示您的 RrdDef 构造函数。

    RrdDef rrdDef = new RrdDef(rrdPath, startTime, 300); // step size 300s
    

    此外,您可能需要一个用于 CPU/内存使用的 GAUGE,而不是一个只会上升的 COUNTER。如果您错误地使用了 COUNTER,则会得到尖峰输出,因为 RRD 将向下移动解释为溢出,并在该观察结果中添加了非常大的数量。

    在您的代码中,您正在改变 Heartbeat 大小,它与 Xff 结合以确定输入中允许的大小差距。如果你有连续的数据,你不会看到改变 HB 的任何影响。

    【讨论】:

    • 非常感谢!我已将 step 更改为 5 并将 DsType.COUNTER 更改为 DsType.GAUGE!它有效!
    最近更新 更多