Exemple #1
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddHttpClient();
            services.AddControllers().AddNewtonsoftJson();

            services.AddSingleton <IMetricFormatter <string>, LineFormatter>();
            services.AddSingleton <IMetricConverter, MetricConverter>();

            services.AddSingleton(provider =>
            {
                var influxDbConfig = new VictoriaConfig();
                Configuration.GetSection("VictoriaMetrics").Bind(influxDbConfig);
                return(influxDbConfig);
            });


            services.AddSingleton(provider =>
            {
                var workerConfig = new WorkerConfig();
                Configuration.GetSection("Worker").Bind(workerConfig);
                return(workerConfig);
            });

            services.AddHttpClient <IVictoriaMetricClient, VictoriaMetricClient>()
            .SetHandlerLifetime(TimeSpan.FromHours(1))         //Set lifetime to five minutes
            .AddPolicyHandler(GetRetryPolicy());
            services.AddSingleton <IIngestWorker, IngestWorker>();
        }
 public VictoriaMetricClient(IMetricFormatter <string> metricFormatter, VictoriaConfig config, IMetricConverter converter, HttpClient httpClient)
 {
     _metricFormatter        = metricFormatter;
     _converter              = converter;
     _httpClient             = httpClient;
     _httpClient.BaseAddress = new Uri(config.Uri);
     _chunkSize              = config.ChunkSize < 50 ? 50 : config.ChunkSize;
 }