Example #1
0
        private Telemetry CreateTelemetry(
            MetricSerializer metricSerializer,
            StatsdConfig config,
            string[] globalTags,
            DogStatsdEndPoint dogStatsdEndPoint,
            ITransport transport)
        {
            var telemetryFlush = config.Advanced.TelemetryFlushInterval;

            if (telemetryFlush.HasValue)
            {
                var        assembly = typeof(StatsdBuilder).GetTypeInfo().Assembly;
                var        version  = assembly.GetName().Version.ToString();
                var        optionalTelemetryEndPoint = config.Advanced.OptionalTelemetryEndPoint;
                ITransport telemetryTransport        = transport;
                if (optionalTelemetryEndPoint != null && !dogStatsdEndPoint.AreEquals(optionalTelemetryEndPoint))
                {
                    telemetryTransport = CreateTransport(optionalTelemetryEndPoint, config);
                }

                return(_factory.CreateTelemetry(metricSerializer, version, telemetryFlush.Value, telemetryTransport, globalTags));
            }

            // Telemetry is not enabled
            return(new Telemetry());
        }
        public Telemetry(
            MetricSerializer metricSerializer,
            string assemblyVersion,
            TimeSpan flushInterval,
            ITransport transport,
            string[] globalTags)
        {
            _optionalMetricSerializer = metricSerializer;
            _optionalTransport        = transport;

            var transportStr = transport.TelemetryClientTransport;
            var optionalTags = new List <string> {
                "client:csharp", $"client_version:{assemblyVersion}", $"client_transport:{transportStr}"
            };

            optionalTags.AddRange(globalTags);
            _optionalTags = optionalTags.ToArray();

            _optionalTimer = new Timer(
                _ => Flush(),
                null,
                flushInterval,
                flushInterval);
        }