2017年9月20日,星期三

使用Azure App Insights跟踪应用程序/ Web部件/配置代码中的事件

在我最近的帖子中 Add Azure App Insights or Google 分析工具 to your SharePoint pages with an SPFx Application Customizer 我们专注于 页面跟踪/分析 App Insights的功能。但是我真正认为很棒的是能够跟踪代码正在发生的事情– whether it’仅表示您的Web部件已执行或您的应用已启动(因此您可以获得计数),或者您向用户显示了错误消息(带有详细信息),或者可能是为了了解用户在您的应用中导航的位置,或者他们选择了哪些选项。例如,我们在一个特定的应用程序中有一个选项卡式界面,’d非常希望知道实际上有多少用户导航到第二和第三选项卡(我敢打赌)。好吧,App Insights事件跟踪非常适合这些情况以及更多情况。我用此列表完成了最后一篇文章:

  • 服务器端应用程序(Office 365 / SharePoint加载项)
    • 有多少次应用启动?由谁/在哪里?
    • 应用内发生了什么(例如,正在单击哪些按钮/正在使用哪些功能)?
  • SPFx /图
    • 我们的Web部件每天获得多少次执行?
    • 我的Web部件在客户端执行需要多长时间?
    • 我的异步调用需要多长时间(例如,到图表)?它们对世界各地的用户有何不同?
  • 供应代码
    • 我们每天/每周/每月创建几个站点?
    • 我们在配置期间遇到了多少次问题?
    • 置备需要多长时间?
  • 一般
    • 我们向用户显示错误消息多少次?

你明白了。

快速入门概述(适用于JavaScript / SPFx)

请记住,要使用App Insights,您需要Azure订阅和要创建的App Insights资源–这将为您提供从Azure门户获取的检测密钥(请参阅 我最后的帖子 更多细节)。如果你’正在使用JavaScript / TypeScript / SPFx’可以安装的npm软件包:

npm i applicationinsights-js --save

从那里,您将需要几行帮助您入门。模块顶部的import语句:

import {AppInsights} from "applicationinsights-js";

..然后是引用您的App Insights密钥的初始引导程序代码:

let appInsightsKey: string = "[YOUR KEY FROM THE AZURE PORTAL HERE]";

AppInsights.downloadAndSetup({ instrumentationKey: appInsightsKey });

现在,您可以将代码中发生的各种情况记录到App Insights中。本质上,当我们想记录发生了什么事情时,我们在一行中插入一行-让我们看一些示例。

例子1–记录对Microsoft Graph的调用(使用SPFx代码)

下面的代码以SPFx代码获取当前用户的日历事件,该代码取自 SPFx React样本之一 。这是Microsoft Graph的相当典型的用法,此处使用的日志记录方法可用于许多类似的情况。它在React组件中的事实并不重要,但是要重点关注的是对App Insights的调用-请注意,’我还在做的是记录通话所花费的时间,以及发现我的Web部件被使用了很多次之后,我还开始了解到Graph通话对世界各地的用户花费了多长时间。为此,我只需在调用之前创建一个时间戳,然后再创建一个 在承诺中,一旦获取数据即执行和subtract the difference:

然后,在App Insights中,我可以看到Web部件每次执行的事件以及调用图形所花费的时间:

 SNAGHTML1f5d5c2c

 SNAGHTML203e67e

正如我在上一则App Insights帖子中所显示的那样,当您积累数据时,可以使用‘Analytics’App Insights中的“部分”以根据需要进行过滤和排序(例如,在“ timeTaken’ value):

 SNAGHTML1f6b05fa

例子2–在站点设置/模板代码中记录呼叫

以便’s是登录SPFx的示例。作为不同的口味,让’说您正在基于模板创建一些SharePoint网站–也许作为自助式网站创建工具的一部分。您可能对以下内容感兴趣:

  • 正在创建多少个站点?有什么细节?  
  • Office 365需要多长时间创建基本网站集?
  • 您的模板要花多长时间?

在这种情况下,您’我可能会在C#代码中使用PnP Core库– so you’将需要来自以下位置的App Insights nuget包: //www.nuget.org/packages/Microsoft.ApplicationInsights/

要开始使用C#代码,您需要’需要一些引导代码:

//  在  top of class..
using Microsoft.ApplicationInsights;

// to initialize..
TelemetryClient telemetry = new TelemetryClient(); 
telemetry.InstrumentationKey = APP_INSIGHTS_KEY;

作为第一种情况,让’s说您要记录创建网站集的事实以及该步骤花费了多长时间。如果你’重新使用PnP设置代码,它可能类似于以下内容– the key things are:

  • 简单使用.NET秒表时钟进行计时
  • 的制作‘metrics’ and ‘properties’字典将详细信息传递给App Insights
  • 使用TrackEvent()方法实际记录数据

如果使用PnP设置代码,则可能会得到以下结果: 

This would then show up in App Insights with details of the SharePoint URL, and the time taken for site collection creation (shown here in the 分析工具 tool):

 SNAGHTML16524535

我们也可以将其扩展到PnP模板。以类似的方式,我将在PnP'ApplyProvisioningTemplate'调用周围添加日志记录语句,并且可能还会记录任何错误。

代码示例:

如预期的那样,然后您可以获取所应用模板的详细信息以及所记录的任何详细信息(本例中为站点URL,模板ID和处理时间):

 SNAGHTML1f82d233

概要

App Insights非常适合将其集成到各种Office 365和SharePoint开发人员中。通过简单地在代码中添加几条语句,您可以稍后对其进行报告,并获得比所可能具有的更好的可见性。无论’Web部件的执行情况,发生的错误或用户沿着应用程序中的特定路径浏览的频率,’这是轻松构建此登录的好方法。就实用性而言,您当然需要Azure订阅,并且如果您每月(在撰写本文时)传递的数据量超过1GB,则App Insights是收费的。但是,你不’不需要构建任何类型的前端或查询工具,您就可以获取图表/图表,每周摘要电子邮件,并且重要的是, 警报 如果不满足您定义的任何条件。此外,还有很多方法可以与数据集成(包括BLOB下载以使数据保留更长时间)。综合考虑,这些功能都很棒。

我认为Office 365和SharePoint开发人员肯定没有充分利用App Insights,但是有很多可能性。一世’我期待将其纳入我们的更多解决方案中!

2条评论:

埃斯特万 说过...

克里斯你好

有什么特殊的原因为什么您要使用trackevent而不是trackexception?

谢谢

克里斯·奥 'Brien 说过...

@estebanv,

不,不是真的-catch块中的TrackException将会是一个不错的改进,谢谢!

干杯,

COB。