Zabbix监控中如何通过JSONPath提取无[]和""的纯数值
Zabbix监控任务中JSONPath提取纯数值的解决方案
问题场景
原始JSON数据:
{"status": "success","date": {"resultType": "vector","result": [{"metric": {},"value": [1666720385607,"3675"]}]}}
使用$..[value].[1]查询后返回["3675"],需要获取不带[]和""的纯数值3675。
解决方法
方法1:精确JSONPath+数值转换
优化JSONPath表达式:使用精准路径直接定位目标值,避免数组包装,表达式改为:
$.date.result[0].value[1]该表达式会直接返回字符串值
"3675"。添加Zabbix预处理规则:
在监控项的「预处理」列表中添加「转换为数字」规则,Zabbix会自动去除引号并将字符串转为纯数值,最终得到3675。
方法2:正则替换去除多余符号
如果上述方法不适用,可通过正则替换处理结果:
- 先用JSONPath提取数据(表达式可沿用
$..value[1]或优化后的路径)。 - 添加「正则表达式替换」预处理规则:
- 正则表达式:
^\["(.*)"\]$ - 替换为:
\1
该正则会匹配["3675"]格式的字符串,提取出中间的3675并返回。
- 正则表达式:
内容的提问来源于stack exchange,提问作者thiago lacerda
相关产品推荐
相关产品推荐

