module Sqreen::Ecosystem
The API for the ecosystem client (together with the dispatch table)
Public Class Methods
configure_sampling(tracing_id_prefix, sampling_config)
click to toggle source
@param [String] tracing_id_prefix @param [Array<Hash{String=>Object}>] sampling_config
# File lib/sqreen/ecosystem.rb, line 64 def configure_sampling(tracing_id_prefix, sampling_config) @tracing_id_setup.tracing_id_prefix = tracing_id_prefix built_samp_cfg = Tracing::SamplingConfiguration.new(sampling_config) @tracing_broker.sampling_configuration = built_samp_cfg end
end_transaction()
click to toggle source
# File lib/sqreen/ecosystem.rb, line 58 def end_transaction TransactionStorage.destroy_thread_local end
init(opts = {})
click to toggle source
# File lib/sqreen/ecosystem.rb, line 20 def init(opts = {}) @registry = ModuleRegistry.new register_modules(opts[:modules]) @registry.init_all # setup tracing generation tracing_id_mods = @registry.module_subset(ModuleApi::TracingIdGeneration) @tracing_id_setup = TracingIdSetup.new(tracing_id_mods) @tracing_id_setup.setup_modules # configure tracing broker with the consumers (tracing modules) tracing_modules = @registry.module_subset(ModuleApi::Tracing) @tracing_broker = TracingBroker.new(tracing_modules) # inject tracing broker in message producers @registry.each_module(ModuleApi::MessageProducer) do |mod| mod.tracing_broker = @tracing_broker end rescue ::Exception # rubocop:disable Lint/RescueException # TODO: modules must be disabled at this point raise end
reset()
click to toggle source
# File lib/sqreen/ecosystem.rb, line 43 def reset instance_variables.each do |ia| instance_variable_set(ia, nil) end end
start_transaction()
click to toggle source
To be called by the Ecosystem
client when a new transaction (generally: request) is started In the future, it's intended that request end/start detection be handled by the Ecosystem
itself, so control will flow in the other direction, from the ecosystem to its client
# File lib/sqreen/ecosystem.rb, line 54 def start_transaction TransactionStorage.create_thread_local end
Private Class Methods
register(mod)
click to toggle source
# File lib/sqreen/ecosystem.rb, line 123 def register(mod) @registry.register mod end
register_all_modules()
click to toggle source
# File lib/sqreen/ecosystem.rb, line 78 def register_all_modules # replace with something more magical? require_relative 'ecosystem/http/rack_request' register Http::RackRequest.new require_relative 'ecosystem/http/net_http' register Http::NetHttp.new require_relative 'ecosystem/databases/postgres' register Databases::Postgres.new require_relative 'ecosystem/databases/mysql' register Databases::Mysql.new require_relative 'ecosystem/databases/mongo' register Databases::Mongo.new require_relative 'ecosystem/databases/redis' register Databases::Redis.new require_relative 'ecosystem/messaging/sqs' register Messaging::Sqs.new require_relative 'ecosystem/messaging/kinesis' register Messaging::Kinesis.new require_relative 'ecosystem/messaging/bunny' register Messaging::Bunny.new require_relative 'ecosystem/messaging/kafka' register Messaging::Kafka.new require_relative 'ecosystem/tracing/modules/client' register Tracing::Modules::Client.new require_relative 'ecosystem/tracing/modules/server' register Tracing::Modules::Server.new require_relative 'ecosystem/tracing/modules/producer' register Tracing::Modules::Producer.new require_relative 'ecosystem/tracing/modules/consumer' register Tracing::Modules::Consumer.new end
register_modules(modules)
click to toggle source
# File lib/sqreen/ecosystem.rb, line 72 def register_modules(modules) return register_all_modules unless modules modules.each { |mod| register mod } end