Мы пытаемся извлечь просмотры страниц, количество загрузок файлов, список пользователей из журналов w3c IIS. мы хотим определить, что такое просмотр страницы, то есть любой пользователь, оставшийся на одной странице более 10 секунд, будет просмотром одной страницы. все, что меньше, не является просмотром страницы. В журналах w3c, похоже, недостаточно данных для извлечения этого. это возможно с тем, что уже доступно?
Это данные, доступные для извлечения вышеуказанной информации,
Оператор данных
datatable (TimeGenerated: datetime, csUriStem: строка, scStatus: строка, csUserName: строка, sSiteName: строка) [datetime(2019-04-12T11:55:13Z),"/Account/","302","-","WebsiteName", дата/время(2019-04-12T11:55:16Z),"/","302","-","WebsiteName", datetime(2019-04-12T11:55:17Z),"/Account/","200","[email protected]","WebsiteName", datetime(2019-04-12T11:55:17Z),"/Content/site.css","200","-","WebsiteName", datetime(2019-04-12T11:55:17Z),"/Scripts/modernizr-2.8.3.js","200","-","WebsiteName", datetime(2019-04-12T11:55:17Z),"/Scripts/bootstrap.js","200","-","WebsiteName", datetime(2019-04-12T11:55:17Z),"/Content/bootstrap.css","200","-","WebsiteName", datetime(2019-04-12T11:55:18Z),"/Scripts/jquery-3.3.1.js","200","-","WebsiteName", дата/время(2019-04-12T11:55:23Z),"/","302","-","WebsiteName", datetime(2019-04-12T11:56:39Z),"/","200","[email protected]","имясайта", datetime(2019-04-12T11:57:13Z),"/Home/About","200","[email protected]","WebsiteName", datetime(2019-04-12T11:58:16Z),"/Home/Contact","200","[email protected]","WebsiteName", datetime(2019-04-12T11:59:03Z),"/","200","[email protected]","WebsiteName"]
@AlexanderSloutsky Добавлена ссылка на примеры данных, извлеченных из журналов в посте. Это обычный w3CIISLogs, который доступен в рабочей области Log Analytics. Мне нужно использовать запрос KQL для извлечения необходимых данных. Спасибо
Еще не очень понятно, какие поля картинки релевантны, или какие еще поля у вас есть. Не могли бы вы использовать оператор данных для описания ввода и привести пример вывода? Например, вот каким может быть смоделированный ввод: datetime(2019-04-02T22:47:02), "/Home/Contact", "User1", ]
Привет @AlexanderSloutsky, добавил оператор данных в сводку вопросов. Из которого мне нужно исключить значение 200 и исключить 302 из scStatus, исключить ненужные файлы, к которым обращались, рассчитать разницу во времени между предыдущими запросами, извлечь сводные данные о просмотрах страниц и действиях пользователей. Спасибо.
Я не уверен, что правильно понял все ваши требования, но вот кое-что, с чего можно начать и дать вам начальное направление.
datatable (TimeGenerated:datetime, csUriStem:string, scStatus:string, csUserName:string, sSiteName :string)
[datetime(2019-04-12T11:55:13Z),"/Account/","302","-","WebsiteName",
datetime(2019-04-12T11:55:16Z),"/","302","-","WebsiteName",
datetime(2019-04-12T11:55:17Z),"/Account/","200","[email protected]","WebsiteName",
datetime(2019-04-12T11:55:17Z),"/Content/site.css","200","-","WebsiteName",
datetime(2019-04-12T11:55:17Z),"/Scripts/modernizr-2.8.3.js","200","-","WebsiteName",
datetime(2019-04-12T11:55:17Z),"/Scripts/bootstrap.js","200","-","WebsiteName",
datetime(2019-04-12T11:55:17Z),"/Content/bootstrap.css","200","-","WebsiteName",
datetime(2019-04-12T11:55:18Z),"/Scripts/jquery-3.3.1.js","200","-","WebsiteName",
datetime(2019-04-12T11:55:23Z),"/","302","-","WebsiteName",
datetime(2019-04-12T11:56:39Z),"/","200","[email protected]","WebsiteName",
datetime(2019-04-12T11:57:13Z),"/Home/About","200","[email protected]","WebsiteName",
datetime(2019-04-12T11:58:16Z),"/Home/Contact","200","[email protected]","WebsiteName",
datetime(2019-04-12T11:59:03Z),"/","200","[email protected]","WebsiteName"]
| where scStatus !in ('302') // exclude status 302
| where csUriStem !startswith '/Scripts' and csUriStem !endswith ".css" // exclude pages coming from '/Script' and .css files
| order by TimeGenerated asc
| summarize t=make_list(TimeGenerated) by csUriStem, csUserName // create time-series of visit events
| mv-apply t to typeof(datetime) on // run subquery on each of the series
(
project isVisit = (t - prev(t)) > 1min // compare with previous timestamp, and see if >1min passed
| summarize Visits=sum(isVisit)
)
| project csUriStem, csUserName, Visits
Вот ссылки на make_list() (функция агрегации), предыдущий() (функция окна), оператор суммировать и оператор mv-применить
Не могли бы вы поделиться образцом данных о том, что доступно? Ради вопроса вы можете использовать оператор datatable() (чтобы «изобретать» данные как часть запроса).