示例#1
0
            /// <summary>
            /// Creates a new client that connects directly to a given Wavefront service.
            /// </summary>
            /// <returns>A new <see cref="WavefrontDirectIngestionClient"/>.</returns>
            public WavefrontDirectIngestionClient Build()
            {
                var client = new WavefrontDirectIngestionClient
                {
                    batchSize          = batchSize,
                    metricsBuffer      = new BlockingCollection <string>(maxQueueSize),
                    histogramsBuffer   = new BlockingCollection <string>(maxQueueSize),
                    tracingSpansBuffer = new BlockingCollection <string>(maxQueueSize),
                    directService      = new DataIngesterService(server, token)
                };

                client.timer          = new System.Timers.Timer(flushIntervalSeconds * 1000);
                client.timer.Elapsed += client.Run;
                client.timer.Enabled  = true;

                return(client);
            }
            /// <summary>
            /// Creates a new client that connects directly to a given Wavefront service.
            /// </summary>
            /// <returns>A new <see cref="WavefrontDirectIngestionClient"/>.</returns>
            public WavefrontDirectIngestionClient Build()
            {
                loggerFactory = loggerFactory ?? Logging.LoggerFactory;

                var client = new WavefrontDirectIngestionClient
                {
                    batchSize          = batchSize,
                    metricsBuffer      = new BlockingCollection <string>(maxQueueSize),
                    histogramsBuffer   = new BlockingCollection <string>(maxQueueSize),
                    tracingSpansBuffer = new BlockingCollection <string>(maxQueueSize),
                    spanLogsBuffer     = new BlockingCollection <string>(maxQueueSize),
                    directService      = new DataIngesterService(server, token),
                    logger             = loggerFactory.CreateLogger <WavefrontDirectIngestionClient>()
                };

                client.timer          = new Timer(flushIntervalSeconds * 1000);
                client.timer.Elapsed += client.Run;
                client.timer.Enabled  = true;

                if (enableInternalMetrics)
                {
                    client.sdkMetricsRegistry = new WavefrontSdkMetricsRegistry.Builder(client)
                                                .Prefix(Constants.SdkMetricPrefix + ".core.sender.direct")
                                                .Tag(Constants.ProcessTagKey, Process.GetCurrentProcess().Id.ToString())
                                                .LoggerFactory(loggerFactory)
                                                .Build();
                }
                else
                {
                    client.sdkMetricsRegistry = new WavefrontSdkMetricsRegistry.Builder(null)
                                                .Prefix(Constants.SdkMetricPrefix + ".core.sender.direct")
                                                .Tag(Constants.ProcessTagKey, Process.GetCurrentProcess().Id.ToString())
                                                .LoggerFactory(loggerFactory)
                                                .Build();
                }

                double sdkVersion = Utils.GetSemVer(Assembly.GetExecutingAssembly());

                client.sdkMetricsRegistry.Gauge("version", () => sdkVersion);
                client.sdkMetricsRegistry.Gauge("points.queue.size",
                                                () => client.metricsBuffer.Count);
                client.sdkMetricsRegistry.Gauge("points.queue.remaining_capacity",
                                                () => client.metricsBuffer.BoundedCapacity - client.metricsBuffer.Count);
                client.pointsValid       = client.sdkMetricsRegistry.DeltaCounter("points.valid");
                client.pointsInvalid     = client.sdkMetricsRegistry.DeltaCounter("points.invalid");
                client.pointsDropped     = client.sdkMetricsRegistry.DeltaCounter("points.dropped");
                client.pointReportErrors =
                    client.sdkMetricsRegistry.DeltaCounter("points.report.errors");

                client.sdkMetricsRegistry.Gauge("histograms.queue.size",
                                                () => client.histogramsBuffer.Count);
                client.sdkMetricsRegistry.Gauge("histograms.queue.remaining_capacity",
                                                () => client.histogramsBuffer.BoundedCapacity - client.histogramsBuffer.Count);
                client.histogramsValid       = client.sdkMetricsRegistry.DeltaCounter("histograms.valid");
                client.histogramsInvalid     = client.sdkMetricsRegistry.DeltaCounter("histograms.invalid");
                client.histogramsDropped     = client.sdkMetricsRegistry.DeltaCounter("histograms.dropped");
                client.histogramReportErrors =
                    client.sdkMetricsRegistry.DeltaCounter("histograms.report.errors");

                client.sdkMetricsRegistry.Gauge("spans.queue.size",
                                                () => client.tracingSpansBuffer.Count);
                client.sdkMetricsRegistry.Gauge("spans.queue.remaining_capacity",
                                                () => client.tracingSpansBuffer.BoundedCapacity - client.tracingSpansBuffer.Count);
                client.spansValid       = client.sdkMetricsRegistry.DeltaCounter("spans.valid");
                client.spansInvalid     = client.sdkMetricsRegistry.DeltaCounter("spans.invalid");
                client.spansDropped     = client.sdkMetricsRegistry.DeltaCounter("spans.dropped");
                client.spanReportErrors =
                    client.sdkMetricsRegistry.DeltaCounter("spans.report.errors");

                client.sdkMetricsRegistry.Gauge("span_logs.queue.size",
                                                () => client.spanLogsBuffer.Count);
                client.sdkMetricsRegistry.Gauge("span_logs.queue.remaining_capacity",
                                                () => client.spanLogsBuffer.BoundedCapacity - client.spanLogsBuffer.Count);
                client.spanLogsValid       = client.sdkMetricsRegistry.DeltaCounter("span_logs.valid");
                client.spanLogsInvalid     = client.sdkMetricsRegistry.DeltaCounter("span_logs.invalid");
                client.spanLogsDropped     = client.sdkMetricsRegistry.DeltaCounter("span_logs.dropped");
                client.spanLogReportErrors =
                    client.sdkMetricsRegistry.DeltaCounter("span_logs.report.errors");

                return(client);
            }