Skip to content

Commit 57f63d9

Browse files
committed
merged from upstream
2 parents a620801 + 21801c2 commit 57f63d9

File tree

5 files changed

+73
-23
lines changed

5 files changed

+73
-23
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ Increment the:
3535
* [CONFIGURATION] File configuration - tls
3636
[#3726](https://github.com/open-telemetry/opentelemetry-cpp/pull/3726)
3737

38+
* [CONFIGURATION] File configuration - console metric exporter
39+
[#3734](https://github.com/open-telemetry/opentelemetry-cpp/pull/3734)
40+
3841
New Features:
3942

4043
* [CONFIGURATION] Implement declarative configuration (config.yaml)

exporters/ostream/src/console_push_metric_builder.cc

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
// Copyright The OpenTelemetry Authors
22
// SPDX-License-Identifier: Apache-2.0
33

4+
#include <iostream>
45
#include <memory>
56
#include <utility>
67

78
#include "opentelemetry/exporters/ostream/console_push_metric_builder.h"
89
#include "opentelemetry/exporters/ostream/metric_exporter_factory.h"
10+
#include "opentelemetry/sdk/common/global_log_handler.h"
911
#include "opentelemetry/sdk/configuration/console_push_metric_exporter_builder.h"
1012
#include "opentelemetry/sdk/configuration/console_push_metric_exporter_configuration.h"
1113
#include "opentelemetry/sdk/configuration/registry.h"
14+
#include "opentelemetry/sdk/configuration/temporality_preference.h"
15+
#include "opentelemetry/sdk/metrics/instruments.h"
1216
#include "opentelemetry/sdk/metrics/push_metric_exporter.h"
1317
#include "opentelemetry/version.h"
1418

@@ -25,10 +29,30 @@ void ConsolePushMetricBuilder::Register(opentelemetry::sdk::configuration::Regis
2529
}
2630

2731
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> ConsolePushMetricBuilder::Build(
28-
const opentelemetry::sdk::configuration::ConsolePushMetricExporterConfiguration * /* model */)
29-
const
32+
const opentelemetry::sdk::configuration::ConsolePushMetricExporterConfiguration *model) const
3033
{
31-
return OStreamMetricExporterFactory::Create();
34+
sdk::metrics::AggregationTemporality aggregation_temporality;
35+
36+
switch (model->temporality_preference)
37+
{
38+
case opentelemetry::sdk::configuration::TemporalityPreference::delta:
39+
aggregation_temporality = sdk::metrics::AggregationTemporality::kDelta;
40+
break;
41+
case opentelemetry::sdk::configuration::TemporalityPreference::low_memory:
42+
/*
43+
* FIXME: OStreamMetricExporter does not support "low_memory"
44+
* temporality
45+
*/
46+
OTEL_INTERNAL_LOG_WARN("[Console Exporter] TemporalityPreference::low_memory not supported");
47+
aggregation_temporality = sdk::metrics::AggregationTemporality::kCumulative;
48+
break;
49+
case opentelemetry::sdk::configuration::TemporalityPreference::cumulative:
50+
default:
51+
aggregation_temporality = sdk::metrics::AggregationTemporality::kCumulative;
52+
break;
53+
};
54+
55+
return OStreamMetricExporterFactory::Create(std::cout, aggregation_temporality);
3256
}
3357

3458
} // namespace metrics

install/test/src/test_exporters_ostream_builder.cc

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,14 @@ TEST(ExportersOstreamBuilderInstall, ConsolePushMetricBuilder)
1919
{
2020
auto builder = std::make_unique<opentelemetry::exporter::metrics::ConsolePushMetricBuilder>();
2121
ASSERT_TRUE(builder != nullptr);
22-
auto exporter = builder->Build(nullptr);
22+
23+
opentelemetry::sdk::configuration::ConsolePushMetricExporterConfiguration model;
24+
model.temporality_preference =
25+
opentelemetry::sdk::configuration::TemporalityPreference::cumulative;
26+
model.default_histogram_aggregation =
27+
opentelemetry::sdk::configuration::DefaultHistogramAggregation::explicit_bucket_histogram;
28+
29+
auto exporter = builder->Build(&model);
2330
ASSERT_TRUE(exporter != nullptr);
2431
}
2532

sdk/include/opentelemetry/sdk/configuration/console_push_metric_exporter_configuration.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,31 @@
44
#pragma once
55

66
#include "opentelemetry/version.h"
7+
#include "opentelemetry/sdk/configuration/default_histogram_aggregation.h"
78
#include "opentelemetry/sdk/configuration/headers_configuration.h"
89
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h"
910
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h"
11+
#include "opentelemetry/sdk/configuration/temporality_preference.h"
1012

1113
OPENTELEMETRY_BEGIN_NAMESPACE
1214
namespace sdk
1315
{
1416
namespace configuration
1517
{
1618

17-
// YAML-SCHEMA: schema/common.json
18-
// YAML-NODE: Console
19+
// YAML-SCHEMA: schema/meter_provider.json
20+
// YAML-NODE: ConsoleMetricExporter
1921
class ConsolePushMetricExporterConfiguration : public PushMetricExporterConfiguration
2022
{
2123
public:
2224
void Accept(PushMetricExporterConfigurationVisitor *visitor) const override
2325
{
2426
visitor->VisitConsole(this);
2527
}
28+
29+
TemporalityPreference temporality_preference{TemporalityPreference::cumulative};
30+
DefaultHistogramAggregation default_histogram_aggregation{
31+
DefaultHistogramAggregation::explicit_bucket_histogram};
2632
};
2733

2834
} // namespace configuration

sdk/src/configuration/configuration_parser.cc

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -256,8 +256,8 @@ ConfigurationParser::ParseOtlpHttpLogRecordExporterConfiguration(
256256
model->compression = node->GetString("compression", "");
257257
model->timeout = node->GetInteger("timeout", 10000);
258258

259-
std::string encoding = node->GetString("encoding", "protobuf");
260-
model->encoding = ParseOtlpHttpEncoding(node, encoding);
259+
const std::string encoding = node->GetString("encoding", "protobuf");
260+
model->encoding = ParseOtlpHttpEncoding(node, encoding);
261261

262262
return model;
263263
}
@@ -565,16 +565,17 @@ ConfigurationParser::ParseOtlpHttpPushMetricExporterConfiguration(
565565
model->compression = node->GetString("compression", "");
566566
model->timeout = node->GetInteger("timeout", 10000);
567567

568-
std::string temporality_preference = node->GetString("temporality_preference", "cumulative");
569-
model->temporality_preference = ParseTemporalityPreference(node, temporality_preference);
568+
const std::string temporality_preference =
569+
node->GetString("temporality_preference", "cumulative");
570+
model->temporality_preference = ParseTemporalityPreference(node, temporality_preference);
570571

571-
std::string default_histogram_aggregation =
572+
const std::string default_histogram_aggregation =
572573
node->GetString("default_histogram_aggregation", "explicit_bucket_histogram");
573574
model->default_histogram_aggregation =
574575
ParseDefaultHistogramAggregation(node, default_histogram_aggregation);
575576

576-
std::string encoding = node->GetString("encoding", "protobuf");
577-
model->encoding = ParseOtlpHttpEncoding(node, encoding);
577+
const std::string encoding = node->GetString("encoding", "protobuf");
578+
model->encoding = ParseOtlpHttpEncoding(node, encoding);
578579

579580
return model;
580581
}
@@ -604,10 +605,11 @@ ConfigurationParser::ParseOtlpGrpcPushMetricExporterConfiguration(
604605
model->compression = node->GetString("compression", "");
605606
model->timeout = node->GetInteger("timeout", 10000);
606607

607-
std::string temporality_preference = node->GetString("temporality_preference", "cumulative");
608-
model->temporality_preference = ParseTemporalityPreference(node, temporality_preference);
608+
const std::string temporality_preference =
609+
node->GetString("temporality_preference", "cumulative");
610+
model->temporality_preference = ParseTemporalityPreference(node, temporality_preference);
609611

610-
std::string default_histogram_aggregation =
612+
const std::string default_histogram_aggregation =
611613
node->GetString("default_histogram_aggregation", "explicit_bucket_histogram");
612614
model->default_histogram_aggregation =
613615
ParseDefaultHistogramAggregation(node, default_histogram_aggregation);
@@ -624,10 +626,11 @@ ConfigurationParser::ParseOtlpFilePushMetricExporterConfiguration(
624626

625627
model->output_stream = node->GetString("output_stream", "");
626628

627-
std::string temporality_preference = node->GetString("temporality_preference", "cumulative");
628-
model->temporality_preference = ParseTemporalityPreference(node, temporality_preference);
629+
const std::string temporality_preference =
630+
node->GetString("temporality_preference", "cumulative");
631+
model->temporality_preference = ParseTemporalityPreference(node, temporality_preference);
629632

630-
std::string default_histogram_aggregation =
633+
const std::string default_histogram_aggregation =
631634
node->GetString("default_histogram_aggregation", "explicit_bucket_histogram");
632635
model->default_histogram_aggregation =
633636
ParseDefaultHistogramAggregation(node, default_histogram_aggregation);
@@ -637,11 +640,18 @@ ConfigurationParser::ParseOtlpFilePushMetricExporterConfiguration(
637640

638641
std::unique_ptr<ConsolePushMetricExporterConfiguration>
639642
ConfigurationParser::ParseConsolePushMetricExporterConfiguration(
640-
const std::unique_ptr<DocumentNode> & /* node */) const
643+
const std::unique_ptr<DocumentNode> &node) const
641644
{
642645
auto model = std::make_unique<ConsolePushMetricExporterConfiguration>();
643646

644-
// FIXME-CONFIG: https://github.com/open-telemetry/opentelemetry-configuration/issues/242
647+
const std::string temporality_preference =
648+
node->GetString("temporality_preference", "cumulative");
649+
model->temporality_preference = ParseTemporalityPreference(node, temporality_preference);
650+
651+
const std::string default_histogram_aggregation =
652+
node->GetString("default_histogram_aggregation", "explicit_bucket_histogram");
653+
model->default_histogram_aggregation =
654+
ParseDefaultHistogramAggregation(node, default_histogram_aggregation);
645655

646656
return model;
647657
}
@@ -1479,8 +1489,8 @@ ConfigurationParser::ParseOtlpHttpSpanExporterConfiguration(
14791489
model->compression = node->GetString("compression", "");
14801490
model->timeout = node->GetInteger("timeout", 10000);
14811491

1482-
std::string encoding = node->GetString("encoding", "protobuf");
1483-
model->encoding = ParseOtlpHttpEncoding(node, encoding);
1492+
const std::string encoding = node->GetString("encoding", "protobuf");
1493+
model->encoding = ParseOtlpHttpEncoding(node, encoding);
14841494

14851495
return model;
14861496
}

0 commit comments

Comments
 (0)