如何使用Java或Rest API获取Cloud Service(托管服务)诊断数据?
我们可以从Azure Portal for Roles获取DiagnosticsConnectionString,并使用它来查询WADPerformanceCounter表(存储API)。
执行时获取以下异常:
query:java.util.NoSuchElementException:枚举结果时发生错误,请检查原始异常以获取详细信息。在test.microsoft.azure.storage.core.LazySegmentedIterator.hasNe xt(LazySegmentedIter ator.java:113)的TestStorage.main(TestStorage.java:225)引起:com.microsoft.azure.storage.table.TableServiceException :错误的请求
答案 0 :(得分:1)
@Prit,你的问题中没有任何代码,以至于我无法弄清楚由什么造成的问题。
所以我在这里发布我的步骤和代码作为帮助的参考。
将Azure服务的一个角色的DIAGNOSTICS CONNECTION STRINGS
复制到Azure管理门户上Cloud Service的选项卡CONFIGURE
,连接字符串的格式类似于DefaultEndpointsProtocol=https;AccountName=<storage-account-name>;AccountKey=<storage-key>
。< / p>
使用GUI工具Micorsoft Azure Storage Explorer
查找&amp;查看表WADPerformanceCounter
。
Java代码,用于检索所有诊断数据,如下所示。
import com.microsoft.azure.storage.CloudStorageAccount;
import com.microsoft.azure.storage.table.CloudTable;
import com.microsoft.azure.storage.table.CloudTableClient;
import com.microsoft.azure.storage.table.TableQuery;
import com.microsoft.azure.storage.table.TableServiceEntity;
public class WADPerformanceCounterReader {
public static final String storageConnectionString =
"DefaultEndpointsProtocol=https;"+
"AccountName=<storage-account-name>;"+
"AccountKey=<storage-key>";
public static void main(String[] args) {
try {
// Retrieve storage account from connection-string.
CloudStorageAccount storageAccount = CloudStorageAccount.parse(storageConnectionString);
// Create the table client.
CloudTableClient tableClient = storageAccount.createCloudTableClient();
CloudTable cloudTable = tableClient.getTableReference("WADPerformanceCountersTable");
TableQuery<TableServiceEntity> query = TableQuery.from(TableServiceEntity.class);
for (TableServiceEntity entity : cloudTable.execute(query)) {
System.out.println(entity.getPartitionKey()+"\t"+entity.getRowKey());
}
} catch (Exception e) {
// Output the stack trace.
e.printStackTrace();
}
}
}
希望它有所帮助。