Помечать последовательные ненулевые строки в отдельные разделы, на этот раз используя kusto - язык запросов Azure AppInsights - PullRequest
0 голосов
/ 24 января 2020

Мы используем Azure DevOps Server 2019 (предварительно). Таким образом, аналитика сборки практически не существует. Итак, мы настроили процесс загрузки готовых метрик сборки в Azure AppInsights, что позволяет нам писать все виды интересных панелей мониторинга.

Мой менеджер хочет знать три вещи:

  1. Как часто происходит сбой сборки?
  2. Сколько времени занимает сборка?
  3. Как долго сборка не работает?

Первые два довольно просто, но последний довольно сложный.

Сначала я перевел проблему на Sql и решил ее с помощью Пометить последовательные ненулевые строки на отдельные разделы?

Получив ответ на Sql, я смог перевести его на Kql (язык запросов Kusto, используемый AppInsights) следующим образом:

customEvents
| where customDimensions.kind == "build"
    and name == 'vNext_master_ci_r_git'
| project
    startTime = todatetime(customDimensions.startTime),
    outcome = tostring(customDimensions.buildResult)
| where outcome in ('succeeded', 'failed')
| order by startTime asc
| extend 
    nextStartTime = next(startTime, 1)
| extend 
    duration = case(outcome == 'failed', nextStartTime - startTime, totimespan(0)),
    rn = row_number(),
    rn2 = row_number(1, prev(outcome) != outcome)
| extend 
    grp = rn - rn2
| where outcome == 'failed'
| summarize startTime = min(startTime), duration = toreal(sum(duration) / time(1h)) by grp
| order by startTime asc
| project startTime, duration

Как видите, это перевод 1-1 соответствующего Sql. Но мне интересно, есть ли более краткий способ достижения этой цели в Ккл. Мое обоснование заключается в том, что Kql был разработан для поддержки анализа данных, и, возможно, он может предоставить более элегантное решение.

...