示例#1
0
        protected DiagnosticObserver(IDatadogTracer tracer)
        {
            Tracer = tracer ?? throw new ArgumentNullException(nameof(tracer));

            ListenerNames = new List <string>();
            ListenerNames.Add(ListenerName);
            ListenerNames.AddRange(tracer.Settings.AdditionalDiagnosticListeners);
        }
示例#2
0
 public OpenTracingTracer(IDatadogTracer datadogTracer, global::OpenTracing.IScopeManager scopeManager)
 {
     DatadogTracer      = datadogTracer;
     DefaultServiceName = datadogTracer.DefaultServiceName;
     ScopeManager       = scopeManager;
     _codecs            = new Dictionary <string, ICodec> {
         { BuiltinFormats.HttpHeaders.ToString(), new HttpHeadersCodec() }
     };
 }
 // Internal constructor used for tests
 internal Api(Uri baseEndpoint, IApiRequestFactory apiRequestFactory, IDogStatsd statsd, IDatadogTracer tracer)
 {
     Log.Debug("Creating new Api");
     _tracer            = tracer;
     _tracesEndpoint    = new Uri(baseEndpoint, TracesPath);
     _statsd            = statsd;
     _containerId       = ContainerMetadata.GetContainerId();
     _apiRequestFactory = apiRequestFactory ?? CreateRequestFactory();
 }
示例#4
0
 public OpenTracingTracer(IDatadogTracer datadogTracer, global::OpenTracing.IScopeManager scopeManager)
 {
     DatadogTracer      = datadogTracer;
     DefaultServiceName = datadogTracer.DefaultServiceName;
     ScopeManager       = scopeManager;
     _codecs            = new Dictionary <string, ICodec>
     {
         { BuiltinFormats.HttpHeaders.ToString(), new HttpHeadersCodec() },
         { BuiltinFormats.TextMap.ToString(), new HttpHeadersCodec() } // the HttpHeadersCodec can support an unconstrained ITextMap
     };
 }
示例#5
0
 internal Span(IDatadogTracer tracer, SpanContext parent, string operationName, string serviceName, DateTimeOffset?start)
 {
     // TODO:bertrand should we throw an exception if operationName is null or empty?
     _tracer       = tracer;
     _context      = new SpanContext(tracer, parent, serviceName);
     OperationName = operationName;
     if (start.HasValue)
     {
         StartTime = start.Value;
     }
     else
     {
         StartTime = _context.TraceContext.UtcNow();
     }
 }
示例#6
0
        internal SpanContext(IDatadogTracer tracer, SpanContext parent, string serviceName)
        {
            if (parent != null)
            {
                Parent  = parent;
                TraceId = parent.TraceId;

                // TraceContext may be null if SpanContext was extracted from another process context
                TraceContext = parent.TraceContext ?? new TraceContext(tracer);
            }
            else
            {
                TraceId      = _random.Value.NextUInt63();
                TraceContext = new TraceContext(tracer);
            }

            SpanId      = _random.Value.NextUInt63();
            ServiceName = serviceName ?? parent?.ServiceName ?? tracer.DefaultServiceName;
        }
示例#7
0
 public TraceContext(IDatadogTracer tracer)
 {
     Tracer = tracer;
 }
 public TraceContext(IDatadogTracer tracer, TraceTagCollection tags = null)
 {
     Tracer = tracer;
     Tags   = tags;
 }
示例#9
0
 public OpenTracingTracer(IDatadogTracer datadogTracer)
     : this(datadogTracer, new global::OpenTracing.Util.AsyncLocalScopeManager())
 {
 }
示例#10
0
 public AspNetCoreDiagnosticObserver(IDatadogTracer tracer, AspNetCoreDiagnosticOptions options)
     : base(tracer)
 {
     _tracer  = tracer ?? throw new ArgumentNullException(nameof(tracer));
     _options = options ?? throw new ArgumentNullException(nameof(options));
 }
示例#11
0
        private static IEnumerable <KeyValuePair <string, string> > ExtractHeaderTags(HttpRequest request, IDatadogTracer tracer)
        {
            try
            {
                // extract propagation details from http headers
                var requestHeaders = request.Headers;

                if (requestHeaders != null)
                {
                    return(SpanContextPropagator.Instance.ExtractHeaderTags(new HeadersCollectionAdapter(requestHeaders), tracer.Settings.HeaderTags));
                }
            }
            catch (Exception ex)
            {
                Log.SafeLogError(ex, "Error extracting propagated HTTP headers.");
            }

            return(Enumerable.Empty <KeyValuePair <string, string> >());
        }
示例#12
0
 protected DiagnosticObserver(IDatadogTracer tracer)
 {
     Tracer = tracer ?? throw new ArgumentNullException(nameof(tracer));
 }
示例#13
0
 public TraceContext(IDatadogTracer tracer)
 {
     _tracer = tracer;
     _start  = DateTimeOffset.UtcNow;
     _sw     = Stopwatch.StartNew();
 }
示例#14
0
 public OpenTracingTracer(IDatadogTracer datadogTracer)
     : this(datadogTracer, new OpenTracingScopeManager(datadogTracer.ScopeManager))
 {
 }
示例#15
0
 public AspNetCoreDiagnosticObserver(IDatadogTracer tracer)
 {
     _tracer = tracer;
 }