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); }
public override async Task <PostSpansResponse> PostSpans(PostSpansRequest request, ServerCallContext context) { Console.WriteLine("暂时不处理内容,所以报错"); return(new Jaeger.ApiV2.PostSpansResponse { }); }
public override async Task <PostSpansResponse> PostSpans(PostSpansRequest request, ServerCallContext context) { var spans = ExplorerSpanConverter.ConvertSpanFromJagger(request); await _processor.ProcessAsync(spans); return(new PostSpansResponse()); }
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()); }
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());