New Relic如何通过简单安装点击我的应用程序?它如何知道所有方法,请求等?
适用于RoR,PHP等。
任何人都可以解释它背后的技术吗?我有兴趣使用我的Rails应用程序,但我想像New Relic那样顺利地完成。
由于
答案 0 :(得分:12)
首先,您无法自行复制NewRelic的功能。忽略服务器端,rpm Gem是一个非常复杂的软件,做了很多东西。 Have a look at the source如果你想看看它如何挂钩到Rails系统。源代码是值得一读的,因为它在将数据发送回服务器之前对数据进行线程化和封送处理有一些很酷的东西。
如果你想要替换,因为Newrelic是昂贵的(这是正确的,它的功能很棒),然后看看Github上的FreeRelic项目。
答案 1 :(得分:2)
他们正在大量使用面向ASPECT的编程概念和反射来拦截原始方法调用并在其周围添加工具。
答案 2 :(得分:1)
对于rails解决方案,您可以简单地实现更详细的日志记录级别(开发/调试级别)并查询production.log文件以获取特定事件,时间等
答案 3 :(得分:0)
在Java的情况下,它是字节码摄取。他们“破解”应用程序服务器的关键方法并在其中添加代码。然后他们将相关的交易信息发送到他们的服务器,汇总它,你可以看到摘要。这是一个非常复杂的过程,所以我不认为一个开发人员可以实现它。
答案 4 :(得分:0)
对于Java,他们将Java代理附加到JVM,JVM拦截方法调用并监视它们。您可以使用AspectJ复制相同的行为,并将每个方法调用记录到您想要的任何位置,假设创建自定义Cloudwatch指标。
答案 5 :(得分:0)
通常,New Relic的gem会在Web框架中插入某种中间件,并从端点收集数据(将其视为Rails路由),直到响应为止。在每个“收集时间”(默认为60秒)之后,它将使用此数据向NR服务发送一个发布请求。 您还可以使用“自定义指标”,“自定义事件”来定制所需的数据。 也可以使用NRQL进行查询并以此构建图形(就像在Graphana中所做的那样)。 他们也为Wordpress提供定制服务,但一开始有点麻烦。 如果您想节省一些钱,可以选择配置cloudwatch + datadog,但是如果正常运行时间对于您的应用至关重要,我会为他们提供服务。
答案 6 :(得分:0)
如果您已经熟悉New Relic的应用程序监视 那么您可能知道在过程中运行的New Relic代理 在Web应用程序上收集和报告有关内容的各种详细信息 在应用程序中发生。 RUM利用代理程序动态注入 将JavaScript嵌入页面中。注入的JavaScript 在浏览器中收集计时信息,并包含以下详细信息: 识别在 后端以及每个请求在应用程序中花费的时间。 当页面在最终用户的浏览器中完成加载后, 信息会异步发送回New Relic,因此不会 效果页面加载时间。
您可以通过New Relic中的应用程序设置打开/关闭RUM。 另外,您可以通过代理的配置文件打开/关闭RUM (newrelic.yml –一个“ browser_monitoring auto_instrument”标志已被 介绍)。
代理已得到增强,可以自动将JavaScript注入 HTML页面,因此使用RUM就像选中以下复选框一样简单 New Relic控制面板。但是,如果您希望获得更多控制权, 您可以使用New Relic的Agent API生成JavaScript,从而 精确控制页眉和页脚脚本的时间和位置 包括在内。