New Relic如何通过简单的安装进入我的应用程序?它如何知道所有方法,请求等?
它适用于RoR,PHP等。
任何人都能解释它背后的技术吗?我有兴趣使用我的Rails应用程序,但我想像New Relic那样顺利地完成。
谢谢
首先,您将无法自行复制NewRelic的功能。忽略服务器端,rpm Gem是一个非常复杂的软件,做了很多东西。 Have a look at the source如果你想看看它如何挂钩到Rails系统。源代码值得一读,因为它在将数据发送回服务器之前对数据进行线程化和封送处理有一些很酷的东西。
如果你想要一个替代品,因为Newrelic是昂贵的(这是正确的,它的功能很棒),然后看看Github上的FreeRelic项目。
他们正在大量使用面向ASPECT的编程概念和反射来拦截原始方法调用并在其周围添加工具。
对于rails解决方案,您可以简单地实现更详细的日志记录级别(开发/调试级别)并查询production.log文件以获取特定事件,计时等
在Java的情况下,它是字节码摄取。他们“破解”应用程序服务器的关键方法并在其中添加代码。然后他们将相关的交易信息发送到他们的服务器,汇总它,你可以看到摘要。这是一个非常复杂的过程,所以我不认为一个开发人员可以实现它。
对于Java,他们将Java代理附加到JVM,JVM拦截方法调用并监视它们。您可以使用AspectJ复制相同的行为,并将每个方法调用记录到您想要的任何位置,假设创建自定义Cloudwatch指标。
一般来说,New Relic的gem在您的Web框架中插入了一些中间件,并从您的端点收集数据(作为rails路由)直到它的响应。在每个“收获时间”(默认为60秒)之后,它会使用此数据向NR服务发送一个发布请求。您还可以使用自定义指标,自定义事件定制所需的数据。也可以使用NRQL进行查询并使用它构建图形(就像在Graphana中一样)。他们也为Wordpress提供定制服务,但一开始有点乱。如果你想节省一些钱的一些选项是配置cloudwatch + datadog,但如果正常运行时间对你的应用至关重要,我会给他们的服务。