Почему так медленно запрашивать таблицы метрик Azure и как я могу ускорить его? - PullRequest
0 голосов
/ 24 октября 2019

https://docs.microsoft.com/en-us/azure/virtual-machines/extensions/diagnostics-template#wadmetrics-tables-in-storage

Я пытаюсь извлечь данные из одной из этих таблиц WADMETRIC, но даже если я настрою запрос на простой запрос данных за последнюю минуту, его запуск займет несколько часов!

Это происходит независимо от того, запрашиваю ли я его с помощью Java SDK или из журнала на портале.

Что я делаю не так? Стоит ли ждать так долго?

Любая помощь будет принята с благодарностью.

Вот мой код Java.

        String connectionString = String.format("DefaultEndpointsProtocol=https;AccountName=%s;AccountKey=%s", "imgoriginalblobs", "lAHAdJcjUcak48lvNwOoC2UztAcqD+hLX/YMdXq/qppQOgeuzQXTDMtYL3jx/oT+a0hxURqlF2Nv9Fza686s8g==");
        CloudStorageAccount account = CloudStorageAccount.parse(connectionString);
        CloudTableClient cloudTableClient = account.createCloudTableClient();
        Calendar myCal = Calendar.getInstance();
        Date now = myCal.getTime();
        myCal.set(Calendar.MINUTE, Calendar.getInstance().get(Calendar.HOUR) - 1);
        Date theDate = myCal.getTime();
        String queryString = TableQuery.combineFilters(
                TableQuery.combineFilters(TableQuery.generateFilterCondition("Timestamp", TableQuery.QueryComparisons.GREATER_THAN_OR_EQUAL, theDate),
                        TableQuery.Operators.AND,
                        TableQuery.generateFilterCondition("CounterName", TableQuery.QueryComparisons.EQUAL, "/builtin/filesystem/freespace")),
                TableQuery.Operators.AND,
                TableQuery.generateFilterCondition("Timestamp", TableQuery.QueryComparisons.LESS_THAN_OR_EQUAL, now));
        TableQuery<TableMetric> query = TableQuery.from(TableMetric.class).where(queryString);

        CloudTable table = cloudTableClient.getTableReference("WADMetricsPT1MP10DV2S20191017");
        System.out.println(table.exists());
        System.out.println(table.getName());

        for (TableMetric entity : table.execute(query)) {
            extractPartitionKey(entity.getPartitionKey(), entity.getLast(), entity.getCounterName());

        }

И скриншот моей попыткичтобы запросить данные за последние 5 минут, это зависало более часа.

Trying to query WADMETRICS table

Ответы [ 2 ]

1 голос
/ 24 октября 2019

Я думаю, что проблема в том, что вы не указываете ключ раздела. Таким образом, он выполняет запрос по всем разделам, которые, вероятно, хранятся в нескольких регионах, поэтому для получения желаемого результата требуется много времени.

0 голосов
/ 24 октября 2019

В целом, существует множество ограничений на хранение и получение метрик в хранилище таблиц Azure. Посмотрите на пользовательские показатели в Azure Monitor и убедитесь, что они соответствуют вашему сценарию и требованиям.

https://docs.microsoft.com/en-us/azure/azure-monitor/platform/metrics-custom-overview

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...