自定义监控
编辑自定义监控
编辑安装并正确配置后,ElasticAPM 会自动将应用程序的请求/响应包装在事务中并报告其错误。如果您使用 Sidekiq 或 DelayedJob,它还会包装每个后台作业。
但也可以创建您自己的事务,以及为任何自动或自定义事务提供跨度。
请参阅 ElasticAPM.start_transaction
和 ElasticAPM.start_span
。
辅助函数
编辑如果您只想监控常规方法,ElasticAPM 包含一些方便的辅助函数。
class Thing include ElasticAPM::SpanHelpers def do_the_work # ... end span_method :do_hard_work # takes optional `name` and `type` def self.do_all_the_work # ... end span_class_method :do_hard_work, 'Custom name', 'custom.work_thing' end
自定义跨度示例
编辑如果您已经在事务中(很可能),并且想要监控其中的某些工作,请添加自定义跨度
class ThingsController < ApplicationController def index @result_of_work = ElasticAPM.with_span "Heavy work" do do_the_heavy_work end end end
自定义事务示例
编辑如果您没有在事务中(例如,在您的通用 Web 应用程序之外),请像这样启动和管理您自己的事务
class Something def do_work transaction = ElasticAPM.start_transaction 'Something#do_work' begin Sequel[:users] # many third party libs will be automatically instrumented rescue Exception => e ElasticAPM.report(e) raise ensure ElasticAPM.end_transaction('result') end end end
注意:如果代理之前没有启动,这将不会有任何作用。请参阅 ElasticAPM.start。