【 使用环境 】生产环境
【 OB or 其他组件 】OCP
【 使用版本 】4.3.1
【问题描述】OCP 的慢SQL接口配置过滤条件的时候返回400,去掉filterExpression就正常,filterExpression的语法要怎么写,官方文档中没有给出示例
curl “http://x.x.x.x:8080/api/v2/ob/clusters/1/tenants/1/slowSql?inner=false&filterExpression=@avgElapsedTime >500&startTime=2024-09-03T00:00:00Z&endTime=2024-09-04T00:00:00Z” -H “Authorization: Basic xxxxx”
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手 ] 即可召唤小助手,欢迎试用!
1 个赞
论坛小助手
2024 年9 月 4 日 15:31
#3
用户问题: 在 OCP 4.3.1 版本中配置慢 SQL 接口过滤条件时遇到了返回 400 错误的情况,希望了解如何正确书写 filterExpression
语法。
根据您的描述,当前的问题主要集中在配置慢 SQL 接口的过滤条件时出现了 HTTP 400 错误,这通常意味着请求存在语法错误或不符合预期的格式。虽然 obdiag 主要用于采集和分析与 OceanBase 相关的日志文件及系统状态,但在此情况下,我们更倾向于解决配置问题而非直接通过 obdiag 来诊断。
不过,为了确保集群本身没有因为配置不当而产生其他潜在问题,建议先使用 obdiag 对集群的基础信息进行一次全面的采集。这样可以帮助我们排除其他可能性,并且在后续的配置调试中作为参考。
日志采集场景: 集群基础信息
日志采集命令: obdiag gather scene run --scene=observer.base
请您执行上述命令并将生成的日志压缩包提供给我们。此外,请您补充以下信息以便我们更好地协助您解决问题:
您尝试使用的 filterExpression
具体内容是什么?
是否有尝试过参照官方文档或其他成功示例进行配置?
当前集群中是否有其他已生效的过滤规则?如果有,请提供相关信息。
返回的 400 错误是否有附带具体的错误消息或描述?
您是在哪个具体的操作界面上配置的过滤条件?例如,是通过 API 调用还是直接在 OCP 界面中操作的?
以上信息将有助于我们更准确地定位问题所在,并为您提供针对性的解决方案。
具体信息可参考以下文档:
附上敏捷诊断工具 obdiag 使用帮助链接
<!doctype html>HTTP Status 400 – Bad Requestbody {font-family:Tahoma,Arial,sans-serif;} h1, h2, h3, b {color:white;background-color:#525D76 ;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76 ;border:none;}
HTTP Status 400 – Bad Request
测试了一下有>这种就不行,指定filterExpression=@dbName!='sys’and@dbName!='oceanbase’就没问题
目前只遇到了>会导致问题,但是官方文档给的条件是有>号的哦
curl “http://x.x.x.x:8080/api/v2/ob/clusters/3/tenants/5/slowSql?inner=false&filterExpression=%40avgCpuTime>500 and @dbName !=‘sys’ and @dbName != ‘oceanbase’&startTime=2024-09-03T00:00:00Z&endTime=2024-09-04T00:00:00Z” -H "Authorization: Basic xxx
这样还是返回400
淇铭
2024 年9 月 4 日 17:00
#16
inner=false&‘filterExpression=@avgCpuTime%3E500’ and @dbName !=‘sys’ and @dbName != ‘oceanbase’ 改写成这样试一下
这样也是400
inner=false&‘filterExpression=@avgCpuTime%3E500’ and @dbName !=‘sys’ and @dbName != ‘oceanbase’