嗨的人!我真的很兴奋,终于能够谈论我们在DNN软件公司过去几个月一直在工作的一个领域。如果你还没有听说过,几年前我们开始将Evoq产品(以前称为DotNetNuke Professional)作为一种服务提供。这是一个基于云的软件即服务解决方案,名为Evoq OnDemand,运行在微软Azure上。我们一直在不断改进我们的解决方案,以适应Azure平台的新变化和改进,例如Azure应用程序服务、SQL数据库v12、Azure活动目录或Redis缓存等方面的改进。我们利用新工具使客户受益。
为了分享一些数据,我们已经交付了超过50,000个网站,包括Evoq试验和生产环境,备份了大约400tb的网站信息。虽然日志数据大小并不大,但从操作角度来看,管理每月160GB的站点日志并不容易,特别是当我们需要对客户属性上的性能问题进行故障排除并试图找到根本原因时。
当事件发生时,我们的DevOps团队需要在几分钟内找出原因,而在云连接的世界中,问题来源的增长速度与新服务产品的出现速度相同:是底层基础设施的问题吗?是最近的DNN更新导致的吗?是3
理查德·道金斯方模块吗?是3
理查德·道金斯派对连接服务?我们需要将遥测和仪器添加到云基础设施的每个部分,不仅是客户属性,还包括后端自动供应系统。
我们一直在用NewRelic来满足我们的需求,成功地让我们深入挖掘问题并解决运营问题,同时密切关注微软应用洞察的发展。我们的监控需求不断增长,寻找聚合视图(例如,有多少网站正在经历我们在客户日志条目中发现的问题?有多少网站在使用这个3
理查德·道金斯派对模块和体验性能问题?)因此,我们继续尝试其他应用程序洞察工具,如NewRelic insights和Splunk,以实现更高级的场景。在去年第四季度,我们看到了微软在该领域改进当前应用程序洞察服务的演示。在第一个演示中,我们看到了几乎实时过滤的70tb数据、用于复杂闪电般快速查询的高级web工具、用于多个帐户聚合查询的桌面工具,以及从PowerBI仪表板消费查询的能力。这听起来像是我们要找的东西的基础。
准备应用程序洞察分析入职
正如我之前提到的,我们的云基础设施不仅服务于客户网站或试用版。几年前,我在
Cloudburst我们的云服务集的任务,如自动备份和恢复,Evoq产品更新,订单处理和帐户管理。这些最初的服务多年来持续增长,我们现在有新的服务用于页面浏览量计算(Evoq OnDemand在页面浏览量层可用),用于Azure应用程序服务环境的IFilter索引卸载,以及用于后台任务的其他服务。我们还为部署在Azure应用程序服务上的Evoq和DNN平台的夜间构建实现了持续集成。能够自动将Application Insights信息发送到Analytics商店是下一个需求。
要在Application Insights Analytics上获得所有可用数据,最简单的方法是为每个云服务和网站配备Application Insights,以便开始发送所有遥测数据。一旦进入Application Insights,所有信息都可以使用AQL(分析查询语言)从分析中查询。所以我们最终致力于两个领域:
1)
修改所有工作者角色(云服务)开始向Application Insights发送遥测数据。在Connect()期间;去年的活动
Azure诊断与应用程序洞察集成Azure SDK 2.8发布。这很容易实现,只需遵循博客文章中提到的步骤,并部署每个worker的新版本。在短短几分钟内,我们就开始在Azure门户上提供所有的遥测技术。感谢团队让这一切变得如此简单;
2)
创建一个新的Application Insights监视提供程序在我们控制下的每个网站上自动化应用程序洞察帐户配置和部署。当我们最初设计后端监控服务时,我们从Pingdom和NewRelic实现开始实现了“监控提供者”方法。监控提供商只是我们平台中的一个集成点,它支持“安装、卸载、暂停和恢复监控”等方法,例如,帮助我们在维护或更新操作期间暂停网站上的所有警报。我们内部的Application Insights监控提供商实现了这个接口,自动提供帐户和警报,以及使用资源管理器API推送web部署包。我们也可以手动运行这些操作,通过我们的后端系统,通过web UI或通过使用我们的自定义PowerShell cmdlet来配置和配置数百个应用程序洞察帐户,只需几行代码:
然后,我们可以访问Azure门户,检查每个网站或服务的情况,并找到性能问题及其原因:如果问题在服务器端,则是依赖关系,或者只是客户应用到性能不佳的网站上的新皮肤,如我们在下面的图表中看到的,服务器响应一致,但页面加载时间倾斜向上,表明客户端存在问题。
对于每一个单独的web应用程序,我们不仅可以通过页面视图、请求、跟踪或异常进行搜索。由于我们已经实现了DNN的自定义日志记录器,我们能够通过DNN Eventlog记录或存储在/portals/_default/logs下的典型log4net数据进行搜索。我们终于有了一个可以查询所有参数的地方。
使用应用程序洞察分析的高级搜索
一旦我们将所有遥测数据发送到Application Insights,现在我们就可以开始使用新的分析功能运行高级查询了。
应用分析一个强大的查询引擎适合你吗
应用程序的见解遥测技术使用一种名为AQL的查询语言。这种语言不像SQL那样嵌套语句,而是允许将数据从一个基本操作输送到下一个基本操作。我们可以过滤所有原始遥测数据从每个网站发送的任何字段,包括DNN事件日志记录,执行统计聚合和
立即显示原始文本结果或强大的可视化。
作为自动Application Insights配置的一部分,我们为被监控的每个资源创建警报。当我们收到警报时,我们开始使用该工具开始深入研究问题,通过使用AQL找到模式。UI允许我们保存预定义的查询,并加载它们以供以后使用。
机器学习在后台运行的好处:主动检测
有一件事是令人惊讶的,并且每天都在变得更好,那就是应用程序洞察主动检测。这个功能通过“近实时主动诊断”来通知你应用程序中潜在的性能问题。您得到的是关于失败请求率异常上升的警报,以及
不需要配置!它就是有用。
例如,检查我们今天收到的警报。我对该服务提供的信息感到震惊,而且我们很快就找到了问题的根源。
在这个案例中,是一个机器人请求格式错误的url,导致请求失败率异常上升。多亏了在主动分析后15分钟到达的警报上提供的堆栈跟踪,我们检测到了问题,发现了问题,创建了一个补丁,问题消失了。
你喜欢吗?我也是!
DNN平台的应用洞察模块
如果你也有一个基于DNN的网站,并且想要从我发布的应用洞察和分析开始
GitHub上一个开源模块,允许开始发送所有你的网站遥测应用洞察:页面浏览量,web请求,跟踪信息(log4net日志文件内容),异常(包括客户端浏览器异常)和DNN事件日志记录。
开始
该模块是一个DNN平台扩展,集成Visual Studio应用程序洞察来监控您的DNN安装。要在安装中设置模块,请遵循以下步骤:
1.根据指南提供一个新的应用程序洞察服务
https://azure.microsoft.com/en-us/documentation/articles/app-insights-overview/确保在“应用程序类型”参数中选择“ASP.net web应用程序”
2.一旦提供,复制资源Essentials属性上可用的“Instrumentation Key”
3.现在从释放文件夹
https://github.com/davidjrh/dnn.appinsights/tree/master/Releases下载以“…Install.zip”结尾的最新模块包(source .zip包包含生产网站不需要的源代码)。
4.安装扩展包在您的DNN实例从“主机>扩展”菜单像任何其他模块
5.安装完成后,“Host (Advanced menu)>Application Insights”下的新菜单将允许您粘贴在步骤2中获得的仪表键。应用更改后,几分钟后您将开始在Application Insights上接收数据。
您好,编码快乐!