/// <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); }