Что такое «период агрегации», используемый в столбце RowKey в таблице показателей Azure? - PullRequest
0 голосов
/ 23 октября 2019

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

RowKey: соответствует формату:. Расчет тиков по убыванию - это максимальное время тиков минус время начала периода агрегации . Например, если период выборки начался 10 ноября 2015 года и в 00:00 по Гринвичу, тогда расчет будет следующим: DateTime.MaxValue.Ticks - (новый DateTime (2015,11,10,0,0,0, DateTimeKind.Utc).Ticks). Для счетчика производительности доступной памяти байты ключ строки будет выглядеть следующим образом: 2519551871999999999 __: 005CMemory: 005CAvailable: 0020Bytes

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

1 Ответ

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

1. Период агрегации

Если включить диагностику для виртуальной машины, все данные метрик будут сохранены в таблице учетных записей хранения.

enter image description here

Период агрегации указан в имени таблицы. Например: WADMetricsPT1HP10DV2S20190927

PT1H / PT1M: значение MetricAggregation PT1M и PT1H означает агрегацию за минуту и ​​агрегацию за час

P10D: это означает, что оно содержит 10 днейданные

20190927: это начальный период агрегации.


2. Значение Rowkey

Как указано в официальной документации, оно имеет следующий формат: вычисление тиков по убыванию - это максимальное время тиков минус время начала периода агрегации.

Я возьмуодна запись в моей таблице в качестве образца:

RowKey -> :2518363979999999999__:005CProcessor:0020Information:0028:005FTotal:0029:005C:0025:0020User:0020Time
TIMESTAMP -> 2019-08-15T21:00:00.000Z

Во-первых, значение RowKey содержит несколько базовых латинских символов в Unicode .

:005C = \
:0020 = blank space

Итак, читаемый RowKey будет выглядеть так:

:2518363979999999999__:\Processor Information(-Total)\% User Time

Тогда давайте поговорим о числе - 2518363979999999999.

Как запись из таблицы«WADMetricsPT1HP10DV2S20190808», так:

В C # вы можете получить значение как:

DateTime.MaxValue.Ticks - (new DateTime(2019,08,08,0,0,0,DateTimeKind.Utc).Ticks)

В Java вы можете попробовать следующий код:

public class TickTest {

    public static Instant MAX = Instant.parse("9999-12-31T23:59:59.999Z");

    public static long toTicks(Instant start)
    {
        return toTicks(start, MAX);
    }

    public static long toTicks(Instant start, Instant end)
    {
        return Duration.between(start, end).toMillis() * 10000;
    }

    // Test
    public static void main(String[] args) {
        System.out.println(toTicks(Instant.parse("2019-08-08T00:00:00.000Z")));
    }
}
...