在评价网站的诸多指标中,可用性肯定是最重要的。一个网站首先要可用才能对其他方面进行评价。网站不可用不能单靠自己人发现或者等用户投诉,需要配备主动手段进行监控。那么我们今天要和大家聊的就是Azure Monitor下面两大服务之一的Application Insights。使用Application Insights我们可以在多个区域,每时每刻都对网站发起访问,当可用性不良时立马告警提醒相关人员进行排查。
Application Insights是Azure Monitor中两大服务之一,他可以对运行在私有云、混合云以及任何公有云中托管的各种平台的应用程序(.Net/Nodejs/Java/Python等)进行近乎实时的监控。它会自动检测应用的异常并通过其自身强大的分析工具来帮助诊断问题,从而提升应用程序的性能和可用性。
说到这可能有的朋友就会问:Application Insights可以给我们提供那些类型的监控呢?其实Application Insights提供的监控类型如下:
- 请求率、响应时间和失败率 :了解最受欢迎的页面、时段以及用户的位置。 查看哪些页面效果最好。 当有较多请求时,如果响应时间长且失败率高,则可能存在资源问题。
- 依赖项速率、响应时间和失败率 :了解外部服务是否正拖慢速度。
- 异常:分析聚合的统计信息,或选择特定实例并钻取堆栈跟踪和相关请求。 报告服务器和浏览器异常。
- 页面查看次数和负载性能:由用户的浏览器报告。
- AJAX 调用(从网页):速率、响应时间和失败率。
- 用户和会话计数。
- Windows 或 Linux 服务器计算机中的性能计数器,例如 CPU、内存和网络使用情况。
- Docker 或 Azure 中的主机诊断。
- 应用中的诊断跟踪日志:可以将跟踪事件与请求相关联。
- 在客户端或服务器代码中自行编写的自定义事件和指标,用于跟踪业务事件。
了解了监控类型以后,我们来看一下Aplication Insight是如何对应用程序进行监控的:
若要使用Application Insights监控应用程序,我们需要现在Azure中创建Application Insights资源,然后在应用程序中安装一个小的检测包。检测包不仅可以检测 Web 服务应用程序,还可以检测所有后台组件和Web 页面中的 JavaScript以及运行应用程序的主机性能。并将数据发送给与之相关联的application insights资源并继承到azure monitor中
除此之外Application Insights还可以对定期向 Web 服务发送综合请求的 Web 测试进行设置。
说了这么多,相信各位对Application Insights也都有了一定的了解,那么下面我们就来看一下如何使用Application Insights监控网站的可用性。
创建Application Insights资源
点击“新建资源”--“IT&管理工具”--“Application Insights”:
输入“资源组”、“名称”以及“区域”以后点击“review and create”:
确认无误以后点击“创建”:
创建完成,如下图所示:
设置ULR监控(网站可用性监控)
在我们刚刚创建的Application Insights中,找到“可用性”选项卡,然后点击“添加测试”:
接下来我们需要进行如下设置:
- 测试名称-这个测试名称我们在后续查询见识数据的时候也会用到。
- 测试类型-分为URL测试和多步骤测试。在此需要注意URL测试是完全免费的。多步骤测试会产生费用。
- 测试URL-我们需要监视的网站的URL
- 测试频率-在这里我选择5分钟
- 测试地点-因为我的网站部署在东南亚,但是用户分布在多个区域,所以我选择了五个测试位置。当然在实际生产环境中我们可以根据实际情况进行配置。
- 测试成功标准-我们可以设置测试的超时时间以及对于的状态码信息
- 警报-在此我们可以设置在检测到网站不可用时产生警报信息
创建完成后点击“context menu”--“Edit Alert”:
在规则管理页面设置对于的警报规则,然后点击保存:
稍等几分钟后,我们可以在“概述”页面的“Availability”小部件下看到对应的数据:
单击小部件可打开更详细的监控仪表盘。选择详细信息可为我们提供更多信息,例如测试持续时间,可用百分比和执行的测试次数。我们也可以在右下方编辑或暂停测试。
在这里我们可以看到我又几个异常值,将鼠标悬停在对应的异常值处可以看到测试的持续时间和位置:
点击进去以后可以看到详细的监控信息:
日志
因为Application Insights和Log Analytics使用相同的查询语言,所以我们可以在“概述”页面点击“Log”:
因为“URL test”存储在“AvailabilityResults”表下,所以我们可以使用如下命令进行对应查询:
availabilityResults
| project-away performanceBucket, operation_Name
我们可以在名称列看到名称,如果我们有多个网站可用性的测试则可以进行相应的筛选:
使用这些监控数据,我们可以生成不同的可视化图标或者监控警报。例如下面这个散点图,是按照位置划分的持续时间的平均值
这就是我们可以使用Application Insights监视网站可用性的方法。