Skip to content

Commit f16ea3b

Browse files
authored
[CONFIGURATION] File configuration - metric model (#3474)
1 parent 85b0ada commit f16ea3b

15 files changed

+542
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include "opentelemetry/sdk/configuration/headers_configuration.h"
7+
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h"
8+
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h"
9+
#include "opentelemetry/version.h"
10+
11+
OPENTELEMETRY_BEGIN_NAMESPACE
12+
namespace sdk
13+
{
14+
namespace configuration
15+
{
16+
17+
// YAML-SCHEMA: schema/common.json
18+
// YAML-NODE: Console
19+
class ConsolePushMetricExporterConfiguration : public PushMetricExporterConfiguration
20+
{
21+
public:
22+
void Accept(PushMetricExporterConfigurationVisitor *visitor) const override
23+
{
24+
visitor->VisitConsole(this);
25+
}
26+
};
27+
28+
} // namespace configuration
29+
} // namespace sdk
30+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include "opentelemetry/version.h"
7+
8+
OPENTELEMETRY_BEGIN_NAMESPACE
9+
namespace sdk
10+
{
11+
namespace configuration
12+
{
13+
class MetricProducerConfigurationVisitor;
14+
15+
// YAML-SCHEMA: schema/meter_provider.json
16+
// YAML-NODE: MetricProducer
17+
class MetricProducerConfiguration
18+
{
19+
public:
20+
MetricProducerConfiguration() = default;
21+
MetricProducerConfiguration(MetricProducerConfiguration &&) = default;
22+
MetricProducerConfiguration(const MetricProducerConfiguration &) = default;
23+
MetricProducerConfiguration &operator=(MetricProducerConfiguration &&) = default;
24+
MetricProducerConfiguration &operator=(const MetricProducerConfiguration &other) = default;
25+
virtual ~MetricProducerConfiguration() = default;
26+
27+
virtual void Accept(MetricProducerConfigurationVisitor *visitor) const = 0;
28+
};
29+
30+
} // namespace configuration
31+
} // namespace sdk
32+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include "opentelemetry/version.h"
7+
8+
OPENTELEMETRY_BEGIN_NAMESPACE
9+
namespace sdk
10+
{
11+
namespace configuration
12+
{
13+
class MetricReaderConfigurationVisitor;
14+
15+
// YAML-SCHEMA: schema/meter_provider.json
16+
// YAML-NODE: MetricReader
17+
class MetricReaderConfiguration
18+
{
19+
public:
20+
MetricReaderConfiguration() = default;
21+
MetricReaderConfiguration(MetricReaderConfiguration &&) = default;
22+
MetricReaderConfiguration(const MetricReaderConfiguration &) = default;
23+
MetricReaderConfiguration &operator=(MetricReaderConfiguration &&) = default;
24+
MetricReaderConfiguration &operator=(const MetricReaderConfiguration &other) = default;
25+
virtual ~MetricReaderConfiguration() = default;
26+
27+
virtual void Accept(MetricReaderConfigurationVisitor *visitor) const = 0;
28+
};
29+
30+
} // namespace configuration
31+
} // namespace sdk
32+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include "opentelemetry/version.h"
7+
8+
OPENTELEMETRY_BEGIN_NAMESPACE
9+
namespace sdk
10+
{
11+
namespace configuration
12+
{
13+
14+
class PeriodicMetricReaderConfiguration;
15+
class PullMetricReaderConfiguration;
16+
17+
class MetricReaderConfigurationVisitor
18+
{
19+
public:
20+
MetricReaderConfigurationVisitor() = default;
21+
MetricReaderConfigurationVisitor(MetricReaderConfigurationVisitor &&) = default;
22+
MetricReaderConfigurationVisitor(const MetricReaderConfigurationVisitor &) = default;
23+
MetricReaderConfigurationVisitor &operator=(MetricReaderConfigurationVisitor &&) = default;
24+
MetricReaderConfigurationVisitor &operator=(const MetricReaderConfigurationVisitor &other) =
25+
default;
26+
virtual ~MetricReaderConfigurationVisitor() = default;
27+
28+
virtual void VisitPeriodic(const PeriodicMetricReaderConfiguration *model) = 0;
29+
virtual void VisitPull(const PullMetricReaderConfiguration *model) = 0;
30+
};
31+
32+
} // namespace configuration
33+
} // namespace sdk
34+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <string>
7+
8+
#include "opentelemetry/sdk/configuration/default_histogram_aggregation.h"
9+
#include "opentelemetry/sdk/configuration/headers_configuration.h"
10+
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h"
11+
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h"
12+
#include "opentelemetry/sdk/configuration/temporality_preference.h"
13+
#include "opentelemetry/version.h"
14+
15+
OPENTELEMETRY_BEGIN_NAMESPACE
16+
namespace sdk
17+
{
18+
namespace configuration
19+
{
20+
21+
// YAML-SCHEMA: schema/meter_provider.json
22+
// YAML-NODE: ExperimentalOtlpFileMetricExporter
23+
class OtlpFilePushMetricExporterConfiguration : public PushMetricExporterConfiguration
24+
{
25+
public:
26+
void Accept(PushMetricExporterConfigurationVisitor *visitor) const override
27+
{
28+
visitor->VisitOtlpFile(this);
29+
}
30+
31+
std::string output_stream;
32+
enum_temporality_preference temporality_preference{cumulative};
33+
enum_default_histogram_aggregation default_histogram_aggregation{explicit_bucket_histogram};
34+
};
35+
36+
} // namespace configuration
37+
} // namespace sdk
38+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <memory>
7+
#include <string>
8+
9+
#include "opentelemetry/sdk/configuration/default_histogram_aggregation.h"
10+
#include "opentelemetry/sdk/configuration/headers_configuration.h"
11+
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h"
12+
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h"
13+
#include "opentelemetry/sdk/configuration/temporality_preference.h"
14+
#include "opentelemetry/version.h"
15+
16+
OPENTELEMETRY_BEGIN_NAMESPACE
17+
namespace sdk
18+
{
19+
namespace configuration
20+
{
21+
22+
// YAML-SCHEMA: schema/meter_provider.json
23+
// YAML-NODE: OtlpGrpcMetricExporter
24+
class OtlpGrpcPushMetricExporterConfiguration : public PushMetricExporterConfiguration
25+
{
26+
public:
27+
void Accept(PushMetricExporterConfigurationVisitor *visitor) const override
28+
{
29+
visitor->VisitOtlpGrpc(this);
30+
}
31+
32+
std::string endpoint;
33+
std::string certificate_file;
34+
std::string client_key_file;
35+
std::string client_certificate_file;
36+
std::unique_ptr<HeadersConfiguration> headers;
37+
std::string headers_list;
38+
std::string compression;
39+
std::size_t timeout{0};
40+
bool insecure{false};
41+
enum_temporality_preference temporality_preference{cumulative};
42+
enum_default_histogram_aggregation default_histogram_aggregation{explicit_bucket_histogram};
43+
};
44+
45+
} // namespace configuration
46+
} // namespace sdk
47+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <memory>
7+
#include <string>
8+
9+
#include "opentelemetry/sdk/configuration/default_histogram_aggregation.h"
10+
#include "opentelemetry/sdk/configuration/headers_configuration.h"
11+
#include "opentelemetry/sdk/configuration/otlp_http_encoding.h"
12+
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h"
13+
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration_visitor.h"
14+
#include "opentelemetry/sdk/configuration/temporality_preference.h"
15+
#include "opentelemetry/version.h"
16+
17+
OPENTELEMETRY_BEGIN_NAMESPACE
18+
namespace sdk
19+
{
20+
namespace configuration
21+
{
22+
23+
// YAML-SCHEMA: schema/meter_provider.json
24+
// YAML-NODE: OtlpHttpMetricExporter
25+
class OtlpHttpPushMetricExporterConfiguration : public PushMetricExporterConfiguration
26+
{
27+
public:
28+
void Accept(PushMetricExporterConfigurationVisitor *visitor) const override
29+
{
30+
visitor->VisitOtlpHttp(this);
31+
}
32+
33+
std::string endpoint;
34+
std::string certificate_file;
35+
std::string client_key_file;
36+
std::string client_certificate_file;
37+
std::unique_ptr<HeadersConfiguration> headers;
38+
std::string headers_list;
39+
std::string compression;
40+
std::size_t timeout{0};
41+
enum_otlp_http_encoding encoding{protobuf};
42+
enum_temporality_preference temporality_preference{cumulative};
43+
enum_default_histogram_aggregation default_histogram_aggregation{explicit_bucket_histogram};
44+
};
45+
46+
} // namespace configuration
47+
} // namespace sdk
48+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <memory>
7+
#include <vector>
8+
9+
#include "opentelemetry/sdk/configuration/metric_producer_configuration.h"
10+
#include "opentelemetry/sdk/configuration/metric_reader_configuration.h"
11+
#include "opentelemetry/sdk/configuration/metric_reader_configuration_visitor.h"
12+
#include "opentelemetry/sdk/configuration/push_metric_exporter_configuration.h"
13+
#include "opentelemetry/version.h"
14+
15+
OPENTELEMETRY_BEGIN_NAMESPACE
16+
namespace sdk
17+
{
18+
namespace configuration
19+
{
20+
21+
// YAML-SCHEMA: schema/meter_provider.json
22+
// YAML-NODE: PeriodicMetricReader
23+
class PeriodicMetricReaderConfiguration : public MetricReaderConfiguration
24+
{
25+
public:
26+
void Accept(MetricReaderConfigurationVisitor *visitor) const override
27+
{
28+
visitor->VisitPeriodic(this);
29+
}
30+
31+
std::size_t interval{0};
32+
std::size_t timeout{0};
33+
std::unique_ptr<PushMetricExporterConfiguration> exporter;
34+
std::vector<std::unique_ptr<MetricProducerConfiguration>> producers;
35+
};
36+
37+
} // namespace configuration
38+
} // namespace sdk
39+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <string>
7+
8+
#include "opentelemetry/sdk/configuration/headers_configuration.h"
9+
#include "opentelemetry/sdk/configuration/pull_metric_exporter_configuration.h"
10+
#include "opentelemetry/sdk/configuration/pull_metric_exporter_configuration_visitor.h"
11+
#include "opentelemetry/version.h"
12+
13+
OPENTELEMETRY_BEGIN_NAMESPACE
14+
namespace sdk
15+
{
16+
namespace configuration
17+
{
18+
19+
// YAML-SCHEMA: schema/meter_provider.json
20+
// YAML-NODE: Prometheus
21+
class PrometheusPullMetricExporterConfiguration : public PullMetricExporterConfiguration
22+
{
23+
public:
24+
void Accept(PullMetricExporterConfigurationVisitor *visitor) const override
25+
{
26+
visitor->VisitPrometheus(this);
27+
}
28+
29+
std::string host;
30+
std::size_t port{0};
31+
bool without_units{false};
32+
bool without_type_suffix{false};
33+
bool without_scope_info{false};
34+
// FIXME: with_resource_constant_labels;
35+
};
36+
37+
} // namespace configuration
38+
} // namespace sdk
39+
OPENTELEMETRY_END_NAMESPACE
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include "opentelemetry/version.h"
7+
8+
OPENTELEMETRY_BEGIN_NAMESPACE
9+
namespace sdk
10+
{
11+
namespace configuration
12+
{
13+
class PullMetricExporterConfigurationVisitor;
14+
15+
class PullMetricExporterConfiguration
16+
{
17+
public:
18+
PullMetricExporterConfiguration() = default;
19+
PullMetricExporterConfiguration(PullMetricExporterConfiguration &&) = default;
20+
PullMetricExporterConfiguration(const PullMetricExporterConfiguration &) = default;
21+
PullMetricExporterConfiguration &operator=(PullMetricExporterConfiguration &&) = default;
22+
PullMetricExporterConfiguration &operator=(const PullMetricExporterConfiguration &other) =
23+
default;
24+
virtual ~PullMetricExporterConfiguration() = default;
25+
26+
virtual void Accept(PullMetricExporterConfigurationVisitor *visitor) const = 0;
27+
};
28+
29+
} // namespace configuration
30+
} // namespace sdk
31+
OPENTELEMETRY_END_NAMESPACE

0 commit comments

Comments
 (0)