使用New Relic与Sitecore

4

我正在使用New Relic测试Sitecore CMS。所有的New Relic网络事务都被发送到items layout文件中,因此我无法在New Relic中深入了解项目级别的详细信息。

我正在尝试使用New Relic API调用SetTransactionName并将其设置为items URL,但似乎无法使其正常工作。我已经创建了一个httprequestbegin管道处理器,并将其放置在最后,就在以下内容之后:

<processor type="Sitecore.Pipelines.HttpRequest.ExecuteRequest, Sitecore.Kernel"/>

我已经安装了New Relic API程序集,它也在我的bin文件夹中。以下是我试图运行的代码行。

NewRelic.Api.Agent.NewRelic.SetTransactionName("Custom", Sitecore.Context.RawUrl);

有什么想法我可能做错了吗?所有的网络交易仍然显示为项目布局文件。

3个回答

1

我正在httpRequestProcessed管道中设置事务名称,这很有效。一开始我使用的是httpRequestBegin,但发现它并不总是起作用。同时请注意,请求必须执行时间超过500毫秒,NewRelic才能捕获到。

我在Sitecore上进行了以下附加集成:

  • Log4Net Appender将使用NoticeError向NewRelic报告错误
  • HttpModule捕获Application_Error,并使用NoticeError向NewRelic报告错误
  • 使用项目路径来命名事务,并使用AddCustomParameter添加语言、数据库、用户等信息。

你能分享一下你编写的Log4Net Appender,以将日志条目汇集到New Relic吗? - Piedone
2
@Piedone,没问题,这是链接:https://gist.github.com/pbering/dc35f94360d73252a052 - pbering
2
@pbering,你有兴趣把这个变成社区模块吗?如果你愿意与我分享代码,我会将其泛化并打包到市场上。 - Richard Hauer

1

请注意,仅链接答案是不被鼓励的,SO答案应该是寻找解决方案的终点(而不是另一个参考站点,随着时间的推移往往会变得陈旧)。请考虑在此处添加独立的摘要,将链接作为参考。 - kleopatra

0
大约18个月前,我们开始在Sitecore应用程序中使用New Relic时遇到了类似的问题。不幸的是,当时没有人在Sitecore中使用New Relic。我们最终决定将以下代码添加到每个页面都继承的基本页面类中:
    // --- Set custom transaction name for New Relic.
NewRelic.Api.Agent.NewRelic.SetTransactionName("Pages", Sitecore.Context.Item.Template.FullName));

// --- Set custom parameter to store raw url to assist with diagnostics.
NewRelic.Api.Agent.NewRelic.AddCustomParameter("RawUrl", Request.RawUrl);

对于我们的应用程序模板,名称足以区分趋势,并且我们添加了自定义参数来填充整个RawUrl(我们注意到在New Relic没有为我们捕获完整的url时出现了奇怪的情况,但现在可能不再是这种情况)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接