module OpenTelemetry

Overview


## Global Trace Provider
----------------------------------------------------------------

OpenTelemetry.configure do |config|
  config.service_name = "my_app_or_library"
  config.service_version = "1.1.1"
  config.exporter = OpenTelemetry::IOExporter.new(:STDOUT)
end

trace = OpenTelemetry.trace_provider("my_app_or_library", "1.1.1")
trace = OpenTelemetry.trace_provider do |provider|
  provider.service_name = "my_app_or_library"
  provider.service_version = "1.1.1"
end.trace

## Trace Providers as Objects With Unique Configuration
----------------------------------------------------------------

provider_a = OpenTelemetry::TraceProvider.new("my_app_or_library", "1.1.1")
provider_a.exporter = OpenTelemetry::IOExporter.new(:STDOUT)

provider_b = OpenTelementry::TraceProvider.new do |config|
  config.service_name = "my_app_or_library"
  config.service_version = "1.1.1"
  config.exporter = OpenTelemetry::IOExporter.new(:STDOUT)
end

## Getting a Trace From a Provider Object
----------------------------------------------------------------

trace = provider_a.trace # Inherit all configuration from the Provider Object

trace = provider_a.trace("microservice foo", "1.2.3") # Override the configuration

trace = provider_a.trace do |provider|
  provider.service_name = "microservice foo"
  provider.service_version = "1.2.3"
end.trace

## Creating Spans Using a Trace
----------------------------------------------------------------

trace.in_span("request") do |span|
  span.set_attribute("verb", "GET")
  span.set_attribute("url", "http://example.com/foo")
  span.add_event("dispatching to handler")
  trace.in_span("handler") do |child_span|
    child_span.add_event("handling request")
    trace.in_span("db") do |child_span|
      child_span.add_event("querying database")
    end
  end
end

Defined in:

exporter.cr
exporters/abstract.cr
exporters/base.cr
exporters/buffered_base.cr
exporters/buffered_exporter.cr
exporters/http.cr
exporters/io.cr
exporters/null.cr
exporters/stdout.cr
exporters/unbuffered_exporter.cr
opentelemetry-api.cr
opentelemetry-api/aliases.cr
opentelemetry-api/anyvalue.cr
opentelemetry-api/attribute.cr
opentelemetry-api/context.cr
opentelemetry-api/context/key.cr
opentelemetry-api/event.cr
opentelemetry-api/id_generator.cr
opentelemetry-api/id_generator/base.cr
opentelemetry-api/id_generator/random.cr
opentelemetry-api/id_generator/unique.cr
opentelemetry-api/instrument.cr:1
opentelemetry-api/instrument.cr:53
opentelemetry-api/instrument/counter.cr
opentelemetry-api/instrumentation.cr
opentelemetry-api/log.cr
opentelemetry-api/log_collection.cr
opentelemetry-api/log_provider.cr
opentelemetry-api/message.cr
opentelemetry-api/meter.cr
opentelemetry-api/meter/exceptions.cr
opentelemetry-api/meter_provider.cr
opentelemetry-api/name.cr
opentelemetry-api/provider.cr
opentelemetry-api/provider/configuration.cr
opentelemetry-api/provider/configuration/factory.cr
opentelemetry-api/resource.cr
opentelemetry-api/sendable.cr
opentelemetry-api/span.cr
opentelemetry-api/span/kind.cr
opentelemetry-api/span_context.cr
opentelemetry-api/trace.cr
opentelemetry-api/trace/exceptions.cr
opentelemetry-api/trace_flags.cr
opentelemetry-api/trace_provider.cr
opentelemetry-api/version.cr
proto/common.pb.cr
proto/logs.pb.cr
proto/logs_service.pb.cr
proto/metrics.pb.cr
proto/metrics_config_service.pb.cr
proto/metrics_service.pb.cr
proto/resource.pb.cr
proto/trace.pb.cr
proto/trace_config.pb.cr
proto/trace_service.pb.cr

Constant Summary

INSTANCE_ID = CSUUID.unique.to_s
NAME = "OpenTelemetry Crystal"
VERSION = "0.2.0"

Class Method Summary

Class Method Detail

def self.config #

[View source]
def self.config=(config) #

[View source]
def self.configure(&block : TraceProvider::Configuration::Factory -> ) #

Use this method to configure the global trace provider.


[View source]
def self.handle_error(error) #

[View source]
def self.instrumentation_library #

[View source]
def self.instrumentation_scope #

[View source]
def self.provider #

[View source]
def self.provider=(provider) #

[View source]
def self.trace #

[View source]
def self.trace(&) #

[View source]
def self.trace_provider(service_name : String, service_version : String = "", exporter = nil) #

[View source]
def self.trace_provider #

[View source]
def self.trace_provider(&block : TraceProvider::Configuration::Factory -> ) #

[View source]