php New Relic是如何工作的?

lymnna71  于 2023-09-29  发布在  PHP
关注(0)|答案(7)|浏览(94)

New Relic如何通过简单的安装进入我的应用程序?它如何知道所有的方法、请求等?
它适用于RoR,PHP等。
有人能解释一下它背后的技术吗?我对使用Rails应用程序很感兴趣,但我想像New Relic一样顺利地完成。
谢谢

dddzy1tm

dddzy1tm1#

首先,你不能自己复制NewRelic的功能。忽略服务器端,rpm Gem是一个相当复杂的软件,要做很多事情。Have a look at the source,如果你想看看它是如何与Rails系统挂钩的。源代码值得一读,因为它在将数据发送回服务器之前,在数据的线程化和编组方面做了一些很酷的事情。
如果你因为Newrelic很贵而想要一个替代品(这是正确的,它的功能很棒),那么看看Github上的FreeRelic项目。

agyaoht7

agyaoht72#

他们大量使用面向方面的编程概念和反射来拦截原始方法调用并在其周围添加插装。

nwlls2ji

nwlls2ji3#

一般来说,New Relic的gem在你的web框架中插入了一种中间件,并从你的端点(比如一个rails路由)收集数据,直到它响应。在每个“收获时间”(默认为60秒)之后,它向NR服务发送一个包含此数据的post请求。您还可以使用自定义指标、自定义事件定制所需的数据。也可以使用NRQL进行查询并使用它构建图表(就像你在Graphana中所做的那样)。他们也有一个WordPress的定制服务,但一开始有点混乱。如果你想保存一些钱,可以选择配置cloudwatch + datadog,但如果正常运行时间对你的应用至关重要,我会给予他们的服务。

t1rydlwq

t1rydlwq4#

对于Rails解决方案,您可以简单地实现一个更详细的日志记录级别(开发/调试级别),并询问production.log文件中的特定事件、计时等

ev7lccsx

ev7lccsx5#

对于Java,他们将Java代理附加到JVM,拦截方法调用并监视它们。您可以使用AspectJ复制相同的行为,并将每个方法调用记录到您想要的任何地方,比如创建自定义的Cloudwatch指标。

wswtfjt7

wswtfjt76#

在Java的情况下,它是字节码摄取。他们“入侵”了应用服务器的关键方法,并在其中添加了自己的代码。然后,他们将相关的交易信息发送到他们的服务器,汇总它,你可以看到摘要。这是一个非常复杂的过程,所以我不认为一个开发人员可以实现它。

vsnjm48y

vsnjm48y7#

  • 如果你已经熟悉New Relic的应用程序监控,那么你可能知道New Relic的代理程序在Web应用程序上运行,收集和报告有关应用程序中发生的各种细节。RUM利用代理在构建页面时动态地将JavaScript注入页面。注入的JavaScript在浏览器中收集时间信息,并包含标识在后端处理的特定应用程序和Web事务的详细信息,以及每个请求在应用程序中花费的时间。当一个页面在最终用户的浏览器中完成加载时,信息会异步地发送回New Relic--所以它不会影响页面加载时间。

您可以通过New Relic中的应用程序设置打开/关闭RUM。同样,您也可以通过代理的配置文件(newrelie.yml -引入了一个'browser_monitoring auto_instrument'标志)来打开/关闭RUM。
代理已经得到增强,可以自动将JavaScript注入到HTML页面中,因此使用RUM就像选中New Relic控制面板上的复选框一样简单。但是,如果您希望更多的控制,您可以使用New Relic的Agent API来生成JavaScript,从而精确地控制页眉和页脚脚本包含的时间和位置。

相关问题