You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OCI Java SDK获取指标数据时遇400参数无效错误求助

解决OCI Java SDK获取指标时的token recognition error at: ':'异常

根据你提供的错误信息和代码,问题确实出在指标查询语句(query)的语法上。下面是具体的排查和解决步骤:

核心解决方案:给resourceId的OCID值添加双引号

OCI的指标查询语法基于PromQL,当标签值(比如你的OCID)包含特殊字符(如冒号:)时,必须用双引号将值包裹起来。你的原查询里直接写了resourceId:ocid1.instance...,OCID里的冒号导致解析器报错。

修改后的query字符串应该是这样的:

final String query = "NetworksBytesOut[1m]{resourceId=\"ocid1.instance.oc1.eu-frankfurt-1.abtheljtx3jpe4ifo3bxwhfngxfcgu3clrivse3zpuzumasauvveu74xxh4q\"}.sum()";

注意这里用了转义的双引号\",因为Java字符串里需要转义双引号才能被正确识别。

额外排查点

如果修改后仍然报错,可以检查以下几点:

  • 时间格式验证:确保START和UNTIL变量是符合ISO 8601标准的字符串(比如2024-05-20T10:00:00Z),OCI SDK对时间格式的要求比较严格。
  • 权限与资源正确性:确认你的compartment ID正确,且当前使用的OCI配置文件(CONFIG_PROFILE_DEFAULT)对应的用户有权限访问该实例的监控指标。
  • SDK版本:尝试升级到最新版本的OCI Java SDK,旧版本可能存在语法解析的兼容性问题。

验证修改后的完整代码示例

final String compartment = "ocid1.compartment.oc1..aaaaaaaao6rwmdqqv5264k2hfnlvzlridxj2mhtz3mzycq526bybtxuiyygq";
final String namespace = "oci_computeagent";
// 修改后的query,给OCID添加双引号并转义
final String query = "NetworksBytesOut[1m]{resourceId=\"ocid1.instance.oc1.eu-frankfurt-1.abtheljtx3jpe4ifo3bxwhfngxfcgu3clrivse3zpuzumasauvveu74xxh4q\"}.sum()";
final String profile = CONFIG_PROFILE_DEFAULT;
final SummarizeMetricsDataRequest request = SummarizeMetricsDataRequest.builder()
        .compartmentId(compartment)
        .summarizeMetricsDataDetails(
                SummarizeMetricsDataDetails.builder()
                        .namespace(namespace)
                        .query(query)
                        .startTime(START) // 确保START是ISO 8601格式字符串
                        .endTime(UNTIL)   // 确保UNTIL是ISO 8601格式字符串
                        .build())
        .build();

内容的提问来源于stack exchange,提问作者karthik_varma_k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:21:15