New Relic如何通过简单的安装进入我的应用程序?它如何知道所有的方法、请求等?它适用于RoR,PHP等。有人能解释一下它背后的技术吗?我对使用Rails应用程序很感兴趣,但我想像New Relic一样顺利地完成。谢谢
dddzy1tm1#
首先,你不能自己复制NewRelic的功能。忽略服务器端,rpm Gem是一个相当复杂的软件,要做很多事情。Have a look at the source,如果你想看看它是如何与Rails系统挂钩的。源代码值得一读,因为它在将数据发送回服务器之前,在数据的线程化和编组方面做了一些很酷的事情。如果你因为Newrelic很贵而想要一个替代品(这是正确的,它的功能很棒),那么看看Github上的FreeRelic项目。
agyaoht72#
他们大量使用面向方面的编程概念和反射来拦截原始方法调用并在其周围添加插装。
nwlls2ji3#
一般来说,New Relic的gem在你的web框架中插入了一种中间件,并从你的端点(比如一个rails路由)收集数据,直到它响应。在每个“收获时间”(默认为60秒)之后,它向NR服务发送一个包含此数据的post请求。您还可以使用自定义指标、自定义事件定制所需的数据。也可以使用NRQL进行查询并使用它构建图表(就像你在Graphana中所做的那样)。他们也有一个WordPress的定制服务,但一开始有点混乱。如果你想保存一些钱,可以选择配置cloudwatch + datadog,但如果正常运行时间对你的应用至关重要,我会给予他们的服务。
t1rydlwq4#
对于Rails解决方案,您可以简单地实现一个更详细的日志记录级别(开发/调试级别),并询问production.log文件中的特定事件、计时等
ev7lccsx5#
对于Java,他们将Java代理附加到JVM,拦截方法调用并监视它们。您可以使用AspectJ复制相同的行为,并将每个方法调用记录到您想要的任何地方,比如创建自定义的Cloudwatch指标。
wswtfjt76#
在Java的情况下,它是字节码摄取。他们“入侵”了应用服务器的关键方法,并在其中添加了自己的代码。然后,他们将相关的交易信息发送到他们的服务器,汇总它,你可以看到摘要。这是一个非常复杂的过程,所以我不认为一个开发人员可以实现它。
vsnjm48y7#
您可以通过New Relic中的应用程序设置打开/关闭RUM。同样,您也可以通过代理的配置文件(newrelie.yml -引入了一个'browser_monitoring auto_instrument'标志)来打开/关闭RUM。代理已经得到增强,可以自动将JavaScript注入到HTML页面中,因此使用RUM就像选中New Relic控制面板上的复选框一样简单。但是,如果您希望更多的控制,您可以使用New Relic的Agent API来生成JavaScript,从而精确地控制页眉和页脚脚本包含的时间和位置。
7条答案
按热度按时间dddzy1tm1#
首先,你不能自己复制NewRelic的功能。忽略服务器端,rpm Gem是一个相当复杂的软件,要做很多事情。Have a look at the source,如果你想看看它是如何与Rails系统挂钩的。源代码值得一读,因为它在将数据发送回服务器之前,在数据的线程化和编组方面做了一些很酷的事情。
如果你因为Newrelic很贵而想要一个替代品(这是正确的,它的功能很棒),那么看看Github上的FreeRelic项目。
agyaoht72#
他们大量使用面向方面的编程概念和反射来拦截原始方法调用并在其周围添加插装。
nwlls2ji3#
一般来说,New Relic的gem在你的web框架中插入了一种中间件,并从你的端点(比如一个rails路由)收集数据,直到它响应。在每个“收获时间”(默认为60秒)之后,它向NR服务发送一个包含此数据的post请求。您还可以使用自定义指标、自定义事件定制所需的数据。也可以使用NRQL进行查询并使用它构建图表(就像你在Graphana中所做的那样)。他们也有一个WordPress的定制服务,但一开始有点混乱。如果你想保存一些钱,可以选择配置cloudwatch + datadog,但如果正常运行时间对你的应用至关重要,我会给予他们的服务。
t1rydlwq4#
对于Rails解决方案,您可以简单地实现一个更详细的日志记录级别(开发/调试级别),并询问production.log文件中的特定事件、计时等
ev7lccsx5#
对于Java,他们将Java代理附加到JVM,拦截方法调用并监视它们。您可以使用AspectJ复制相同的行为,并将每个方法调用记录到您想要的任何地方,比如创建自定义的Cloudwatch指标。
wswtfjt76#
在Java的情况下,它是字节码摄取。他们“入侵”了应用服务器的关键方法,并在其中添加了自己的代码。然后,他们将相关的交易信息发送到他们的服务器,汇总它,你可以看到摘要。这是一个非常复杂的过程,所以我不认为一个开发人员可以实现它。
vsnjm48y7#
您可以通过New Relic中的应用程序设置打开/关闭RUM。同样,您也可以通过代理的配置文件(newrelie.yml -引入了一个'browser_monitoring auto_instrument'标志)来打开/关闭RUM。
代理已经得到增强,可以自动将JavaScript注入到HTML页面中,因此使用RUM就像选中New Relic控制面板上的复选框一样简单。但是,如果您希望更多的控制,您可以使用New Relic的Agent API来生成JavaScript,从而精确地控制页眉和页脚脚本包含的时间和位置。