33
44#include < memory>
55#include < thread>
6- #include " opentelemetry/exporters/ostream/metric_exporter.h"
6+
7+ #include " opentelemetry/exporters/ostream/metric_exporter_factory.h"
78#include " opentelemetry/metrics/provider.h"
89#include " opentelemetry/sdk/metrics/aggregation/default_aggregation.h"
910#include " opentelemetry/sdk/metrics/aggregation/histogram_aggregation.h"
10- #include " opentelemetry/sdk/metrics/export/periodic_exporting_metric_reader .h"
11+ #include " opentelemetry/sdk/metrics/export/periodic_exporting_metric_reader_factory .h"
1112#include " opentelemetry/sdk/metrics/meter.h"
1213#include " opentelemetry/sdk/metrics/meter_provider.h"
14+ #include " opentelemetry/sdk/metrics/meter_provider_factory.h"
15+ #include " opentelemetry/sdk/metrics/push_metric_exporter.h"
16+ #include " opentelemetry/sdk/metrics/view/instrument_selector_factory.h"
17+ #include " opentelemetry/sdk/metrics/view/meter_selector_factory.h"
18+ #include " opentelemetry/sdk/metrics/view/view_factory.h"
1319
1420#ifdef BAZEL_BUILD
1521# include " examples/common/metrics_foo_library/foo_library.h"
1622#else
1723# include " metrics_foo_library/foo_library.h"
1824#endif
1925
20- namespace metric_sdk = opentelemetry::sdk::metrics;
26+ namespace metrics_sdk = opentelemetry::sdk::metrics;
2127namespace common = opentelemetry::common;
2228namespace exportermetrics = opentelemetry::exporter::metrics;
2329namespace metrics_api = opentelemetry::metrics;
@@ -27,59 +33,75 @@ namespace
2733
2834void InitMetrics (const std::string &name)
2935{
30- std::unique_ptr<metric_sdk::PushMetricExporter> exporter{
31- new exportermetrics::OStreamMetricExporter};
36+ auto exporter = exportermetrics::OStreamMetricExporterFactory::Create ();
3237
3338 std::string version{" 1.2.0" };
3439 std::string schema{" https://opentelemetry.io/schemas/1.2.0" };
3540
3641 // Initialize and set the global MeterProvider
37- metric_sdk ::PeriodicExportingMetricReaderOptions options;
42+ metrics_sdk ::PeriodicExportingMetricReaderOptions options;
3843 options.export_interval_millis = std::chrono::milliseconds (1000 );
3944 options.export_timeout_millis = std::chrono::milliseconds (500 );
40- std::unique_ptr<metric_sdk::MetricReader> reader{
41- new metric_sdk::PeriodicExportingMetricReader (std::move (exporter), options)};
42- auto provider = std::shared_ptr<metrics_api::MeterProvider>(new metric_sdk::MeterProvider ());
43- auto p = std::static_pointer_cast<metric_sdk::MeterProvider>(provider);
45+
46+ auto reader =
47+ metrics_sdk::PeriodicExportingMetricReaderFactory::Create (std::move (exporter), options);
48+
49+ auto u_provider = metrics_sdk::MeterProviderFactory::Create ();
50+ auto *p = static_cast <metrics_sdk::MeterProvider *>(u_provider.get ());
51+
4452 p->AddMetricReader (std::move (reader));
4553
4654 // counter view
4755 std::string counter_name = name + " _counter" ;
48- std::unique_ptr<metric_sdk::InstrumentSelector> instrument_selector{
49- new metric_sdk::InstrumentSelector (metric_sdk::InstrumentType::kCounter , counter_name)};
50- std::unique_ptr<metric_sdk::MeterSelector> meter_selector{
51- new metric_sdk::MeterSelector (name, version, schema)};
52- std::unique_ptr<metric_sdk::View> sum_view{
53- new metric_sdk::View{name, " description" , metric_sdk::AggregationType::kSum }};
56+
57+ auto instrument_selector = metrics_sdk::InstrumentSelectorFactory::Create (
58+ metrics_sdk::InstrumentType::kCounter , counter_name);
59+
60+ auto meter_selector = metrics_sdk::MeterSelectorFactory::Create (name, version, schema);
61+
62+ auto sum_view =
63+ metrics_sdk::ViewFactory::Create (name, " description" , metrics_sdk::AggregationType::kSum );
64+
5465 p->AddView (std::move (instrument_selector), std::move (meter_selector), std::move (sum_view));
5566
5667 // observable counter view
5768 std::string observable_counter_name = name + " _observable_counter" ;
58- std::unique_ptr<metric_sdk::InstrumentSelector> observable_instrument_selector{
59- new metric_sdk::InstrumentSelector (metric_sdk::InstrumentType::kObservableCounter ,
60- observable_counter_name)};
61- std::unique_ptr<metric_sdk::MeterSelector> observable_meter_selector{
62- new metric_sdk::MeterSelector (name, version, schema)};
63- std::unique_ptr<metric_sdk::View> observable_sum_view{
64- new metric_sdk::View{name, " test_description" , metric_sdk::AggregationType::kSum }};
69+
70+ auto observable_instrument_selector = metrics_sdk::InstrumentSelectorFactory::Create (
71+ metrics_sdk::InstrumentType::kObservableCounter , observable_counter_name);
72+
73+ auto observable_meter_selector = metrics_sdk::MeterSelectorFactory::Create (name, version, schema);
74+
75+ auto observable_sum_view = metrics_sdk::ViewFactory::Create (name, " test_description" ,
76+ metrics_sdk::AggregationType::kSum );
77+
6578 p->AddView (std::move (observable_instrument_selector), std::move (observable_meter_selector),
6679 std::move (observable_sum_view));
6780
6881 // histogram view
6982 std::string histogram_name = name + " _histogram" ;
70- std::unique_ptr<metric_sdk::InstrumentSelector> histogram_instrument_selector{
71- new metric_sdk::InstrumentSelector (metric_sdk::InstrumentType::kHistogram , histogram_name)};
72- std::unique_ptr<metric_sdk::MeterSelector> histogram_meter_selector{
73- new metric_sdk::MeterSelector (name, version, schema)};
74- std::shared_ptr<opentelemetry::sdk::metrics::AggregationConfig> aggregation_config{
75- new opentelemetry::sdk::metrics::HistogramAggregationConfig};
76- static_cast <opentelemetry::sdk::metrics::HistogramAggregationConfig *>(aggregation_config.get ())
77- ->boundaries_ = std::vector<double >{0.0 , 50.0 , 100.0 , 250.0 , 500.0 , 750.0 ,
78- 1000.0 , 2500.0 , 5000.0 , 10000.0 , 20000.0 };
79- std::unique_ptr<metric_sdk::View> histogram_view{new metric_sdk::View{
80- name, " description" , metric_sdk::AggregationType::kHistogram , aggregation_config}};
83+
84+ auto histogram_instrument_selector = metrics_sdk::InstrumentSelectorFactory::Create (
85+ metrics_sdk::InstrumentType::kHistogram , histogram_name);
86+
87+ auto histogram_meter_selector = metrics_sdk::MeterSelectorFactory::Create (name, version, schema);
88+
89+ auto histogram_aggregation_config = std::unique_ptr<metrics_sdk::HistogramAggregationConfig>(
90+ new metrics_sdk::HistogramAggregationConfig);
91+
92+ histogram_aggregation_config->boundaries_ = std::vector<double >{
93+ 0.0 , 50.0 , 100.0 , 250.0 , 500.0 , 750.0 , 1000.0 , 2500.0 , 5000.0 , 10000.0 , 20000.0 };
94+
95+ std::shared_ptr<metrics_sdk::AggregationConfig> aggregation_config (
96+ std::move (histogram_aggregation_config));
97+
98+ auto histogram_view = metrics_sdk::ViewFactory::Create (
99+ name, " description" , metrics_sdk::AggregationType::kHistogram , aggregation_config);
100+
81101 p->AddView (std::move (histogram_instrument_selector), std::move (histogram_meter_selector),
82102 std::move (histogram_view));
103+
104+ std::shared_ptr<opentelemetry::metrics::MeterProvider> provider (std::move (u_provider));
83105 metrics_api::Provider::SetMeterProvider (provider);
84106}
85107
0 commit comments