Skip to content

Commit

Permalink
[Metrics SDK] Add support for Pull Metric Reader (open-telemetry#1701)
Browse files Browse the repository at this point in the history
  • Loading branch information
esigo authored and yxue committed Dec 5, 2022
1 parent 7d90e47 commit e640b89
Show file tree
Hide file tree
Showing 17 changed files with 150 additions and 2 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ Increment the:
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
<<<<<<< HEAD
## [1.8.1] 2022-12-04

* [ETW Exporter] Tail based sampling support [#1780](https://github.com/open-telemetry/opentelemetry-cpp/pull/1780)
Expand Down Expand Up @@ -278,6 +279,8 @@ update the semantic convention in instrumentation library is needed.
>>>>>>> 92618117 (Prepare v1.6.1 release (#1630))
=======
>>>>>>> cf9ebb02 (Add CMake OTELCPP_MAINTAINER_MODE (#1650))
=======
>>>>>>> c6552dca ([Metrics SDK] Add support for Pull Metric Reader (#1701))
* [TRACE SDK] Add trace sdk builders (#1393)
[#1471](https://github.com/open-telemetry/opentelemetry-cpp/pull/1471)
* [EXAMPLE] Fix memory ownership of InMemorySpanExporter (#1473)
Expand All @@ -299,6 +302,10 @@ update the semantic convention in instrumentation library is needed.
=======
=======
=======
=======
* [Metrics SDK] Add support for Pull Metric Exporter [#1701](https://github.com/open-telemetry/opentelemetry-cpp/pull/1701)
which includes breaking change in the Metrics api.
>>>>>>> 70777ef9 ([Metrics SDK] Add support for Pull Metric Reader (#1701))
* [BUILD] Add CMake OTELCPP_MAINTAINER_MODE [#1650](https://github.com/open-telemetry/opentelemetry-cpp/pull/1650)
* [SEMANTIC CONVENTIONS] Upgrade to version 1.14.0 [#1697](https://github.com/open-telemetry/opentelemetry-cpp/pull/1697)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,23 @@

#pragma once

<<<<<<< HEAD
#include <iostream>
#include <string>
#include "opentelemetry/common/spin_lock_mutex.h"
#include "opentelemetry/sdk/metrics/data/metric_data.h"
#include "opentelemetry/sdk/metrics/instruments.h"
#include "opentelemetry/sdk/metrics/push_metric_exporter.h"
#include "opentelemetry/version.h"
=======
# include <iostream>
# include <string>
# include "opentelemetry/common/spin_lock_mutex.h"
# include "opentelemetry/sdk/metrics/data/metric_data.h"
# include "opentelemetry/sdk/metrics/instruments.h"
# include "opentelemetry/sdk/metrics/push_metric_exporter.h"
# include "opentelemetry/version.h"
>>>>>>> c6552dca ([Metrics SDK] Add support for Pull Metric Reader (#1701))

OPENTELEMETRY_BEGIN_NAMESPACE
namespace exporter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,12 @@
=======
# include "opentelemetry/exporters/otlp/otlp_environment.h"
# include "opentelemetry/exporters/otlp/otlp_grpc_metric_exporter_options.h"
<<<<<<< HEAD
# include "opentelemetry/sdk/metrics/metric_exporter.h"
>>>>>>> 097ec4e7 (Add OTLP Metric Exporter Factory and `OtlpGrpcClient` (#1606))
=======
# include "opentelemetry/sdk/metrics/push_metric_exporter.h"
>>>>>>> c6552dca ([Metrics SDK] Add support for Pull Metric Reader (#1701))

OPENTELEMETRY_BEGIN_NAMESPACE
namespace exporter
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,12 @@
#ifndef ENABLE_METRICS_PREVIEW

# include "opentelemetry/exporters/otlp/otlp_grpc_metric_exporter_options.h"
<<<<<<< HEAD
# include "opentelemetry/sdk/metrics/metric_exporter.h"
>>>>>>> 097ec4e7 (Add OTLP Metric Exporter Factory and `OtlpGrpcClient` (#1606))
=======
# include "opentelemetry/sdk/metrics/push_metric_exporter.h"
>>>>>>> c6552dca ([Metrics SDK] Add support for Pull Metric Reader (#1701))

OPENTELEMETRY_BEGIN_NAMESPACE
namespace exporter
Expand All @@ -28,20 +32,28 @@ class OtlpGrpcMetricExporterFactory
/**
* Create a OtlpGrpcMetricExporter.
*/
<<<<<<< HEAD
<<<<<<< HEAD
static std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> Create();
=======
static std::unique_ptr<opentelemetry::sdk::metrics::MetricExporter> Create();
>>>>>>> 097ec4e7 (Add OTLP Metric Exporter Factory and `OtlpGrpcClient` (#1606))
=======
static std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> Create();
>>>>>>> c6552dca ([Metrics SDK] Add support for Pull Metric Reader (#1701))

/**
* Create a OtlpGrpcMetricExporter.
*/
<<<<<<< HEAD
<<<<<<< HEAD
static std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> Create(
=======
static std::unique_ptr<opentelemetry::sdk::metrics::MetricExporter> Create(
>>>>>>> 097ec4e7 (Add OTLP Metric Exporter Factory and `OtlpGrpcClient` (#1606))
=======
static std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> Create(
>>>>>>> c6552dca ([Metrics SDK] Add support for Pull Metric Reader (#1701))
const OtlpGrpcMetricExporterOptions &options);
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
=======
#ifndef ENABLE_METRICS_PREVIEW

# include "opentelemetry/sdk/metrics/metric_exporter.h"
# include "opentelemetry/sdk/metrics/push_metric_exporter.h"

# include "opentelemetry/exporters/otlp/otlp_environment.h"
<<<<<<< HEAD
Expand Down Expand Up @@ -93,8 +93,12 @@ struct OtlpHttpMetricExporterOptions
/**
* The OTLP exporter exports metrics data in OpenTelemetry Protocol (OTLP) format in HTTP.
*/
<<<<<<< HEAD
class OtlpHttpMetricExporter final : public opentelemetry::sdk::metrics::MetricExporter
>>>>>>> 8d1f241d ([Metrics] Add OTLP http metric exporter (#1487))
=======
class OtlpHttpMetricExporter final : public opentelemetry::sdk::metrics::PushMetricExporter
>>>>>>> c6552dca ([Metrics SDK] Add support for Pull Metric Reader (#1701))
{
public:
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
#ifndef ENABLE_METRICS_PREVIEW

# include "opentelemetry/exporters/otlp/otlp_http_metric_exporter_options.h"
# include "opentelemetry/sdk/metrics/metric_exporter.h"
# include "opentelemetry/sdk/metrics/push_metric_exporter.h"

# include <memory>
>>>>>>> 097ec4e7 (Add OTLP Metric Exporter Factory and `OtlpGrpcClient` (#1606))
Expand All @@ -32,20 +32,28 @@ class OtlpHttpMetricExporterFactory
/**
* Create a OtlpHttpMetricExporter.
*/
<<<<<<< HEAD
<<<<<<< HEAD
static std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> Create();
=======
static std::unique_ptr<opentelemetry::sdk::metrics::MetricExporter> Create();
>>>>>>> 097ec4e7 (Add OTLP Metric Exporter Factory and `OtlpGrpcClient` (#1606))
=======
static std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> Create();
>>>>>>> c6552dca ([Metrics SDK] Add support for Pull Metric Reader (#1701))

/**
* Create a OtlpHttpMetricExporter.
*/
<<<<<<< HEAD
<<<<<<< HEAD
static std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> Create(
=======
static std::unique_ptr<opentelemetry::sdk::metrics::MetricExporter> Create(
>>>>>>> 097ec4e7 (Add OTLP Metric Exporter Factory and `OtlpGrpcClient` (#1606))
=======
static std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> Create(
>>>>>>> c6552dca ([Metrics SDK] Add support for Pull Metric Reader (#1701))
const OtlpHttpMetricExporterOptions &options);
};

Expand Down
12 changes: 12 additions & 0 deletions exporters/otlp/src/otlp_grpc_metric_exporter_factory.cc
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,23 @@ namespace exporter
namespace otlp
{

<<<<<<< HEAD
<<<<<<< HEAD
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter>
OtlpGrpcMetricExporterFactory::Create()
=======
std::unique_ptr<opentelemetry::sdk::metrics::MetricExporter> OtlpGrpcMetricExporterFactory::Create()
>>>>>>> 097ec4e7 (Add OTLP Metric Exporter Factory and `OtlpGrpcClient` (#1606))
=======
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter>
OtlpGrpcMetricExporterFactory::Create()
>>>>>>> c6552dca ([Metrics SDK] Add support for Pull Metric Reader (#1701))
{
OtlpGrpcMetricExporterOptions options;
return Create(options);
}

<<<<<<< HEAD
<<<<<<< HEAD
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter>
OtlpGrpcMetricExporterFactory::Create(const OtlpGrpcMetricExporterOptions &options)
Expand All @@ -45,6 +51,12 @@ std::unique_ptr<opentelemetry::sdk::metrics::MetricExporter> OtlpGrpcMetricExpor
{
std::unique_ptr<opentelemetry::sdk::metrics::MetricExporter> exporter(
>>>>>>> 097ec4e7 (Add OTLP Metric Exporter Factory and `OtlpGrpcClient` (#1606))
=======
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter>
OtlpGrpcMetricExporterFactory::Create(const OtlpGrpcMetricExporterOptions &options)
{
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> exporter(
>>>>>>> c6552dca ([Metrics SDK] Add support for Pull Metric Reader (#1701))
new OtlpGrpcMetricExporter(options));
return exporter;
}
Expand Down
12 changes: 12 additions & 0 deletions exporters/otlp/src/otlp_http_metric_exporter_factory.cc
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,23 @@ namespace exporter
namespace otlp
{

<<<<<<< HEAD
<<<<<<< HEAD
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter>
OtlpHttpMetricExporterFactory::Create()
=======
std::unique_ptr<opentelemetry::sdk::metrics::MetricExporter> OtlpHttpMetricExporterFactory::Create()
>>>>>>> 097ec4e7 (Add OTLP Metric Exporter Factory and `OtlpGrpcClient` (#1606))
=======
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter>
OtlpHttpMetricExporterFactory::Create()
>>>>>>> c6552dca ([Metrics SDK] Add support for Pull Metric Reader (#1701))
{
OtlpHttpMetricExporterOptions options;
return Create(options);
}

<<<<<<< HEAD
<<<<<<< HEAD
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter>
OtlpHttpMetricExporterFactory::Create(const OtlpHttpMetricExporterOptions &options)
Expand All @@ -41,6 +47,12 @@ std::unique_ptr<opentelemetry::sdk::metrics::MetricExporter> OtlpHttpMetricExpor
{
std::unique_ptr<opentelemetry::sdk::metrics::MetricExporter> exporter(
>>>>>>> 097ec4e7 (Add OTLP Metric Exporter Factory and `OtlpGrpcClient` (#1606))
=======
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter>
OtlpHttpMetricExporterFactory::Create(const OtlpHttpMetricExporterOptions &options)
{
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> exporter(
>>>>>>> c6552dca ([Metrics SDK] Add support for Pull Metric Reader (#1701))
new OtlpHttpMetricExporter(options));
return exporter;
}
Expand Down
4 changes: 4 additions & 0 deletions exporters/otlp/test/otlp_grpc_metric_exporter_factory_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,15 @@ TEST(OtlpGrpcMetricExporterFactory, BuildTest)
OtlpGrpcMetricExporterOptions opts;
opts.endpoint = "localhost:45454";

<<<<<<< HEAD
<<<<<<< HEAD
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> exporter =
=======
std::unique_ptr<opentelemetry::sdk::metrics::MetricExporter> exporter =
>>>>>>> 097ec4e7 (Add OTLP Metric Exporter Factory and `OtlpGrpcClient` (#1606))
=======
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> exporter =
>>>>>>> c6552dca ([Metrics SDK] Add support for Pull Metric Reader (#1701))
OtlpGrpcMetricExporterFactory::Create(opts);

EXPECT_TRUE(exporter != nullptr);
Expand Down
4 changes: 4 additions & 0 deletions exporters/otlp/test/otlp_http_metric_exporter_factory_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,15 @@ TEST(OtlpHttpMetricExporterFactory, BuildTest)
OtlpHttpMetricExporterOptions opts;
opts.url = "localhost:45454";

<<<<<<< HEAD
<<<<<<< HEAD
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> exporter =
=======
std::unique_ptr<opentelemetry::sdk::metrics::MetricExporter> exporter =
>>>>>>> 097ec4e7 (Add OTLP Metric Exporter Factory and `OtlpGrpcClient` (#1606))
=======
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> exporter =
>>>>>>> c6552dca ([Metrics SDK] Add support for Pull Metric Reader (#1701))
OtlpHttpMetricExporterFactory::Create(opts);

EXPECT_TRUE(exporter != nullptr);
Expand Down
12 changes: 12 additions & 0 deletions exporters/otlp/test/otlp_http_metric_exporter_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ namespace http_client = opentelemetry::ext::http::client;
class OtlpHttpMetricExporterTestPeer : public ::testing::Test
{
public:
<<<<<<< HEAD
<<<<<<< HEAD
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> GetExporter(
std::unique_ptr<OtlpHttpClient> http_client)
Expand All @@ -125,6 +126,12 @@ class OtlpHttpMetricExporterTestPeer : public ::testing::Test
{
return std::unique_ptr<opentelemetry::sdk::metrics::MetricExporter>(
>>>>>>> 8d1f241d ([Metrics] Add OTLP http metric exporter (#1487))
=======
std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter> GetExporter(
std::unique_ptr<OtlpHttpClient> http_client)
{
return std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter>(
>>>>>>> c6552dca ([Metrics SDK] Add support for Pull Metric Reader (#1701))
new OtlpHttpMetricExporter(std::move(http_client)));
}

Expand Down Expand Up @@ -1177,13 +1184,18 @@ class OtlpHttpMetricExporterTestPeer : public ::testing::Test

TEST(OtlpHttpMetricExporterTest, Shutdown)
{
<<<<<<< HEAD
<<<<<<< HEAD
auto exporter = std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter>(
new OtlpHttpMetricExporter());
=======
auto exporter =
std::unique_ptr<opentelemetry::sdk::metrics::MetricExporter>(new OtlpHttpMetricExporter());
>>>>>>> 8d1f241d ([Metrics] Add OTLP http metric exporter (#1487))
=======
auto exporter = std::unique_ptr<opentelemetry::sdk::metrics::PushMetricExporter>(
new OtlpHttpMetricExporter());
>>>>>>> c6552dca ([Metrics SDK] Add support for Pull Metric Reader (#1701))
ASSERT_TRUE(exporter->Shutdown());
auto result = exporter->Export(opentelemetry::sdk::metrics::ResourceMetrics{});
EXPECT_EQ(result, opentelemetry::sdk::common::ExportResult::kFailure);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#pragma once

<<<<<<< HEAD
#include <memory>
#include <string>
#include <vector>
Expand All @@ -14,6 +15,15 @@
#include "opentelemetry/sdk/common/env_variables.h"
#include "opentelemetry/sdk/metrics/push_metric_exporter.h"
#include "opentelemetry/version.h"
=======
# include <prometheus/exposer.h>
# include "opentelemetry/common/spin_lock_mutex.h"
# include "opentelemetry/exporters/prometheus/collector.h"
# include "opentelemetry/nostd/span.h"
# include "opentelemetry/sdk/common/env_variables.h"
# include "opentelemetry/sdk/metrics/push_metric_exporter.h"
# include "opentelemetry/version.h"
>>>>>>> c6552dca ([Metrics SDK] Add support for Pull Metric Reader (#1701))

/**
* This class is an implementation of the MetricsExporter interface and
Expand Down
7 changes: 7 additions & 0 deletions sdk/src/metrics/export/periodic_exporting_metric_reader.cc
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

<<<<<<< HEAD
#include "opentelemetry/sdk/metrics/export/periodic_exporting_metric_reader.h"
#include "opentelemetry/sdk/common/global_log_handler.h"
#include "opentelemetry/sdk/metrics/push_metric_exporter.h"
=======
#ifndef ENABLE_METRICS_PREVIEW
# include "opentelemetry/sdk/metrics/export/periodic_exporting_metric_reader.h"
# include "opentelemetry/sdk/common/global_log_handler.h"
# include "opentelemetry/sdk/metrics/push_metric_exporter.h"
>>>>>>> c6552dca ([Metrics SDK] Add support for Pull Metric Reader (#1701))

#include <chrono>
#include <future>
Expand Down
14 changes: 14 additions & 0 deletions sdk/test/metrics/async_metric_storage_test.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

<<<<<<< HEAD
#include "opentelemetry/sdk/metrics/state/async_metric_storage.h"
#include <cstdint>
#include "opentelemetry/common/key_value_iterable_view.h"
Expand All @@ -12,6 +13,19 @@
#include "opentelemetry/sdk/metrics/push_metric_exporter.h"
#include "opentelemetry/sdk/metrics/state/metric_collector.h"
#include "opentelemetry/sdk/metrics/state/observable_registry.h"
=======
#ifndef ENABLE_METRICS_PREVIEW
# include "opentelemetry/sdk/metrics/state/async_metric_storage.h"
# include "opentelemetry/common/key_value_iterable_view.h"
# include "opentelemetry/sdk/metrics/async_instruments.h"
# include "opentelemetry/sdk/metrics/instruments.h"
# include "opentelemetry/sdk/metrics/meter_context.h"
# include "opentelemetry/sdk/metrics/metric_reader.h"
# include "opentelemetry/sdk/metrics/observer_result.h"
# include "opentelemetry/sdk/metrics/push_metric_exporter.h"
# include "opentelemetry/sdk/metrics/state/metric_collector.h"
# include "opentelemetry/sdk/metrics/state/observable_registry.h"
>>>>>>> c6552dca ([Metrics SDK] Add support for Pull Metric Reader (#1701))

#include <gtest/gtest.h>
#include <memory>
Expand Down
Loading

0 comments on commit e640b89

Please sign in to comment.