示例#1
0
        /// <summary>Snippet for CreateSpanAsync</summary>
        public async Task CreateSpanRequestObjectAsync()
        {
            // Snippet: CreateSpanAsync(Span, CallSettings)
            // Additional: CreateSpanAsync(Span, CancellationToken)
            // Create client
            TraceServiceClient traceServiceClient = await TraceServiceClient.CreateAsync();

            // Initialize request argument(s)
            Span request = new Span
            {
                SpanName                = SpanName.FromProjectTraceSpan("[PROJECT]", "[TRACE]", "[SPAN]"),
                SpanId                  = "",
                ParentSpanId            = "",
                DisplayName             = new TruncatableString(),
                StartTime               = new Timestamp(),
                EndTime                 = new Timestamp(),
                Attributes              = new Span.Types.Attributes(),
                StackTrace              = new StackTrace(),
                TimeEvents              = new Span.Types.TimeEvents(),
                Links                   = new Span.Types.Links(),
                Status                  = new Status(),
                SameProcessAsParentSpan = false,
                ChildSpanCount          = 0,
            };
            // Make the request
            Span response = await traceServiceClient.CreateSpanAsync(request);

            // End snippet
        }
        /// <summary>
        /// Creates a <see cref="SimpleManagedTracer"/> with a <see cref="GrpcTraceConsumer"/>.
        /// </summary>
        private SimpleManagedTracer CreateTracer()
        {
            string traceId    = _traceIdFactory.NextId();
            var    traceProto = new TraceProto {
                ProjectId = _projectId, TraceId = traceId
            };
            var consumer = new GrpcTraceConsumer(TraceServiceClient.CreateAsync());

            return(SimpleManagedTracer.Create(consumer, traceProto, null));
        }
        /// <summary>Snippet for ListTracesAsync</summary>
        public async Task ListTracesRequestObjectAsync()
        {
            // Snippet: ListTracesAsync(ListTracesRequest, CallSettings)
            // Create client
            TraceServiceClient traceServiceClient = await TraceServiceClient.CreateAsync();

            // Initialize request argument(s)
            ListTracesRequest request = new ListTracesRequest
            {
                ProjectId = "",
                View      = ListTracesRequest.Types.ViewType.Unspecified,
                StartTime = new Timestamp(),
                EndTime   = new Timestamp(),
                Filter    = "",
                OrderBy   = "",
            };
            // Make the request
            PagedAsyncEnumerable <ListTracesResponse, Trace> response = traceServiceClient.ListTracesAsync(request);

            // Iterate over all response items, lazily performing RPCs as required
            await response.ForEachAsync((Trace item) =>
            {
                // Do something with each item
                Console.WriteLine(item);
            });

            // Or iterate over pages (of server-defined size), performing one RPC per page
            await response.AsRawResponses().ForEachAsync((ListTracesResponse page) =>
            {
                // Do something with each page of items
                Console.WriteLine("A page of results:");
                foreach (Trace item in page)
                {
                    // Do something with each item
                    Console.WriteLine(item);
                }
            });

            // Or retrieve a single page of known size (unless it's the final page), performing as many RPCs as required
            int          pageSize   = 10;
            Page <Trace> singlePage = await response.ReadPageAsync(pageSize);

            // Do something with the page of items
            Console.WriteLine($"A page of {pageSize} results (unless it's the final page):");
            foreach (Trace item in singlePage)
            {
                // Do something with each item
                Console.WriteLine(item);
            }
            // Store the pageToken, for when the next page is required.
            string nextPageToken = singlePage.NextPageToken;
            // End snippet
        }
示例#4
0
        private CloudTrace(string projectId, TraceConfiguration config = null, Task <TraceServiceClient> client = null)
        {
            _projectId = GaxPreconditions.CheckNotNull(projectId, nameof(projectId));

            // Create the default values if not set.
            client = client ?? TraceServiceClient.CreateAsync();
            config = config ?? TraceConfiguration.Create();

            _traceIdfactory    = TraceIdFactory.Create();
            _bufferingConsumer = BufferingTraceConsumer.Create(new GrpcTraceConsumer(client));
            _rateFactory       = RateLimitingTraceOptionsFactory.Create(config);
            _headerFactory     = TraceHeaderTraceOptionsFactory.Create();
        }
        private CloudTrace(string projectId, TraceConfiguration config = null, Task <TraceServiceClient> client = null)
        {
            GaxPreconditions.CheckNotNull(projectId, nameof(projectId));

            // Create the default values if not set.
            client = client ?? TraceServiceClient.CreateAsync();
            config = config ?? TraceConfiguration.Create();

            var consumer = ConsumerFactory <TraceProto> .GetConsumer(
                new GrpcTraceConsumer(client), MessageSizer <TraceProto> .GetSize, config.BufferOptions);

            _tracerFactory = new ManagedTracerFactory(projectId, consumer,
                                                      RateLimitingTraceOptionsFactory.Create(config), TraceIdFactory.Create());
        }
        /// <summary>Snippet for PatchTracesAsync</summary>
        public async Task PatchTracesAsync()
        {
            // Snippet: PatchTracesAsync(string, Traces, CallSettings)
            // Additional: PatchTracesAsync(string, Traces, CancellationToken)
            // Create client
            TraceServiceClient traceServiceClient = await TraceServiceClient.CreateAsync();

            // Initialize request argument(s)
            string projectId = "";
            Traces traces    = new Traces();
            // Make the request
            await traceServiceClient.PatchTracesAsync(projectId, traces);

            // End snippet
        }
        /// <summary>Snippet for GetTraceAsync</summary>
        public async Task GetTraceAsync()
        {
            // Snippet: GetTraceAsync(string, string, CallSettings)
            // Additional: GetTraceAsync(string, string, CancellationToken)
            // Create client
            TraceServiceClient traceServiceClient = await TraceServiceClient.CreateAsync();

            // Initialize request argument(s)
            string projectId = "";
            string traceId   = "";
            // Make the request
            Trace response = await traceServiceClient.GetTraceAsync(projectId, traceId);

            // End snippet
        }
示例#8
0
        /// <summary>Snippet for BatchWriteSpansAsync</summary>
        public async Task BatchWriteSpansAsync()
        {
            // Snippet: BatchWriteSpansAsync(string, IEnumerable<Span>, CallSettings)
            // Additional: BatchWriteSpansAsync(string, IEnumerable<Span>, CancellationToken)
            // Create client
            TraceServiceClient traceServiceClient = await TraceServiceClient.CreateAsync();

            // Initialize request argument(s)
            string             name  = "projects/[PROJECT]";
            IEnumerable <Span> spans = new Span[] { new Span(), };
            // Make the request
            await traceServiceClient.BatchWriteSpansAsync(name, spans);

            // End snippet
        }
示例#9
0
        /// <summary>Snippet for BatchWriteSpansAsync</summary>
        public async Task BatchWriteSpansResourceNamesAsync()
        {
            // Snippet: BatchWriteSpansAsync(ProjectName, IEnumerable<Span>, CallSettings)
            // Additional: BatchWriteSpansAsync(ProjectName, IEnumerable<Span>, CancellationToken)
            // Create client
            TraceServiceClient traceServiceClient = await TraceServiceClient.CreateAsync();

            // Initialize request argument(s)
            ProjectName        name  = ProjectName.FromProject("[PROJECT]");
            IEnumerable <Span> spans = new Span[] { new Span(), };
            // Make the request
            await traceServiceClient.BatchWriteSpansAsync(name, spans);

            // End snippet
        }
        /// <summary>Snippet for BatchWriteSpansAsync</summary>
        public async Task BatchWriteSpansAsync()
        {
            // Snippet: BatchWriteSpansAsync(ProjectName,IEnumerable<apis::Span>,CallSettings)
            // Additional: BatchWriteSpansAsync(ProjectName,IEnumerable<apis::Span>,CancellationToken)
            // Create client
            TraceServiceClient traceServiceClient = await TraceServiceClient.CreateAsync();

            // Initialize request argument(s)
            ProjectName name = new ProjectName("[PROJECT]");
            IEnumerable <apis::Span> spans = new List <apis::Span>();
            // Make the request
            await traceServiceClient.BatchWriteSpansAsync(name, spans);

            // End snippet
        }
        public async Task PatchTracesAsync_RequestObject()
        {
            // Snippet: PatchTracesAsync(PatchTracesRequest,CallSettings)
            // Create client
            TraceServiceClient traceServiceClient = await TraceServiceClient.CreateAsync();

            // Initialize request argument(s)
            PatchTracesRequest request = new PatchTracesRequest
            {
                ProjectId = "",
                Traces    = new Traces(),
            };
            // Make the request
            await traceServiceClient.PatchTracesAsync(request);

            // End snippet
        }
        public async Task GetTraceAsync_RequestObject()
        {
            // Snippet: GetTraceAsync(GetTraceRequest,CallSettings)
            // Create client
            TraceServiceClient traceServiceClient = await TraceServiceClient.CreateAsync();

            // Initialize request argument(s)
            GetTraceRequest request = new GetTraceRequest
            {
                ProjectId = "",
                TraceId   = "",
            };
            // Make the request
            Trace response = await traceServiceClient.GetTraceAsync(request);

            // End snippet
        }
        /// <summary>Snippet for BatchWriteSpansAsync</summary>
        public async Task BatchWriteSpansAsync_RequestObject()
        {
            // Snippet: BatchWriteSpansAsync(BatchWriteSpansRequest,CallSettings)
            // Create client
            TraceServiceClient traceServiceClient = await TraceServiceClient.CreateAsync();

            // Initialize request argument(s)
            BatchWriteSpansRequest request = new BatchWriteSpansRequest
            {
                ProjectName = new ProjectName("[PROJECT]"),
                Spans       = { },
            };
            // Make the request
            await traceServiceClient.BatchWriteSpansAsync(request);

            // End snippet
        }
示例#14
0
        /// <summary>Snippet for BatchWriteSpansAsync</summary>
        public async Task BatchWriteSpansRequestObjectAsync()
        {
            // Snippet: BatchWriteSpansAsync(BatchWriteSpansRequest, CallSettings)
            // Additional: BatchWriteSpansAsync(BatchWriteSpansRequest, CancellationToken)
            // Create client
            TraceServiceClient traceServiceClient = await TraceServiceClient.CreateAsync();

            // Initialize request argument(s)
            BatchWriteSpansRequest request = new BatchWriteSpansRequest
            {
                ProjectName = ProjectName.FromProject("[PROJECT]"),
                Spans       = { new Span(), },
            };
            // Make the request
            await traceServiceClient.BatchWriteSpansAsync(request);

            // End snippet
        }
        /// <summary>Snippet for CreateSpanAsync</summary>
        public async Task CreateSpanAsync_RequestObject()
        {
            // Snippet: CreateSpanAsync(Span,CallSettings)
            // Create client
            TraceServiceClient traceServiceClient = await TraceServiceClient.CreateAsync();

            // Initialize request argument(s)
            Span request = new Span
            {
                SpanName    = new SpanName("[PROJECT]", "[TRACE]", "[SPAN]"),
                SpanId      = "",
                DisplayName = new TruncatableString(),
                StartTime   = new Timestamp(),
                EndTime     = new Timestamp(),
            };
            // Make the request
            Span response = await traceServiceClient.CreateSpanAsync(request);

            // End snippet
        }
        /// <summary>
        /// Adds the needed services for Google Cloud Tracing. Used with <see cref="UseGoogleTrace"/>.
        /// </summary>
        /// <param name="services">The service collection. Cannot be null.</param>
        /// <param name="projectId">The Google Cloud Platform project ID. Cannot be null.</param>
        /// <param name="config">Optional trace configuration, if unset the default will be used.</param>
        /// <param name="clientTask">Optional task which produces the Trace client, if
        ///     unset the default will be used.</param>
        public static void AddGoogleTrace(
            this IServiceCollection services, string projectId,
            TraceConfiguration config = null, Task <TraceServiceClient> clientTask = null)
        {
            GaxPreconditions.CheckNotNull(services, nameof(services));
            GaxPreconditions.CheckNotNull(projectId, nameof(projectId));

            clientTask = clientTask ?? TraceServiceClient.CreateAsync();
            config     = config ?? TraceConfiguration.Create();

            IConsumer <TraceProto> consumer = ConsumerFactory <TraceProto> .GetConsumer(
                new GrpcTraceConsumer(clientTask), MessageSizer <TraceProto> .GetSize, config.BufferOptions);

            var tracerFactory = new ManagedTracerFactory(projectId, consumer,
                                                         RateLimitingTraceOptionsFactory.Create(config), TraceIdFactory.Create());

            services.AddSingleton <IManagedTracerFactory>(tracerFactory);
            services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();

            services.AddScoped(CreateTraceHeaderContext);
            services.AddScoped(CreateManagedTracer);
        }