Временная диаграмма аналитики журнала Azure с несколькими измерениями

В новой платформе запросов аналитики журналов Azure вы можете запрашивать счетчики производительности и суммировать их, чтобы в итоге создать красивый график.

Следуя примеру документации нескольких измерений, он говорит

Несколько выражений в предложении by создает несколько строк, по одной для каждой комбинации значений.

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

Perf | where TimeGenerated > ago(1d) | where (CounterName == "Bytes Received/sec" or CounterName == "Bytes Sent/sec") | summarize avg(CounterValue) by bin(TimeGenerated, 1h), Computer, CounterName | extend Threshold = 20 | render timechart

Проблема заключается в том, что отправленные и полученные байты группируются в графе на уровне компьютера.

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

Отправленные и полученные байты смешиваются на графике

Не говоря уже о том, что в предыдущей версии это работало как положено.

1 ответ

Решение

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

Perf
| where (CounterName == "Bytes Received/sec" or CounterName == "Bytes Sent/sec") and InstanceName matches regex "^Microsoft Hyper-V Network Adapter.*$"
| summarize avg(CounterValue) by strcat(Computer, " ", CounterName), bin(TimeGenerated, 10s)
| render timechart

Другой вариант это

let RuntimeID = CosmosThroughput_CL 
| where MetricName_s == "ProvisionedThroughput" and TimeGenerated between (ago(2h) .. ago(1h))
| order by TimeGenerated desc  
| top 1 by TimeGenerated
| distinct RuntimeID_g;
CosmosThroughput_CL 
| where MetricName_s == "ProvisionedThroughput" and RuntimeID_g in (RuntimeID)
| project Resource = toupper(Resource), Value = Throughput_d, Container = Container_s, Database = Database_s, MetricName = "Provisioned"
| union 
    (
        AzureDiagnostics 
        | where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption"
        | where TimeGenerated between (ago(1d) .. ago(1d-1h))
        | summarize Value = sum(todouble(requestCharge_s)) by Resource, databaseName_s, collectionName_s
        | project Resource, Container = collectionName_s, Database = databaseName_s, Value, MetricName = "HourlyUsage"
    ) 
| union 
    ( 
        AzureDiagnostics 
        | where ResourceProvider == "MICROSOFT.DOCUMENTDB" and Category == "PartitionKeyRUConsumption"
        | where TimeGenerated between (ago(1d) .. ago(1d-1h))
        | summarize Value = sum(todouble(requestCharge_s)/3600) by Resource, databaseName_s, collectionName_s
        | project Resource, Container = collectionName_s, Database = databaseName_s, Value, MetricName = "RUs"
    )
| project Resource, Database, Container, Value, MetricName

Важная часть состоит в том, чтобы project те же названия столбцов. Valueсодержит разные значения из каждой таблицы. Второй union помогает мне проецировать другое значение из той же таблицы.

Другие вопросы по тегам