Пример #1
0
        public async Task <int> FlushAsync(CancellationToken cancellationToken)
        {
            int n = _spanBuffer.Count;

            if (n == 0)
            {
                return(0);
            }

            try
            {
                var request = new PostSpansRequest
                {
                    Batch = new Batch
                    {
                        Process = _process,
                        Spans   = { _spanBuffer }
                    }
                };
                await _client.PostSpansAsync(request, cancellationToken : cancellationToken);
            }
            catch (Exception ex)
            {
                throw new SenderException("Failed to flush spans.", ex, n);
            }
            finally
            {
                _spanBuffer.Clear();
                _byteBufferSize = _processBytesSize;
            }
            return(n);
        }
Пример #2
0
 public override async Task <PostSpansResponse> PostSpans(PostSpansRequest request, ServerCallContext context)
 {
     Console.WriteLine("暂时不处理内容,所以报错");
     return(new Jaeger.ApiV2.PostSpansResponse
     {
     });
 }
Пример #3
0
        public override async Task <PostSpansResponse> PostSpans(PostSpansRequest request, ServerCallContext context)
        {
            var spans = ExplorerSpanConverter.ConvertSpanFromJagger(request);
            await _processor.ProcessAsync(spans);

            return(new PostSpansResponse());
        }
Пример #4
0
        public override async Task <PostSpansResponse> PostSpans(PostSpansRequest request, ServerCallContext context)
        {
            _Logger.LogInformation("PostSpan ServiceName:{0}", request.Batch.Process.ServiceName);
            await _TracingPipeline.Post(new Model.TracingBatch()
            {
                Process = _Mapper.Map <Model.SpanProcess>(request.Batch.Process),
                Spans   = _Mapper.Map <IEnumerable <Model.Span> >(request.Batch.Spans),
            }, default(CancellationToken));

            return(new PostSpansResponse());
        }
Пример #5
0
        public override async Task <PostSpansResponse> PostSpans(PostSpansRequest request, ServerCallContext context)
        {
            var collection = database.GetCollection <BsonDocument>(TracingBuilder.Option.DocumentName);

            var traceObject = request.BuildTracingObject();

            logger.LogInformation($"get one trace message,trace id:{traceObject.Spans.FirstOrDefault().TraceId}");
            logger.LogInformation($"spans id:");
            logger.LogInformation(string.Join("\r\n", traceObject.Spans.Select(x => x.SpanId)));

            await collection.InsertOneAsync(traceObject.ToBsonDocument());

            PostSpansResponse postSpans = new PostSpansResponse();

            return(postSpans);
        }
        public static IEnumerable <Span> ConvertSpanFromJagger(PostSpansRequest jaegerSpanRequest)
        {
            var batch = jaegerSpanRequest.Batch;

            return(batch.Spans.Select(span =>
            {
                var process = span.Process ?? batch.Process;
                return new Span
                {
                    TraceID = ConvertByteStringToTracingId(span.TraceId),
                    SpanID = ConvertByteStringToSpanId(span.SpanId),
                    OperationName = span.OperationName,
                    Flags = span.Flags,
                    StartTime = span.StartTime.ToDateTimeOffset().ToUnixTimeMicroseconds(),
                    Duration = (long)span.Duration.Nanos / 1000,
                    Process = new Process
                    {
                        ServiceName = process.ServiceName,
                        Tags = ConvertKeyValuesToTags(process.Tags)
                    },
                    References = span.References.Select(@ref => new SpanReference
                    {
                        TraceID = ConvertByteStringToTracingId(@ref.TraceId),
                        SpanID = ConvertByteStringToSpanId(@ref.SpanId),
                        RefType = @ref.RefType switch
                        {
                            Jaeger.ApiV2.SpanRefType.ChildOf => SpanRefType.ChildOf,
                            Jaeger.ApiV2.SpanRefType.FollowsFrom => SpanRefType.FollowsFrom,
                            _ => throw new ArgumentOutOfRangeException()
                        }
                    }).ToArray(),
                    Tags = ConvertKeyValuesToTags(span.Tags),
                    Logs = span.Logs.Select(log => new SpanLog
                    {
                        Timestamp = log.Timestamp.ToDateTimeOffset(),
                        Fields = ConvertKeyValuesToTags(log.Fields)
                    }).ToArray(),

                    Warnings = span.Warnings.ToArray()
                };
            }).ToArray());