Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ Increment the:
* [BUILD] Upgrade to opentelemetry-proto 1.8.0
[#3730](https://github.com/open-telemetry/opentelemetry-cpp/pull/3730)

* [CONFIGURATION] File configuration - console metric exporter
[#3734](https://github.com/open-telemetry/opentelemetry-cpp/pull/3734)

New Features:

* [CONFIGURATION] Implement declarative configuration (config.yaml)
Expand Down
22 changes: 19 additions & 3 deletions exporters/ostream/src/console_push_metric_builder.cc
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#include <iostream>
#include <memory>
#include <utility>

Expand All @@ -9,6 +10,8 @@
#include "opentelemetry/sdk/configuration/console_push_metric_exporter_builder.h"
#include "opentelemetry/sdk/configuration/console_push_metric_exporter_configuration.h"
#include "opentelemetry/sdk/configuration/registry.h"
#include "opentelemetry/sdk/configuration/temporality_preference.h"
#include "opentelemetry/sdk/metrics/instruments.h"
#include "opentelemetry/sdk/metrics/push_metric_exporter.h"
#include "opentelemetry/version.h"

Expand All @@ -25,10 +28,23 @@ void ConsolePushMetricBuilder::Register(opentelemetry::sdk::configuration::Regis
}

std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> ConsolePushMetricBuilder::Build(
const opentelemetry::sdk::configuration::ConsolePushMetricExporterConfiguration * /* model */)
const
const opentelemetry::sdk::configuration::ConsolePushMetricExporterConfiguration *model) const
{
return OStreamMetricExporterFactory::Create();
sdk::metrics::AggregationTemporality aggregation_temporality;

switch (model->temporality_preference)
{
case opentelemetry::sdk::configuration::TemporalityPreference::delta:
aggregation_temporality = sdk::metrics::AggregationTemporality::kDelta;
break;
case opentelemetry::sdk::configuration::TemporalityPreference::cumulative:
case opentelemetry::sdk::configuration::TemporalityPreference::low_memory:
Comment thread
marcalff marked this conversation as resolved.
default:
aggregation_temporality = sdk::metrics::AggregationTemporality::kCumulative;
break;
};

return OStreamMetricExporterFactory::Create(std::cout, aggregation_temporality);
}

} // namespace metrics
Expand Down
9 changes: 8 additions & 1 deletion install/test/src/test_exporters_ostream_builder.cc
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,14 @@ TEST(ExportersOstreamBuilderInstall, ConsolePushMetricBuilder)
{
auto builder = std::make_unique<opentelemetry::exporter::metrics::ConsolePushMetricBuilder>();
ASSERT_TRUE(builder != nullptr);
auto exporter = builder->Build(nullptr);

opentelemetry::sdk::configuration::ConsolePushMetricExporterConfiguration model;
model.temporality_preference =
opentelemetry::sdk::configuration::TemporalityPreference::cumulative;
model.default_histogram_aggregation =
opentelemetry::sdk::configuration::DefaultHistogramAggregation::explicit_bucket_histogram;

auto exporter = builder->Build(&model);
ASSERT_TRUE(exporter != nullptr);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@

#pragma once

#include "opentelemetry/sdk/configuration/default_histogram_aggregation.h"
#include "opentelemetry/sdk/configuration/headers_configuration.h"
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h"
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h"
#include "opentelemetry/sdk/configuration/temporality_preference.h"
#include "opentelemetry/version.h"

OPENTELEMETRY_BEGIN_NAMESPACE
Expand All @@ -14,15 +16,19 @@ namespace sdk
namespace configuration
{

// YAML-SCHEMA: schema/common.json
// YAML-NODE: Console
// YAML-SCHEMA: schema/meter_provider.json
// YAML-NODE: ConsoleMetricExporter
class ConsolePushMetricExporterConfiguration : public PushMetricExporterConfiguration
{
public:
void Accept(PushMetricExporterConfigurationVisitor *visitor) const override
{
visitor->VisitConsole(this);
}

TemporalityPreference temporality_preference{TemporalityPreference::cumulative};
DefaultHistogramAggregation default_histogram_aggregation{
DefaultHistogramAggregation::explicit_bucket_histogram};
};

} // namespace configuration
Expand Down
10 changes: 8 additions & 2 deletions sdk/src/configuration/configuration_parser.cc
Original file line number Diff line number Diff line change
Expand Up @@ -601,11 +601,17 @@ ConfigurationParser::ParseOtlpFilePushMetricExporterConfiguration(

std::unique_ptr<ConsolePushMetricExporterConfiguration>
ConfigurationParser::ParseConsolePushMetricExporterConfiguration(
const std::unique_ptr<DocumentNode> & /* node */) const
const std::unique_ptr<DocumentNode> &node) const
{
auto model = std::make_unique<ConsolePushMetricExporterConfiguration>();

// FIXME-CONFIG: https://github.com/open-telemetry/opentelemetry-configuration/issues/242
std::string temporality_preference = node->GetString("temporality_preference", "cumulative");
Comment thread
marcalff marked this conversation as resolved.
Outdated
model->temporality_preference = ParseTemporalityPreference(node, temporality_preference);

std::string default_histogram_aggregation =
node->GetString("default_histogram_aggregation", "explicit_bucket_histogram");
model->default_histogram_aggregation =
ParseDefaultHistogramAggregation(node, default_histogram_aggregation);

return model;
}
Expand Down
Loading