IBM Spectrum Scale 5.0.3 /perfmon/data API OR操作正则表达式使用问题
Spectrum Scale 5.0.3 perfmon API OR正则匹配解决方案
问题根因
- Spectrum Scale 5.0.3的perfmon REST API的正则解析逻辑与本地
mmperfmon命令使用的POSIX正则存在差异,API仅支持基础正则语法,不支持非捕获分组等扩展特性 - 传入的正则未做正确的URL编码,正则中的特殊字符(
|、(、)等)会被URL解析器当成参数分隔符处理,导致服务端收到的正则表达式不完整,请求失败 - 你尝试的
[free|total]是错误的正则写法:方括号为字符组匹配规则,仅能匹配单个字符,无法实现多字符串OR匹配
正确实现方式
方案1:使用正则匹配(OR逻辑)
首先构造符合API要求的基础正则串:gpfs_pool_(total|free)_dataKB,该正则可同时匹配两类目标指标key。
需要对正则串中的URL特殊字符做编码转换后再拼入请求URL:
(编码为%28|编码为%7C)编码为%29
编码后的完整请求示例:
[curl options headers base-address...]/scalemgmt/v2/perfmon/data?query=key%20[..path...]|gpfs_pool_%28total%7Cfree%29_dataKB%20[.. bucket etc]
方案2:多条件并列(无需正则,兼容性更高)
如果不需要复杂匹配,可以直接重复指定key查询条件,条件之间用,分隔,无需处理正则编码问题,5.0.3版本全支持:
[curl options headers base-address...]/scalemgmt/v2/perfmon/data?query=key=gpfs_pool_total_dataKB,key=gpfs_pool_free_dataKB%20[.. bucket etc]
注意事项
- 不要使用非捕获分组语法
(?:...),5.0.3版本API不支持该特性,会直接返回参数错误 - 所有正则中的特殊字符传入URL前必须完成编码,避免服务端解析参数异常
内容的提问来源于stack exchange,提问作者stuffiAI
相关产品推荐
相关产品推荐

