public Task WriteAsync(HttpContext context, MetricsDataValueSource metricsData, CancellationToken token = default(CancellationToken))
        {
            var payloadBuilder = new BulkPayloadBuilder(
                _index,
                Constants.ElasticsearchDefaults.MetricNameFormatter,
                Constants.ElasticsearchDefaults.MetricTagValueFormatter,
                new MetricValueDataKeys(Constants.ElasticsearchDefaults.CustomHistogramDataKeys, Constants.ElasticsearchDefaults.CustomMeterDataKeys));

            var formatter = new MetricDataValueSourceFormatter();

            formatter.Build(metricsData, payloadBuilder);

            return(context.Response.WriteAsync(payloadBuilder.PayloadFormatted(), token));
        }
コード例 #2
0
        public IMetricReporter CreateMetricReporter(string name, ILoggerFactory loggerFactory)
        {
            var lineProtocolClient = new ElasticSearchBulkClient(
                loggerFactory,
                _settings.ElasticSearchSettings,
                _settings.HttpPolicy);
            var payloadBuilder = new BulkPayloadBuilder(_settings.ElasticSearchSettings, _settings.MetricTagValueFormatter);

            return(new ReportRunner <BulkPayload>(
                       async p => await lineProtocolClient.WriteAsync(p.Payload()),
                       payloadBuilder,
                       _settings.ReportInterval,
                       name,
                       loggerFactory,
                       _settings.MetricNameFormatter,
                       _settings.DataKeys));
        }