如何使用 Java SDK 查询最近五分钟的 Azure 存储指标
How to Query Azure Storage metrics for last five minutes using Java SDK
我已经编写了一个独立代码来获取 Azure 存储 Blob 服务的指标,但我只想获取最后 5 分钟的指标如何从 $MetricsMinutePrimaryTransactionsBlob 获取它请建议
CloudTable cloudMetric = tableClient.getTableReference(cloud
.getHourMetricsTable(StorageService.BLOB).getName());
String partitionFilter2 = TableQuery.generateFilterCondition(
"PartitionKey", QueryComparisons.EQUAL, "20170602T1400");
String rowFilter3 = TableQuery.generateFilterCondition("RowKey",
QueryComparisons.EQUAL, "user;All");
String combinedFilter = TableQuery.combineFilters(partitionFilter2,
Operators.AND, rowFilter3);
TableQuery<MetricsPojo> partitionQuery2 = TableQuery.from(
MetricsPojo.class).where(combinedFilter);
for (MetricsPojo capacityMetrics2 : cloudMetric
.execute(partitionQuery2)) {
System.out.println(capacityMetrics2);
System.out.println(capacityMetrics2.getPartitionKey() + "\n"
+ capacityMetrics2.getRowKey() + "\n"
+ capacityMetrics2.getTimestamp());
现在没有简单的方法来查询最近 5 分钟的行。由于 PartitionKey 是以分钟为单位的时间戳,您可以建议查询最近 20 分钟行的查询过滤器,并在本地从结果中找到最近 5 分钟的行。
TableQuery.combineFilters(
TableQuery.generateFilterCondition("PartitionKey", QueryComparisons.GreaterThanOrEqual, "20170602T1400"),
TableOperators.And,
TableQuery.generateFilterCondition("PartitionKey", QueryComparisons.LessThanOrEqual, "20170602T1420"));
根据你的描述和@FrancisYu-MSFT 的回复,我写了一个示例代码,重现了你当前的问题。
这是我的示例代码。
String connectionString = String.format("DefaultEndpointsProtocol=http;AccountName=%s;AccountKey=%s", ACCOUNT_NAME, ACCOUNT_KEY);
CloudStorageAccount account = CloudStorageAccount.parse(connectionString);
CloudAnalyticsClient client = account.createCloudAnalyticsClient();
CloudTable metrics = client.getMinuteMetricsTable(StorageService.BLOB);
System.out.println(metrics.getName());
String queryString = TableQuery.combineFilters(
TableQuery.generateFilterCondition("PartitionKey", QueryComparisons.GREATER_THAN_OR_EQUAL, "20170602T1400"),
Operators.AND,
TableQuery.generateFilterCondition("PartitionKey", QueryComparisons.LESS_THAN_OR_EQUAL, "20170602T1420"));
TableQuery<TableServiceEntity> query = TableQuery.from(TableServiceEntity.class).where(queryString);
for(TableServiceEntity entity : metrics.execute(query)) {
System.out.println(entity.getPartitionKey()+"\t"+entity.getRowKey());
}
然后我遇到了同样的问题 运行 我的代码,这是由指标 table $MetricsMinutePrimaryTransactionsBlob
不存在引起的,所以你需要启用相关的 Diagnostics
选项创建,如下图
我已经编写了一个独立代码来获取 Azure 存储 Blob 服务的指标,但我只想获取最后 5 分钟的指标如何从 $MetricsMinutePrimaryTransactionsBlob 获取它请建议
CloudTable cloudMetric = tableClient.getTableReference(cloud
.getHourMetricsTable(StorageService.BLOB).getName());
String partitionFilter2 = TableQuery.generateFilterCondition(
"PartitionKey", QueryComparisons.EQUAL, "20170602T1400");
String rowFilter3 = TableQuery.generateFilterCondition("RowKey",
QueryComparisons.EQUAL, "user;All");
String combinedFilter = TableQuery.combineFilters(partitionFilter2,
Operators.AND, rowFilter3);
TableQuery<MetricsPojo> partitionQuery2 = TableQuery.from(
MetricsPojo.class).where(combinedFilter);
for (MetricsPojo capacityMetrics2 : cloudMetric
.execute(partitionQuery2)) {
System.out.println(capacityMetrics2);
System.out.println(capacityMetrics2.getPartitionKey() + "\n"
+ capacityMetrics2.getRowKey() + "\n"
+ capacityMetrics2.getTimestamp());
现在没有简单的方法来查询最近 5 分钟的行。由于 PartitionKey 是以分钟为单位的时间戳,您可以建议查询最近 20 分钟行的查询过滤器,并在本地从结果中找到最近 5 分钟的行。
TableQuery.combineFilters(
TableQuery.generateFilterCondition("PartitionKey", QueryComparisons.GreaterThanOrEqual, "20170602T1400"),
TableOperators.And,
TableQuery.generateFilterCondition("PartitionKey", QueryComparisons.LessThanOrEqual, "20170602T1420"));
根据你的描述和@FrancisYu-MSFT 的回复,我写了一个示例代码,重现了你当前的问题。
这是我的示例代码。
String connectionString = String.format("DefaultEndpointsProtocol=http;AccountName=%s;AccountKey=%s", ACCOUNT_NAME, ACCOUNT_KEY);
CloudStorageAccount account = CloudStorageAccount.parse(connectionString);
CloudAnalyticsClient client = account.createCloudAnalyticsClient();
CloudTable metrics = client.getMinuteMetricsTable(StorageService.BLOB);
System.out.println(metrics.getName());
String queryString = TableQuery.combineFilters(
TableQuery.generateFilterCondition("PartitionKey", QueryComparisons.GREATER_THAN_OR_EQUAL, "20170602T1400"),
Operators.AND,
TableQuery.generateFilterCondition("PartitionKey", QueryComparisons.LESS_THAN_OR_EQUAL, "20170602T1420"));
TableQuery<TableServiceEntity> query = TableQuery.from(TableServiceEntity.class).where(queryString);
for(TableServiceEntity entity : metrics.execute(query)) {
System.out.println(entity.getPartitionKey()+"\t"+entity.getRowKey());
}
然后我遇到了同样的问题 运行 我的代码,这是由指标 table $MetricsMinutePrimaryTransactionsBlob
不存在引起的,所以你需要启用相关的 Diagnostics
选项创建,如下图