require "socket"
require "opentelemetry/sdk"
require "opentelemetry/instrumentation/all"
require "opentelemetry-exporter-otlp"
# Replace these values with your AppSignal application name, environment
# and push API key. These are used by the resource attributes configuration below.
name = "My app"
push_api_key = "0000-0000-0000-0000"
environment = defined?(Rails) ? Rails.env.to_s : "development"
# Set the name of the service that is being monitored. A common choice is the
# name of the framework used. This is used to group traces and metrics in AppSignal.
service_name = "My service name"
# Replace `http://localhost:8099` with the address of your AppSignal collector
# if it's running on another host.
endpoint = "http://localhost:8099/v1/traces"
revision = `git rev-parse --short HEAD`.strip
OpenTelemetry::SDK.configure do |c|
c.resource = OpenTelemetry::SDK::Resources::Resource.create(
"appsignal.config.name" => name,
"appsignal.config.environment" => environment,
"appsignal.config.push_api_key" => push_api_key,
"appsignal.config.revision" => revision,
"appsignal.config.language_integration" => "ruby",
"appsignal.config.app_path" => Dir.pwd,
"host.name" => Socket.gethostname,
)
c.service_name = service_name
c.add_span_processor(
OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new(
OpenTelemetry::Exporter::OTLP::Exporter.new(
:endpoint => endpoint,
:compression => "none"
)
)
)
c.use_all
end