24

New Relic 如何通过简单的安装进入我的应用程序?它如何知道所有的方法、请求等?

它适用于 RoR、PHP 等。

谁能解释一下它背后的技术?我对利用我的 Rails 应用程序很感兴趣,但我想像 New Relic 一样顺利完成。

谢谢

4

7 回答 7

13

首先,您将无法自己复制 NewRelic 的功能。忽略服务器端,rpm Gem 是一个相当复杂的软件,可以做很多事情。如果您想了解它如何与 Rails 系统挂钩,请查看源代码。该源代码值得一读,因为它在数据的线程化和编组方面做了一些很酷的事情,然后再将其发送回他们的服务器。

如果您因为 Newrelic 价格昂贵而想要更换(这是正确的,它的功能很棒),那么请查看 Github 上的FreeRelic项目。

于 2011-07-15T10:45:48.913 回答
2

他们大量使用面向方面的编程概念和反射来拦截原始方法调用并为此添加工具。

于 2014-04-29T21:14:01.887 回答
2

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

于 2019-01-15T23:09:12.630 回答
1

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

于 2011-07-23T03:41:37.063 回答
1

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

于 2016-06-19T11:46:21.987 回答
0

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

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

    您可以通过 New Relic 中的应用程序设置打开/关闭 RUM。同样,您可以通过代理的配置文件打开/关闭 RUM(newrelic.yml - 引入了“browser_monitoring auto_instrument”标志)。

    代理已得到增强,可以自动将 JavaScript 注入 HTML 页面,因此使用 RUM 就像选中 New Relic 控制面板上的复选框一样简单。但是,如果您希望获得更多控制权,您可以使用 New Relic 的代理 API 来生成 JavaScript,从而准确控制何时何地包含页眉和页脚脚本。

于 2019-03-28T09:07:32.037 回答