新遗物如何运作?

Posted

技术标签:

【中文标题】新遗物如何运作?【英文标题】:How does New Relic work? 【发布时间】:2011-10-06 01:08:30 【问题描述】:

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

它适用于 RoR、php 等。

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

谢谢

【问题讨论】:

它不能是javascript,因为您需要了解控制器、模型等的详细信息。 【参考方案1】:

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

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

【讨论】:

不,我不想更换。我想做一些不同的事情,只使用特定的控制器。我只需要复制正在检索的信息,但不是为了相同的目标。谢谢 @donald:既然源是可用的,那么是什么阻碍了您获取所需的东西来满足您的要求? @hakre:newrelic_rpm gem 的license 阻止您“修改、分发或利用这些文件”。 @rkb:好吧,fork 按钮可能被视为可以编辑的书面声明;) - 但除了玩笑之外,与任何许可一样,请咨询您的律师或法律团队/部门。 【参考方案2】:

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

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

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

如果您已经熟悉 New Relic 的应用程序监控 那么您可能知道在进程中运行的 New Relic 代理 在网络应用程序上收集和报告有关什么的各种详细信息 发生在应用程序中。 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,从而 准确控制页眉和页脚脚本的时间和位置 包括在内。

【讨论】:

朗姆酒是Real User Monitoring。

以上是关于新遗物如何运作?的主要内容,如果未能解决你的问题,请参考以下文章

新遗物中的 RecordMetric 与 RecordResponseTimeMetric

在 django 视图中禁用对新遗物的监控

神经网络为大脑如何运作提供新见解

短网址服务如何运作?

用遗物提升矩阵

更新当圣遗物遇到图像识别技术「原神计算器1.3.0发布」