Ruby Gem中的NewRelic事务跟踪
我正在开发一个我想添加NewRelic监控的
Ruby宝石.宝石用于作为守护进程运行并由bluepill监视的脚本.我跟着“
Monitoring Ruby background processes and daemons”开始.
我确认宝石正在建立与NewRelic的连接,因为应用程序显示在我的门户网站中,但是,没有任何事务跟踪或正在调用的代码的任何指标分解. 这是我的宝石的“入口”点,因为我试图在调用方法周围手动启动代理: require 'fms/parser/version' require 'fms/parser/core' require 'fms/parser/env' require 'mongoid' ENV['NRCONFIG'] ||= File.dirname(__FILE__) + '/../newrelic.yml' require 'newrelic_rpm' module Fms module Parser def self.prepare_parse(filename) ::NewRelic::Agent.manual_start Mongoid.load!("#{File.dirname(__FILE__)}/../mongoid.yml",:development) Core.prepare_parse(filename) ::NewRelic::Agent.shutdown end end end 我也尝试将这个添加到模块中: class << self include ::NewRelic::Agent::Instrumentation::ControllerInstrumentation add_transaction_tracer :prepare_parse,:category => :task end 我不完全确定我还能做什么.我确认代理能够与服务器进行通信,并启用事务跟踪.在后台应用程序选项卡中也没有任何内容. 这是迄今为止从代理日志中获得的最有用的信息: [12/23/13 21:21:03 +0000 apivm (7819)] INFO : Environment: development [12/23/13 21:21:03 +0000 apivm (7819)] INFO : No known dispatcher detected. [12/23/13 21:21:03 +0000 apivm (7819)] INFO : Application: MY-APP [12/23/13 21:21:03 +0000 apivm (7819)] INFO : Installing Net instrumentation [12/23/13 21:21:03 +0000 apivm (7819)] INFO : Finished instrumentation [12/23/13 21:21:04 +0000 apivm (7819)] INFO : Reporting to: https://rpm.newrelic.com/[MASKED_ACCOUNT_NUMBER] [12/23/13 22:12:06 +0000 apivm (7819)] INFO : Starting the New Relic agent in "development" environment. [12/23/13 22:12:06 +0000 apivm (7819)] INFO : To prevent agent startup add a NEWRELIC_ENABLE=false environment variable or modify the "development" section of your newrelic.yml. [12/23/13 22:12:06 +0000 apivm (7819)] INFO : Reading configuration from /var/lib/gems/1.9.1/gems/fms-parser-0.0.6/lib/fms/../newrelic.yml [12/23/13 22:12:06 +0000 apivm (7819)] INFO : Starting Agent shutdown 唯一真正关心的是“没有已知的调度程序被检测到”. 我正在努力做什么? 解决方法
我在New Relic工作,想添加一些关于最新版本的newrelic_rpm gem的最新的详细信息. TrinitronX在正确的轨道上,但不幸的是,代码示例和博客文章是基于一个非常旧版本的宝石,内部从那以后发生了重大变化.好消息是,新版本的代理应该使这更简单.
要开始,我应该说我假设你的进程作为守护进程长时间保持活动,并重复调用prepare_parse. 一般来说,您不必需要将您插入到prepare_parse方法中的显式的manual_start和shutdown调用(除了一些特殊情况(某些耙机任务和交互式会话)).新遗物将在需要时立即自动启动.您可以看到有关Ruby代理何时自动启动以及如何在此处控制此行为的详细信息: > https://docs.newrelic.com/docs/ruby/forcing-the-ruby-agent-to-start 为了监控这样的后台任务,在概念上有两个级别的仪器,您可能需要:事务跟踪和方法示踪.你已经有了一个事务跟踪器,但是你也可能想要在你的prepare_parse方法中发生的主要工作块周围添加方法跟踪.这样做可以让您更好地了解每个prepare_parse调用过程中发生的情况.您可以在这里找到有关添加方法示踪剂的详细信息: > https://docs.newrelic.com/docs/ruby/ruby-custom-metric-collection#method_tracers 通过您调用add_transaction_tracer的方式,您对prepare_parse的调用应显示为New Relic UI中“后台任务”选项卡上的事务. 这里的一个注意事项可能是你作为一个守护进程运行这个事实. Ruby代理使用后台线程与New Relic服务器进行异步通信.由于线程不会跨越对fork()的调用进行复制,这意味着有时必须在fork()之后手动重新启动代理程序(请注意,Ruby的Process.daemon使用fork,因此也包括在内).这是否需要取决于newrelic_rpm的要求的相对时间和对fork / daemon的调用(如果在调用fork / daemon之后不需要newrelic_rpm,则应该很好,否则见下文). 叉问题有两种解决方案: >从分叉后的叉子手动调用NewRelic :: Agent.after_fork. 如果你仍然遇到麻烦,那么newrelic_agent.log文件是你最好的选择.您将通过在newrelic.yml文件中设置log_level:debug来增加详细程度,以获得更详细的输出. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |