Ruby OpenTracing

OpenTracing 提供 "Vendor-neutral APIs and instrumentation for distributed tracing"。 如果您不熟悉 OpenTracing,請參閱 OpenTracing 入口網站 ,以取得詳細資料。

Instana Ruby gem 實作這些 API ,並可讓您搭配使用 Instana gem 與 OpenTracing 呼叫。

利用 OpenTracing API 或想要新增支援的現有應用程式可以輕鬆地與此 Ruby gem 整合。

為了在使用 OpenTracing時取得最佳結果,也請記下我們在此 OpenTracing 頁面中概述的最佳作法。

若要啟動,只需將 Instana Tracer 設為 OpenTracing的廣域追蹤程式:

require 'opentracing'
OpenTracing.global_tracer = ::Instana.tracer

然後可以正常執行 OpenTracing 程式碼:

begin
  span = OpenTracing.start_span('job')
  # The code to be instrumented
  @id = User.find_by_name('john.smith')
  span.set_tag(:job_id, @id)
rescue => e
  span.set_tag(:error, e.message)
ensure
  span.finish
end

範例

下列是呼叫 OpenTracing API 之部分程式碼的過度簡化範例。

# Note:  The instana gem automatically sets the Instana tracer
# to `OpenTracing.global_tracer`.  Once the gem is loaded, you can
# immediately start making OpenTracing calls.
#
require "opentracing"

entry_span = OpenTracing.start_span("HandMadeRackServer")

entry_span.set_tag(:'http.method', :get)
entry_span.set_tag(:'http.url', "/users")
entry_span.set_tag(:'span.kind', "entry")

intermediate_span = OpenTracing.start_span("myintermediate", :child_of => entry_span)
intermediate_span.finish()

db_span = OpenTracing.start_span('mydbspan', :child_of => entry_span)
db_span.set_tag(:'db.instance', "users")
db_span.set_tag(:'db.statement', "SELECT * FROM user_table")
db_span.set_tag(:'db.type', "mysql")
db_span.set_tag(:'db.user', "mysql_login")
db_span.set_tag(:'span.kind', "exit")
db_span.finish()

intermediate_span = OpenTracing.start_span("myintermediate", :child_of => entry_span)
intermediate_span.log("ALLOK", :message => "All seems ok")
intermediate_span.finish()

entry_span.set_tag(:'http.status_code', 200)
entry_span.finish()

另請參閱