Пример #1
0
        public LineProtocolPayloadClient(LineProtocolClientOptions lineProtocolClientOptions, IInternalLogger logger = null)
        {
            _logger = logger;
            _lineProtocolClientOptions = lineProtocolClientOptions ?? throw new ArgumentNullException(nameof(lineProtocolClientOptions));
            _lineProtocolClient        = new InternalLineProtocolClient(
                _lineProtocolClientOptions.Server, _lineProtocolClientOptions.Database,
                _lineProtocolClientOptions.UserName, _lineProtocolClientOptions.Password);
            var interval = lineProtocolClientOptions.Interval.HasValue && lineProtocolClientOptions.Interval.Value > 0 ? lineProtocolClientOptions.Interval.Value : _defaultInterval;

            _blockCapacity = lineProtocolClientOptions.BlockCapacity.GetValueOrDefault(_defaultBlockCapacity);
            _pointMap      = new ConcurrentDictionary <PointState, object>();
            _flushTimer    = new Timer(async state => await FlushCallback(state), null, TimeSpan.FromSeconds(interval), TimeSpan.FromSeconds(interval));
            _logger?.LogInformation("Start LineProtocolCollector.");
        }
        public static ApmComponentOptions AddLineProtocolCollector(this ApmComponentOptions apmComponent, Action <LineProtocolClientOptions> configure)
        {
            if (apmComponent == null)
            {
                throw new ArgumentNullException(nameof(apmComponent));
            }
            if (configure == null)
            {
                throw new ArgumentNullException(nameof(configure));
            }
            apmComponent.Services.AddType <IPayloadClientProvider, LineProtocolPayloadClientProvider>(Lifetime.Singleton);
            var lineProtocolClientOptions = new LineProtocolClientOptions();

            configure(lineProtocolClientOptions);
            apmComponent.Services.AddInstance <IOptionAccessor <LineProtocolClientOptions> >(lineProtocolClientOptions);
            return(apmComponent);
        }