如何解决如何舍入电报中的输出值?
我正在寻找一种方法来舍入从telergaf 输出的值。温度、usage_idle、memory_usage 等......到 14 位小数是非常巨大的。对我来说太多了。它可以使我的一些测量值加倍。
我还没有找到简单的方法。
现在我有这个输出:
cpu,host=nuc usage_system=1.4107433532279232,usage_idle=95.06239826368747,usage_iowait=0.37981551817639264,usage_user=2.007596310360536
我希望:
cpu,host=nuc usage_system=1.4,usage_idle=95.0,usage_iowait=0.4,usage_user=2.0
我想您必须使用处理器,但您如何以简单的方式做到这一点? Starlark 只是为了舍入一个值?
解决方法
你能说出你的限制在哪里吗?是消息大小还是 InfluxDB 上的存储?还是更倾向于呈现数据?
即使你减少了 Telegraf 中的小数,我相信 InfluxDB 仍然会存储一个 8 字节的浮点字段。因此,在这种情况下,您将没有任何优势。
https://medium.com/dataseries/analysis-of-the-storage-mechanism-in-influxdb-b84d686f3697#4e6e
,我不太相信我的解决方案,但我确实喜欢这个......使用starlak处理器。
我还没有找到实现真正轮函数的方法。
[[processors.starlark]]
source = '''
def apply(metric):
for k,v in metric.fields.items():
if type(v) == 'float':
f = metric.fields[k]
if (int(f) != 0):
metric.fields[k] = float(int(f) + float(int((f % int(f)) * 10) / 10))
else:
metric.fields[k] = float(int(f * 10) / 10)
return metric
'''
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。