Azure App Insights для определения 500 кодов ошибок Trend за неделю - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь создать диаграмму в Azure App Insights для всех 500 ОШИБК, которые мы получаем для каждого Cloud_RoleName с уникальным типом. То, что я хотел сделать, это показать трендовую неделю за неделей, а также месяц за месяцем, если мы получим новые ТИПЫ с 500 Ошибка по сравнению с данными предыдущей недели. В основном, неделя за неделей Анализ тенденций на 500 ошибок. Я пробовал следующий запрос: -

requests
| where resultCode =="500" and timestamp > ago(1d)
| join (exceptions) on operation_Id 
| summarize by type, cloud_RoleName 

Насколько я понимаю, будут возвращены только данные за 1 день, суммированные по типу ошибки 500. Я, к сожалению, не могу сформировать запрос, чтобы получить данные недели за неделю. Любая помощь по этому KQL?

<> после ответа Йони я обнаружил блог, в котором были сгенерированы диаграммы трендов для событий безопасности, поэтому я использовал запрос в блоге и создал его здесь ... но все еще не уверен, что получаю то, что хочу ... может some1 может изменить этот запрос ... так как все, что я хочу, это из таблицы исключений и REquest тренд новых 500 типов ошибок неделя за неделей на cloud_roleName https://microsoftonlineguide.blogspot.com/2018/05/detect-malicious-activity-using-azure.html?showComment=1561507971564#c5650649192825890878

let T=requests 
| where resultCode =="500" and timestamp > ago(30d) 
| join (exceptions) on operation_Id 
| summarize by type, cloud_RoleName, Date = startofday(timestamp);
T
| evaluate activity_counts_metrics(type,Date, startofday(ago(30d)), startofday(now()), 1d, type, cloud_RoleName)
| extend WeekDate = startofweek(Date)
| project WeekDate, Date, type, PotentialAnomalyCount = new_dcount, cloud_RoleName
| join kind= inner
(
T
| evaluate activity_engagement(type, Date, startofday(ago(30d)), startofday(now()),1d, 7d)
| extend WeekDate = startofweek(Date)
| project WeekDate, Date, Distribution1day = dcount_activities_inner, Distribution7days = dcount_activities_outer, Ratio = activity_ratio*100
)
on WeekDate, Date
| where PotentialAnomalyCount == 1 and Ratio < 100
| project WeekDate, Date, type, cloud_RoleName, PotentialAnomalyCount, Distribution1day, Distribution7days, Ratio
| render barchart kind=stacked

1 Ответ

1 голос
/ 26 июня 2019

немного сложно ответить, не имея представления о ваших данных и их структуре.

, который сказал, вот попытка ответить на основе словесного описания в вашем вопросе, используя встроенный плагин activity_counts_metrics ( ссылка на документ ):

datatable(day:datetime, result_code:int)
[
    datetime(2019-05-01), 500, 
    datetime(2019-05-10), 500, 
    datetime(2019-05-20), 500, 
    datetime(2019-06-01), 500, 
    datetime(2019-06-02), 500, 
    datetime(2019-06-03), 501, 
    datetime(2019-06-04), 500, 
    datetime(2019-06-05), 500, 
    datetime(2019-06-06), 500, 
    datetime(2019-06-07), 500, 
    datetime(2019-06-08), 500, 
    datetime(2019-06-09), 500, 
    datetime(2019-06-10), 500, 
    datetime(2019-06-11), 500, 
    datetime(2019-06-12), 500, 
    datetime(2019-06-13), 502, 
    datetime(2019-06-14), 500, 
]
| evaluate activity_counts_metrics(result_code, day, ago(60d), now(), 'week')
// try using 'month' too, instead of 'week'

это возвращает:

| day                         | count | dcount | new_dcount | aggregated_dcount |
|-----------------------------|-------|--------|------------|-------------------|
| 2019-04-28 00:00:00.0000000 | 1     | 1      | 1          | 1                 |
| 2019-05-05 00:00:00.0000000 | 1     | 1      | 1          | 1                 |
| 2019-05-19 00:00:00.0000000 | 1     | 1      | 1          | 1                 |
| 2019-05-26 00:00:00.0000000 | 1     | 1      | 1          | 1                 |
| 2019-06-02 00:00:00.0000000 | 7     | 2      | 2          | 2                 |
| 2019-06-09 00:00:00.0000000 | 6     | 2      | 2          | 2                 |

где:

TimelineColumn : время начала окна [неделя / месяц / и т. Д.].

count : Общее количество записей во временном окне.

dcount : Значения различных идентификаторов учитываются во временном окне.

new_dcount : отдельные значения идентификатора во временном окне и сравнение со всеми предыдущими временными окнами.

aggregated_dcount : общее количество агрегированных различных значений идентификатора от 1-го временного окна до текущего (включительно).

Если вы заинтересованы в том, чтобы увидеть реальные отдельные коды (за неделю / месяц), что-то в следующих строках может дать вам направление:

datatable(day:datetime, result_code:int)
[
    datetime(2019-05-01), 500, 
    datetime(2019-05-10), 500, 
    datetime(2019-05-20), 500, 
    datetime(2019-06-01), 500, 
    datetime(2019-06-02), 500, 
    datetime(2019-06-03), 501, 
    datetime(2019-06-04), 500, 
    datetime(2019-06-05), 500, 
    datetime(2019-06-06), 500, 
    datetime(2019-06-07), 500, 
    datetime(2019-06-08), 500, 
    datetime(2019-06-09), 500, 
    datetime(2019-06-10), 500, 
    datetime(2019-06-11), 500, 
    datetime(2019-06-12), 500, 
    datetime(2019-06-13), 502, 
    datetime(2019-06-14), 500, 
]
| summarize distinct_codes = make_set(result_code) by startofweek(day)
| extend distinct_codes_count = array_length(distinct_codes)

это возвращает:

| start_of_week               | distinct_codes | distinct_codes_count |
|-----------------------------|----------------|----------------------|
| 2019-04-28 00:00:00.0000000 | 500            | 1                    |
| 2019-05-05 00:00:00.0000000 | 500            | 1                    |
| 2019-05-19 00:00:00.0000000 | 500            | 1                    |
| 2019-05-26 00:00:00.0000000 | 500            | 1                    |
| 2019-06-02 00:00:00.0000000 | 500, 501       | 2                    |
| 2019-06-09 00:00:00.0000000 | 500, 502       | 2                    |
...