Ruby OpenTracing (obsolète)
OpenTracing fournit des API et des outils d'instrumentation indépendants des fournisseurs pour le traçage distribué. Le gem Instana Ruby implémente ces API et vous permet d'utiliser le gem Instana avec vos appels OpenTracing. Les applications existantes qui utilisent l'interface OpenTracing API ou celles qui souhaitent ajouter cette fonctionnalité peuvent facilement intégrer ce gem Ruby.
Pour plus d'informations sur l' OpenTracing,, consultez le site OpenTracing.
Pour obtenir les meilleurs résultats avec OpenTracing,, veuillez prendre connaissance des bonnes pratiques décrites sur cette page : OpenTracing.
Pour commencer, définissez le traceur « Instana » comme traceur global pour « OpenTracing: »
require 'opentracing'
OpenTracing.global_tracer = ::Instana.tracer
Le code d' OpenTracing ation peut alors être exécuté normalement :
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
Exemple
Voici un exemple très simplifié de code pour appeler les API OpenTracing.
# 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()