【问题标题】:How to differentiate Rails API calls in Newrelic?如何区分 Newrelic 中的 Rails API 调用?
【发布时间】:2017-04-27 04:34:11
【问题描述】:

我使用 Rails 5 为网站和 RESTful API 提供服务,并使用 Newrelic (newrelic_rpm gem) 来监控应用程序性能。

目前,gem 监控对一个应用程序名称的所有请求。

假设我的路线看起来像:

Rails.application.routes.draw do
  resources :users
  namespace :api do
    namespace :v1 do
      resources :users, only: :index
    end
  end
end

这里 /users 是 Web 应用程序的路由,api/users 是 API 的路由。现在,一旦我使用newrelic_rpm,它就不会看到 API 和 Web 之间的不同。

我想对报告进行更多分离,以便我可以将 Web 请求记录到特定的应用名称,例如:web_app 和 API 的另一个名称 api_app

有什么帮助吗?

【问题讨论】:

  • 我删除了我的答案,因为事实证明我误解了你的问题。除非您使用多个 Rails 应用程序,否则我不知道如何向多个 NewRelic 应用程序报告,抱歉。

标签: ruby-on-rails ruby ruby-on-rails-5 newrelic newrelic-platform


【解决方案1】:

您无法使用当前版本的 New Relic 代理执行您在此处概述的操作。这不是代理的工作方式;这不是 New Relic 的运作方式。

您有一个应用程序,其性能应作为一个整体来考虑。如果您能够将性能数据路由到不同的应用程序,您怎么能看到一个应用程序中的问题正在影响另一个应用程序?当事件和指标位于不同的应用程序中时,如何关联它们?

更具体地说,有人可能会攻击应用 A 并对应用 B 产生负面影响,这可能会出现在应用 A、应用 B 或两者的性能数据中。这就是不支持此功能的原因:您不会在单个服务器上运行的单个应用的性能数据中设置人造墙。

按预期方式使用代理,并使用New Relic transactions page in APMWeb transactions analysis report 过滤到您关心的事务。您还可以使用Insights event explorerfilter and chart 您的Transaction 数据。

【讨论】:

  • 谢谢,@anothermh,我听到你的声音响亮而清晰。我同意你所说的,但是有时同一个 Rails 应用程序可以像两个独立的应用程序(Web 应用程序和可与移动应用程序一起使用的 API)。将两者部署到同一台服务器的唯一原因是成本效率,在这种情况下,必须使用应用名称可能很有用,因为这两个应用具有不同的特征(尤其是如果我们挂载 API)
  • 听起来您想要在不实际分离服务的情况下分离服务的好处。你不能得到你想要的东西的原因是因为应用程序不是这样工作的。有两种简单的方法:制作两个应用程序(然后在 New Relic 中创建两个应用程序),或制作一个应用程序(并在 New Relic 中过滤数据)。有许多不可能的路径,包括:您所描述的尝试做的事情。我建议:制作一个应用程序并过滤New Relic中的数据,例如custom Insights events
  • @EkiEqbal 您不能将应用程序分开处理的原因:如果您有两个独角兽工作者,他们 95% 的时间都在忙于以非常低的吞吐量为您的 API 提供非常长的生命周期请求,并且只有 5% 的时间可用于您的 Web 应用程序,您如何通过两个独立的应用程序向 New Relic 报告您的 Web 应用程序缺少工作人员?从表面上看,它可以快速而定期地为请求提供服务,但并不经常得到它们。您认为您的 API 表现出色,您认为您的 Web 应用程序表现出色。如果您将它们视为单个应用程序,您会发现问题。
  • 感谢@anotherm 的解释,非常有道理。我想我将只运行两个应用程序并在 newrelic 上使用两个应用程序。
  • @EkiEqbal 你的问题没有意义。 Ruby 启动一次,当它启动一次时,它会通过 gem 与 New Relic 建立单一连接。应用名称在初始化时定义一次。 gem 不会在每个方法之间重新初始化,连接到 New Relic,发送数据,然后断开连接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-12
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多