Sha256: 05a431264a3a53c3adabfff559606b02e9b4a016ce5143a9054055919957acf0
Contents?: true
Size: 1.38 KB
Versions: 17
Compression:
Stored size: 1.38 KB
Contents
module Datadog module Contrib module GRPC module DatadogInterceptor # The DatadogInterceptor::Client implements the tracing strategy # for gRPC client-side endpoitns. This middleware compoent will # inject trace context information into gRPC metadata prior to # sending the request to the server. class Client < Base def trace(keywords) keywords[:metadata] ||= {} options = { span_type: Datadog::Ext::GRPC::TYPE, service: datadog_pin.service_name, resource: format_resource(keywords[:method]) } tracer.trace('grpc.client', options) do |span| annotate!(span, keywords[:metadata]) yield end end private def annotate!(span, metadata) metadata.each do |header, value| span.set_tag(header, value) end Datadog::GRPCPropagator .inject!(span.context, metadata) rescue StandardError => e Datadog::Tracer.log.debug("GRPC client trace failed: #{e}") end def format_resource(proto_method) proto_method.downcase .split('/') .reject(&:empty?) .join('.') end end end end end end
Version data entries
17 entries across 17 versions & 1 rubygems