我正在使用Telegraf通过SNMP轮询某些Ubiquiti设备。我的telegraf.conf文件中包含以下内容,以获取设备的平均负载:
# Load averages
[[inputs.snmp.field]]
name = "loadAverage1"
oid = "UCD-SNMP-MIB::laLoad.1"
[[inputs.snmp.field]]
name = "loadAverage5"
oid = "UCD-SNMP-MIB::laLoad.2"
[[inputs.snmp.field]]
name = "loadAverage15"
oid = "UCD-SNMP-MIB::laLoad.3"
这会提取您可以在此查询中看到的数据:
> SELECT "loadAverage1", "loadAverage5", "loadAverage15" FROM "telegraf_unifi"."autogen"."snmp.UAP" WHERE "agent_host"='192.168.140.100' FILL(null)
name: snmp.UAP
time loadAverage1 loadAverage5 loadAverage15
---- ------------ ------------ -------------
1553172422000000000 0.14 0.16 0.10
1553172480000000000 0.15 0.16 0.10
1553172540000000000 0.11 0.14 0.10
1553172600000000000 0.23 0.16 0.11
1553172660000000000 0.34 0.21 0.12
1553172720000000000 0.47 0.27 0.15
1553172780000000000 0.26 0.25 0.15
1553172840000000000 0.27 0.26 0.16
1553172900000000000 0.13 0.23 0.16
1553172960000000000 0.08 0.20 0.15
1553173020000000000 0.03 0.16 0.14
1553173080000000000 0.01 0.13 0.13
1553173140000000000 0.06 0.12 0.12
1553173200000000000 0.02 0.09 0.11
1553173260000000000 0.01 0.07 0.10
问题在于这些字段被另存为字符串。
> show field keys on telegraf_unifi
...
name: snmp.UAP
fieldKey fieldType
-------- ---------
loadAverage1 string
loadAverage15 string
loadAverage5 string
...
因为这些是字符串,所以不能使用类似mean
的函数。
与其他字段一样,如何强制将它们另存为浮点值?
答案 0 :(得分:0)
您遇到的问题是由于您选择的oid
。
查看UCD-SNMP-MIB MIB,您可以找到laLoad
对象类型:
laLoad OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The 1,5 and 15 minute load averages (one per row)."
::= { laEntry 3 }
这是DisplayString
。
您似乎想要laLoadFloat
对象类型。
laLoadFloat OBJECT-TYPE
SYNTAX Float
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The 1,5 and 15 minute load averages as an opaquely
wrapped floating point number."
::= { laEntry 6 }
将oid
文件中的telegraf.conf
行更改为:
oid = "UCD-SNMP-MIB::laLoadFloat.1"