首页 > 解决方案 > Web 应用程序上的分析

问题描述

我们有一个网络应用程序。该应用程序的 Web 的一部分是配置文件。个人资料有以下网址:

/配置文件/1 /配置文件/2 /配置文件/3

我们也有添加。Add 的 url 如下: /Add/1 /Add/2 /Add/3

我需要查看前 20 名查看次数最多的个人资料和前 20 名查看次数最多的添加以及他们有多少查看次数。还必须可以使用 c# 提取这两个列表。这可以通过日志分析来实现吗?您是否需要从应用程序洞察中提取自己的所有内容并进行自我分析,或者您将如何实现这一目标?


我做了一点 POC。我在 AI 中添加了以下内容。https : //gac/url/1有数千个 id。也许我们在 https://gac/url/1 上有 244 次浏览,在https://gac/url/2有 1128 次浏览等等。

在此处输入图像描述 我注意到 Id 没有添加到日志中。请参见下面的代码:

 public void WritePageView(string name, string id, Uri url)
 {
     var pageView = new PageViewTelemetry
     {
          Name = name,
          Id = id,
          Url = url
     };

     pageView.Properties.Add("Id", "1");    
     telemetry.TrackPageView(pageView);
}

我需要的是访问量最大的https://gac/url的前 20 名(前 x 名) 。就像是:

https://gac/url1 : 3434 https://gac/url1 : 2432 https://gac/url1 : 1298 https://gac/url1 : 8211 .. 如果显示在图表中将非常棒。

所以这将类似于按名称和 ID 分组。但是由于 ID 仅在 url 中存在,我该如何提取呢?

标签: azure-application-insightsazure-log-analytics

解决方案


使用分析查询很容易获得应用程序洞察力。

导航到您的 azure 门户 -> 应用程序洞察 -> 日志(分析),相关信息应位于pageViews表中。编写查询时,您可以通过 UI 设置自定义“时间范围”或使用 where 子句。

你可以通过写“pageViews”来获取所有的pageViews信息,截图如下:

在此处输入图像描述

您可以使用Summarize 运算符count 运算符来获取每个页面的总查看次数。示例查询代码如下:

pageViews 
| summarize totalCount = count(url) by url
| order by totalCount desc

结果如下:

在此处输入图像描述

如果您只想获得前 2 个最多浏览的页面,请使用以下代码:

pageViews 
| summarize totalCount = count(url) by url
| order by totalCount desc
| top 2 by totalCount 

推荐阅读