要帮助您解决在Java代码中获取Azure资源指标数据时遇到的错误,我需要更多的具体信息,比如错误信息、代码片段、使用的库和API等。不过,我可以提供一个基本的示例,展示如何使用Java和Azure SDK来获取Azure资源的指标数据。以下是一个使用Az
摘要:问题描述 在使用 Java 代码调用虚拟机(VM)API获取指标数据时,出现时间格式解析错误。 错误信息: '{ "code": "Bad
问题描述
在使用 Java 代码调用虚拟机(VM)API获取指标数据时,出现时间格式解析错误。
错误信息:
'{
"code": "BadRequest",
"message": "Detected invalid time interval input: 2024-03-13T13:33:05.123 15:00/2024-03-13T13:48:05.233 15:00, supported Iso 8601 time interval format: (Datetime/Datetime, Datetime/Duration, Duration/Datetime, Duration)"
}'
JAVA 代码:
static void query()
{
MetricsQueryClient metricsQueryClient = new MetricsQueryClientBuilder()
.endpoint("https://management.chinacloudapi.cn")
.credential(new DefaultAzureCredentialBuilder().build())
.buildClient();
String resourceId = "<resource id>";
Response<MetricsQueryResult> metricsResponse = metricsQueryClient
.queryResourceWithResponse(resourceId,
Arrays.asList("CpuTime", "Requests"),
new MetricsQueryOptions()
.setGranularity(Duration.ofHours(1))
.setTimeInterval(new QueryTimeInterval(OffsetDateTime.now().minusDays(1), OffsetDateTime.now()))
.setAggregations(Arrays.asList(AggregationType.AVERAGE, AggregationType.COUNT)),
Context.NONE);
MetricsQueryResult metricsQueryResult = metricsResponse.getValue();
for (MetricResult metric : metricsQueryResult.getMetrics())
{
System.out.println("Metric name " + metric.getMetricName());
for (TimeSeriesElement timeSeriesElement : metric.getTimeSeries())
{
System.out.println("Dimensions " + timeSeriesElement.getMetadata());
for (MetricValue metricValue : timeSeriesElement.getValues())
{
System.out.println(metricValue.getTimeStamp() + " " + metricValue.getTotal());
}
}
}
}
这个会是什么原因导致的呢?
问题解答
添加日志,对比代码生成的时间格式字符串后,发现问题根源于本地执行环境的时区设置相关!
因为 Java SDK中timespan参数仅支持UTC的ZoneOffset。
