Telegraf能否接收包含空格的传感器数据?
解决Telegraf接收带空格传感器数据的方法
方案1:用raw格式接收原始请求体
把http_v2_listener的data_format设为"raw",Telegraf会完整保留请求里的所有字符(包括空格),之后用正则解析器提取目标字段即可。
示例配置片段:
[[inputs.http_v2_listener]] service_address = ":8080" paths = ["/telegraf"] data_format = "raw" [[processors.parser]] parse_mode = "regex" regex = 'SOX= (\w+) (\w+)' field_name = "raw" [[processors.parser.fields]] SOX_value1 = "$1" SOX_value2 = "$2"
这个配置能把SOX= 0x0000000 0xa1aaaa1a这类数据,解析成两个独立字段分别存储两个十六进制值。
方案2:适配form-urlencoded格式的转义规则
如果传感器固定用form-urlencoded格式发送数据,空格会被自动转成+或%20,你可以在parser里配置解码逻辑,或者调整传感器设置让它不自动转义空格(部分设备支持)。但相比之下,raw格式的处理更直接可靠。
验证方式
用curl发送模拟请求测试配置是否生效:
curl -X POST -d "SOX= 0x0000000 0xa1aaaa1a" http://localhost:8080/telegraf
内容的提问来源于stack exchange,提问作者Oscar Brazzale
相关产品推荐
相关产品推荐

