我创建了一个标准的RRDTool数据库,默认步长为5mn(300s)。 我有不同类型的值,一些易于处理的仪表,但我在COUNTER中有其他值,但这是我的问题: 我在一个程序中读取数据,得到两个步骤之间的差值是好的,但计数器增量小于时间(在一个步骤中它可以增加小于300),所以我的输出值是错误的。
是否可以将COUNTER更改为不是一个数字,而是逐步或类似的,如果不是,我想我必须计算我的程序中的差异?
感谢您的帮助。
答案 0 :(得分:0)
RRDTool能够处理小数值,因此如果计数器的增量小于自上次更新以来的秒间隔,则没有问题。
RRDTool将所有内容存储为Rate。如果您的DS是GAUGE类型,则RRDTool假定传入值是一个速率,并且仅应用数据规范化(稍后将详细介绍)。如果类型为COUNTER或DERIVE,则将要更新的值/时间点与先前的值/时间点进行比较,以获得速率:r=(x2 - x1)/(t2 - t1)
。然后将获得的速率归一化。另一种DS类型是ABSOLUTE,它假定计数器在上次读取时被重置,给出r=x2/(t2 - t1)
。
标准化步骤基于假设从最后一个数据点开始的线性进展来调整数据点,使其精确地位于区间边界上。例如,如果您的步骤是5分钟,并且您在12:06更新,则数据点将调整回原来的12:05,并存储在12:05。但是,最后一个未调整的DP仍然保留在下次更新时使用,因此总体速率是正确的。
因此,如果您有300秒(5分钟)的间隔,并且值增加150,则存储的速率将为0.5。
如果您正在绘制的值很小,例如“打印的页数”,这看似违反直觉,但它适用于网络流量计数器等大额费用(这是RRDTool的设计目的)。
如果您确实不想在生成的图形或输出中显示小数值,则可以使用%.0f
等格式字符串强制执行无小数位,并且显示的数字将四舍五入为最接近的整数