云服务的精打细算:在Windows Azure网站上启用New Relic 性能监控

[原文发表地址] Penny Pinching in the Cloud: Enabling New Relic Performance Monitoring on Windows Azure Websites

[原文发表时间] 2013-05-02

New Relic view of my Website

我最近一直在寻找让我的(现在已经有12个)云网站运行省钱的方式,从日志中获得启示是很有帮助的,但是我真的想获得更多详细的内容用以为我的应用程序做些什么,这样我也可以少做一些事情,记得扩展应用程序的秘密。

让你的应用程序能做的尽可能少,如果你什么都不做,你可以无限扩展。

我喜欢使用诸如Glimpse的工具来配置应用程序,检查数据库的调用,并探索程序究竟发生了什么事情。如果你喜欢应用分析工具,可能你对New Relic比较熟悉。它们是用于配置各种应用程序的灵活的系统,包括ASP.NET和Azure网站。

今天下午我在推特上通知了我的朋友们访问我的网站并帮我测试New Relic。推特上我的一个可爱的朋友及时地在我的网站上发现了DDOS’ed的问题,我更加尊重他们了。

image

实际上,你可以在我的网站上加载这个图表,也能看到当我扩大了Azure和交换共享时的预留空间。黄色的实例已被共享,蓝色的是我从保留的VM切换到的一个新的实例,在这一点上,我有足够的能力来面对难关,谢谢推特!

My site getting beaten on

我是怎么在我的网站上设置New Relic的?New Relic有一个办公室在波特兰(我住的地方),所以我今天去参观它。巧合的是(真实的故事),最近他们对Azure网站的支持已经从内测转向了开放,所以我决定躲起来看看是否我能加入New Relic的性能和应用监测的Hanselminutes.com播客网站。

在你的Azure账户中添加New Relic

登陆到Azure门户,点击 “新建”,然后进入商店,然后在商店内找到New Relic。

Adding New Relic to my Azure Portal

选择免费计划。他们会告诉你,你可以有一个永久的免费计划。它并不包括一些附属信息以及存储大量的历史数据,但在其他方面功能强大,此外,你会得到一个专业版本的14天的免费试用期(不需要信用卡)。

Screenshot (19)

创建一个Add-On,他们告诉我,New Relic的数据中心并不重要,你只需要获得一个许可证密钥。

注意:如果你已经有一个New Relic的许可证密钥以及现有的计费关系,那么你不需要使用商店或者添加一个add-on,你可以使用现有的许可证密钥。不过,我希望我的账单集中,这样,New Relic中的任何账单都会通过我的Azure 账户。这个随便你。

Adding New Relic

 

现在,从Azure的仪表板中,单击新的New Relic节点。你可以单击管理来自动移动(及自动单点登录)New Relic的系统仪表板。还需要注意的是连接信息的按钮,我们将在一分钟内需要用到它。

New Relic within the Azure Dashboard

 

如果你单击管理并把鼠标放在New Relic方向,你会得到一个欢迎信息,但是实际上在你的应用程序成功取得了它们在系统中的第一次调用之前,你不能看到任何有趣的东西。如果需要的话,你能迁出它们的.NET文档。它们是在不断变化,并非完全准确,但是它们会到达。

我们需要一些环境信息来安装我们的Azure网站,然后添加New Relic NuGet包。

停留在Azure门户网,进入你要检测的网站,单击配置和设置来配置值。它会通过New Relic产品的事件探查器查到CLR,你可以让它持续运行,也可以很容易的关闭它。

添加以下键值对:

  • COR_ENABLE_PROFILING - 1
  • COR_PROFILER -{71DA0A04-7777-4EC6-9643-7D28B46A8A41}
  • COR_PROFILER_PATH - C:\Home\site\wwwroot\newrelic\NewRelic.Profiler.dll
  • NEWRELIC_HOME - C:\Home\site\wwwroot\newrelic

在你的Azure门户网站的配置中,你的应用设置将看起来像这样:

Azure Website Config with New Relic

 

确保你不仅可以保存你的配置,而且(至少一次)可以做一个完整的New Relic重启来获得一个钩的机会。

在你的网站上添加新的Relic

使用如下命令安装NewRelicWindowsAzure Nuget包来使用NuGet Package Manager 控制台:

 Install-Package NewRelic.Azure.WebSites

在ASP.NET网站上运行的Hanselminutes.com网站是用WebMatrix写的,因此我使用NuGet的图形界面,在写这篇文章的时候,你可以分辨出这个包,因为只有11个下载!

New Relic NuGet Package

 

安装这个包,它会安装几个dll和你的newrilic.config文件。进入newrelic.config,从连接到配置文件中的信息中复制许可证密钥(还记得吗?这是Azure门户网站,如上图)。另外需要更新应用程序名字得到一些有用的价值,因为这是要在New Relic的仪表板上标识出你的网站。

我在这里发布我的网站到Azure,只通过NewRelic的代理dll,我的应用程序出版仅仅使用了NuGet(忘记了,还有一个随机jpg文件)。

Publishing the New Relic Agent to Azure

 

一旦我部署了这个网站,去访问它,我能看到Hanselminutes 在New Relic系统中出现了。

Hanselminutes within NewRelic

以下一些数据我现在就可以访问到了!我能看到我花时间更新过的图表,无论是在服务器端还是浏览器端。

Response Time

我能看见哪些页面加载很快,哪些页面很慢,也能明确知道为什么会这样。

Screenshot (45)

我能看到SQL查询,它们耗时多久,哪些连接被打开…

Screenshot (48)

深度时间表显示我的时间不仅仅是花费在我的应用程序上,也花在了.NET Framework和CLR本身。

Screenshot (50)

当然,我能看到我的代码中堆栈跟踪的问题。

Screenshot (53)

实际上这只是表面问题,但我火上浇油,在Azure的网站上只需要大约十分钟就获得免费的New Relic的层设置。我发现两个点,4个SQL调用可能被折叠成一个,我还发现一个错过了好几周的共同的ArgumentNullException(我程序的一部分)。

我对他们提供的产品印象非常深刻,我觉得专业版的层是一个小小的独立开发商,但是专业的开发很便宜。我想看到像现在5美元或者10美元的小型爱好者网站,不过现在呢, 免费将更好的为我服务。

现在我要去用仪器部署我的其他网站!