ApplicationInsights入门到精通系列(一)

在11月9号的上海.Net Conf开发者峰会上,我做了一个对Application Insights的Persentation,本来想着快速将其转化为一篇博客无赖最近忙成??。

ApplicationInsights入门到精通系列(一)


由于Application Insights依赖于Azure,可能对于大多数人没有Azure订阅,为了便于大家了解Application Insights,我这里提供一个简单的demo
账号
密码 Qq123654.. (最后面有2个英文句号,被那该死密码规则搞死了)
http://portal.azure.com
登录,之后可以看到一个叫bookStore的Application Insights的资源,可以体验下Application Insights
该Application Insights绑定了网站 http://appinsightsdemotest.azurewebsites.net/
该网站基于abp.vnext里的一个bookStore的Sample构建的一个简单示例(本来想用eShop,无耐那货太多站点我私人的订阅hold不住那个费用)
上述资源由本人私人的Azure订阅提供(是需要扣费的)
不提供稳定性保证,不承诺SLA,任何情况下都可能发生不可用的情况,不接受投诉
由于使用的是丐中丐配置,网站的速度稍慢请谅解
该Demo网站需要注册个账号,对于懒癌患者可以使用账号123,密码 !QAZ2wsx 来进行使用


Application Insights在以下简称AI,所以后面看到AI时候不要以为是人工智能,这是Application Insights的缩写。

既然写博客了,就可以不用在意Persentation时候那样时间限制,可以为所欲为的写多点了。


这个作为开篇章节先简单说几个最基础的东西:
①AI是什么
②AI是如何工作的
③AI使用入门

①AI是什么

AI是微软基于Azure平台所提供的一个应用程序性能管理 (APM) 服务, 使用它可以监视实时 Web 应用程序。 它会自动检测性能异常。 其中包含强大的分析工具来帮助诊断问题,了解用户在应用中实际执行了哪些操作。
虽然它是微软家的东西但是它绝不是只可用于微软家的产品,对js/java/python等之类非微软家的产品它也提供支持。同时github上也有很多其他开源的sdk可以使用。
github上AI的topic可以了解下 https://github.com/topics/application-insights

②AI是如何工作的

AI是依赖于在程序里集成SDK的形式由SDK发送数据来进行数据收集。

下图是微软官方文档里的工作方式说明
ApplicationInsights入门到精通系列(一)

右下角带AI字样就是可以集成SDK的(都是“你的",你肯定能集成)然后由它们发送数据到Azure上的AI,之后他在数据用于各种用途。
有一些地方不能进行整合的比如外部服务或者SQL之类的在AI里会体现为依赖项的形式。

另外默认情况下AI的数据是发给国际版的Azure上的AI,如果是国内版的AI记得要修改其终结点地址,不然会发到国际版去(就相当于没收集到数据)
可以参考 https://docs.azure.cn/zh-cn/azure-monitor/app/custom-endpoints
当然你可以将地址改为你自己搭建的一个logstash 上然后自个收集AI的SDK发送的数据来做自己的APM,就像我们曾经干过的那样...

③AI使用入门

用最开始上文提到的账号登录之后,点击”所有资源“
ApplicationInsights入门到精通系列(一)
找到一个叫bookStore的资源点击进入
ApplicationInsights入门到精通系列(一)

下面我会简单说下左侧侧边栏框出来的4个内容

应用程序映射
有时候,你会不会想知道,你的站点调用了哪几个别人家的站点,调用了几个数据库,当前性能如何,错误率怎样。
应用程序映射就是为了解决你这个问题而生的。

ApplicationInsights入门到精通系列(一)

在bookStore这个demo里它只调用了一个数据库,看起来好像没啥特别的,来看看我司的调用拓扑吧(测试环境的)

ApplicationInsights入门到精通系列(一)

一般公司的内部调用可能会更接近我上面图的情况,再配合一些筛选,就可以从这个图里整理出你所想知道的某站点调用关系拓扑,以及性能和错误率等数据,
在整理站点间关系的时候这个还是挺有用的。

实时指标流
正常来说从程序触发了某个行为开始,此行为的数据要进入到AI里且能在图表上展示出这个数据,一般要延迟个三五分钟左右。
因为AI首先它是有一个独立线程它会收集数据,积攒起来,到达某个阈值或者某个间隔时间的时候它才会将数据一次性发送给AI。
不然每请求一次接口就将数据直接上报给AI这都要流量风暴了,因为上述机制首先数据发送的时候就会有延迟。
另外AI收集到数据后它也要做数据的处理,这也会产生一定的延迟。

但是有时候你新上线一个东西,你很急,你就想立马看到结果是怎样(比如线上改bug什么的??)
此时你可以找到实时指标流,点进去,立马看到结果。
ApplicationInsights入门到精通系列(一)
(我站点里点击下实时指标流里立马就能体现出来)

一般实时指标流延迟不会超过1秒,你操作之后立马会在AI的实时指标流面板里体现。
但是请注意:实时指标流里的任何数据都不会存储到AI里,所以它是属于转瞬即逝的数据,要看请抓紧。
同时此功能是不收费的,正统AI的收费就是收存储数据的¥,而因为实时指标流不存数据所以是免费的。

异常和性能
异常和性能这两个页面感觉主要大家多点点,没啥太多好说的。
如果点到爆炸了可以在右上方发个哭脸投诉微软??

ApplicationInsights入门到精通系列(一)

ApplicationInsights入门到精通系列(一)

另外无论是异常还是性能页面在最右下方会有要给“深入钻取",里面点击”示例“之后可以看到你每个请求的信息

ApplicationInsights入门到精通系列(一)

点击之后会进入它的一个端到端事务的视图,通俗的说就是该请求下的调用链的情况

ApplicationInsights入门到精通系列(一)

此页面你可以看到你请求哪里来的然后经历了什么步骤,然后分析出瓶颈再做优化。
如果你多个站点都是集成了AI,他会将其他站点的情况只要和这个请求有关联的一并反映到该视图下。

本篇入门级的就大概先说那么多。
后续有空的话再写一篇如何使用AI的语句查询(我觉得这是AI最强的地方之一的功能,也是我个人平时用的最多的功能)。
有兴趣的可以点击”日志(分析)“自己先进去玩玩。

相关推荐