Skip to content

Commit 61e550e

Browse files
authored
[EXPORTERS] Remove prometheus timestamps (#3895)
1 parent 86389bc commit 61e550e

File tree

4 files changed

+21
-30
lines changed

4 files changed

+21
-30
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ Increment the:
1515

1616
## [Unreleased]
1717

18+
* [EXPORTER] Remove explicit timestamps from metric points exported by Prometheus
19+
[#3895](https://github.com/open-telemetry/opentelemetry-cpp/pull/3895)
20+
1821
* [BUILD] Fix benchmark genrule capturing stderr into JSON output
1922
[#3925](https://github.com/open-telemetry/opentelemetry-cpp/pull/3925)
2023

exporters/prometheus/include/opentelemetry/exporters/prometheus/exporter_utils.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,6 @@ class PrometheusExporterUtils
153153
* Add a target_info metric to collect resource attributes
154154
*/
155155
static void SetTarget(const sdk::metrics::ResourceMetrics &data,
156-
std::chrono::nanoseconds time,
157156
const opentelemetry::sdk::instrumentationscope::InstrumentationScope *scope,
158157
std::vector<::prometheus::MetricFamily> *output);
159158

@@ -166,7 +165,6 @@ class PrometheusExporterUtils
166165
const opentelemetry::sdk::metrics::PointAttributes &labels,
167166
const opentelemetry::sdk::instrumentationscope::InstrumentationScope *scope,
168167
::prometheus::MetricType type,
169-
std::chrono::nanoseconds time,
170168
::prometheus::MetricFamily *metric_family,
171169
const opentelemetry::sdk::resource::Resource *resource);
172170

@@ -180,7 +178,6 @@ class PrometheusExporterUtils
180178
const std::vector<uint64_t> &counts,
181179
const opentelemetry::sdk::metrics::PointAttributes &labels,
182180
const opentelemetry::sdk::instrumentationscope::InstrumentationScope *scope,
183-
std::chrono::nanoseconds time,
184181
::prometheus::MetricFamily *metric_family,
185182
const opentelemetry::sdk::resource::Resource *resource);
186183

@@ -190,7 +187,6 @@ class PrometheusExporterUtils
190187
static void SetMetricBasic(
191188
::prometheus::ClientMetric &metric,
192189
const opentelemetry::sdk::metrics::PointAttributes &labels,
193-
std::chrono::nanoseconds time,
194190
const opentelemetry::sdk::instrumentationscope::InstrumentationScope *scope,
195191
const opentelemetry::sdk::resource::Resource *resource);
196192

exporters/prometheus/src/exporter_utils.cc

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
#include <prometheus/metric_family.h>
66
#include <prometheus/metric_type.h>
77
#include <algorithm>
8-
#include <chrono>
98
#include <cstddef>
109
#include <cstdint>
1110
#include <functional>
@@ -19,7 +18,6 @@
1918
#include <utility>
2019
#include <vector>
2120

22-
#include "opentelemetry/common/timestamp.h"
2321
#include "opentelemetry/exporters/prometheus/exporter_utils.h"
2422
#include "opentelemetry/nostd/variant.h"
2523
#include "opentelemetry/sdk/common/attribute_utils.h"
@@ -138,9 +136,8 @@ std::vector<prometheus_client::MetricFamily> PrometheusExporterUtils::TranslateT
138136
// Append target_info as the first metric
139137
if (populate_target_info && !data.scope_metric_data_.empty())
140138
{
141-
SetTarget(data,
142-
data.scope_metric_data_.begin()->metric_data_.begin()->end_ts.time_since_epoch(),
143-
without_otel_scope ? nullptr : (*data.scope_metric_data_.begin()).scope_, &output);
139+
SetTarget(data, without_otel_scope ? nullptr : (*data.scope_metric_data_.begin()).scope_,
140+
&output);
144141
}
145142

146143
for (const auto &instrumentation_info : data.scope_metric_data_)
@@ -151,7 +148,6 @@ std::vector<prometheus_client::MetricFamily> PrometheusExporterUtils::TranslateT
151148
auto unit = metric_data.instrument_descriptor.unit_;
152149
prometheus_client::MetricFamily metric_family;
153150
metric_family.help = metric_data.instrument_descriptor.description_;
154-
auto time = metric_data.end_ts.time_since_epoch();
155151
auto front = metric_data.point_data_attr_.front();
156152
auto kind = getAggregationType(front.point_data);
157153
bool is_monotonic = true;
@@ -185,7 +181,7 @@ std::vector<prometheus_client::MetricFamily> PrometheusExporterUtils::TranslateT
185181
sum = static_cast<double>(nostd::get<int64_t>(histogram_point_data.sum_));
186182
}
187183
SetData(std::vector<double>{sum, static_cast<double>(histogram_point_data.count_)},
188-
boundaries, counts, point_data_attr.attributes, scope, time, &metric_family,
184+
boundaries, counts, point_data_attr.attributes, scope, &metric_family,
189185
data.resource_);
190186
}
191187
else if (type == prometheus_client::MetricType::Gauge)
@@ -196,15 +192,15 @@ std::vector<prometheus_client::MetricFamily> PrometheusExporterUtils::TranslateT
196192
auto last_value_point_data =
197193
nostd::get<sdk::metrics::LastValuePointData>(point_data_attr.point_data);
198194
std::vector<metric_sdk::ValueType> values{last_value_point_data.value_};
199-
SetData(values, point_data_attr.attributes, scope, type, time, &metric_family,
195+
SetData(values, point_data_attr.attributes, scope, type, &metric_family,
200196
data.resource_);
201197
}
202198
else if (nostd::holds_alternative<sdk::metrics::SumPointData>(point_data_attr.point_data))
203199
{
204200
auto sum_point_data =
205201
nostd::get<sdk::metrics::SumPointData>(point_data_attr.point_data);
206202
std::vector<metric_sdk::ValueType> values{sum_point_data.value_};
207-
SetData(values, point_data_attr.attributes, scope, type, time, &metric_family,
203+
SetData(values, point_data_attr.attributes, scope, type, &metric_family,
208204
data.resource_);
209205
}
210206
else
@@ -221,7 +217,7 @@ std::vector<prometheus_client::MetricFamily> PrometheusExporterUtils::TranslateT
221217
auto sum_point_data =
222218
nostd::get<sdk::metrics::SumPointData>(point_data_attr.point_data);
223219
std::vector<metric_sdk::ValueType> values{sum_point_data.value_};
224-
SetData(values, point_data_attr.attributes, scope, type, time, &metric_family,
220+
SetData(values, point_data_attr.attributes, scope, type, &metric_family,
225221
data.resource_);
226222
}
227223
else
@@ -605,7 +601,6 @@ prometheus_client::MetricType PrometheusExporterUtils::TranslateType(
605601

606602
void PrometheusExporterUtils::SetTarget(
607603
const sdk::metrics::ResourceMetrics &data,
608-
std::chrono::nanoseconds time,
609604
const opentelemetry::sdk::instrumentationscope::InstrumentationScope *scope,
610605
std::vector<::prometheus::MetricFamily> *output)
611606
{
@@ -624,7 +619,7 @@ void PrometheusExporterUtils::SetTarget(
624619
metric.info.value = 1.0;
625620

626621
metric_sdk::PointAttributes empty_attributes;
627-
SetMetricBasic(metric, empty_attributes, time, scope, data.resource_);
622+
SetMetricBasic(metric, empty_attributes, scope, data.resource_);
628623

629624
for (auto &label : data.resource_->GetAttributes())
630625
{
@@ -645,13 +640,12 @@ void PrometheusExporterUtils::SetData(
645640
const metric_sdk::PointAttributes &labels,
646641
const opentelemetry::sdk::instrumentationscope::InstrumentationScope *scope,
647642
prometheus_client::MetricType type,
648-
std::chrono::nanoseconds time,
649643
prometheus_client::MetricFamily *metric_family,
650644
const opentelemetry::sdk::resource::Resource *resource)
651645
{
652646
metric_family->metric.emplace_back();
653647
prometheus_client::ClientMetric &metric = metric_family->metric.back();
654-
SetMetricBasic(metric, labels, time, scope, resource);
648+
SetMetricBasic(metric, labels, scope, resource);
655649
SetValue(values, type, &metric);
656650
}
657651

@@ -666,13 +660,12 @@ void PrometheusExporterUtils::SetData(
666660
const std::vector<uint64_t> &counts,
667661
const metric_sdk::PointAttributes &labels,
668662
const opentelemetry::sdk::instrumentationscope::InstrumentationScope *scope,
669-
std::chrono::nanoseconds time,
670663
prometheus_client::MetricFamily *metric_family,
671664
const opentelemetry::sdk::resource::Resource *resource)
672665
{
673666
metric_family->metric.emplace_back();
674667
prometheus_client::ClientMetric &metric = metric_family->metric.back();
675-
SetMetricBasic(metric, labels, time, scope, resource);
668+
SetMetricBasic(metric, labels, scope, resource);
676669
SetValue(values, boundaries, counts, &metric);
677670
}
678671

@@ -682,11 +675,9 @@ void PrometheusExporterUtils::SetData(
682675
void PrometheusExporterUtils::SetMetricBasic(
683676
prometheus_client::ClientMetric &metric,
684677
const metric_sdk::PointAttributes &labels,
685-
std::chrono::nanoseconds time,
686678
const opentelemetry::sdk::instrumentationscope::InstrumentationScope *scope,
687679
const opentelemetry::sdk::resource::Resource *resource)
688680
{
689-
metric.timestamp_ms = time.count() / 1000000;
690681
if (labels.empty() && nullptr == resource)
691682
{
692683
return;

exporters/prometheus/test/prometheus_test_helper.h

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ struct TestDataPoints
2323
Resource resource = Resource::Create(ResourceAttributes{});
2424
nostd::unique_ptr<InstrumentationScope> instrumentation_scope =
2525
InstrumentationScope::Create("library_name", "1.2.0");
26+
opentelemetry::common::SystemTimestamp start_ts =
27+
opentelemetry::common::SystemTimestamp{std::chrono::microseconds{1766662500000}};
28+
opentelemetry::common::SystemTimestamp end_ts =
29+
opentelemetry::common::SystemTimestamp{std::chrono::microseconds{1766662560000}};
2630

2731
/**
2832
* Helper function to create ResourceMetrics
@@ -39,8 +43,7 @@ struct TestDataPoints
3943
metric_sdk::InstrumentDescriptor{"library_name", "description", "unit",
4044
metric_sdk::InstrumentType::kCounter,
4145
metric_sdk::InstrumentValueType::kDouble},
42-
metric_sdk::AggregationTemporality::kDelta, opentelemetry::common::SystemTimestamp{},
43-
opentelemetry::common::SystemTimestamp{},
46+
metric_sdk::AggregationTemporality::kDelta, start_ts, end_ts,
4447
std::vector<metric_sdk::PointDataAttributes>{
4548
{metric_sdk::PointAttributes{{"a1", "b1"}}, sum_point_data},
4649
{metric_sdk::PointAttributes{{"a2", "b2"}}, sum_point_data2}}};
@@ -67,13 +70,13 @@ struct TestDataPoints
6770
metric_sdk::InstrumentDescriptor{"library_name", "description", "unit",
6871
metric_sdk::InstrumentType::kHistogram,
6972
metric_sdk::InstrumentValueType::kDouble},
70-
metric_sdk::AggregationTemporality::kDelta, opentelemetry::common::SystemTimestamp{},
71-
opentelemetry::common::SystemTimestamp{},
73+
metric_sdk::AggregationTemporality::kDelta, start_ts, end_ts,
7274
std::vector<metric_sdk::PointDataAttributes>{
7375
{metric_sdk::PointAttributes{{"a1", "b1"}}, histogram_point_data},
7476
{metric_sdk::PointAttributes{{"a2", "b2"}}, histogram_point_data2}}};
7577
data.scope_metric_data_ = std::vector<metric_sdk::ScopeMetrics>{
7678
{instrumentation_scope.get(), std::vector<metric_sdk::MetricData>{metric_data}}};
79+
7780
return data;
7881
}
7982

@@ -93,8 +96,7 @@ struct TestDataPoints
9396
metric_sdk::InstrumentDescriptor{"library_name", "description", "unit",
9497
metric_sdk::InstrumentType::kCounter,
9598
metric_sdk::InstrumentValueType::kDouble},
96-
metric_sdk::AggregationTemporality::kDelta, opentelemetry::common::SystemTimestamp{},
97-
opentelemetry::common::SystemTimestamp{},
99+
metric_sdk::AggregationTemporality::kDelta, start_ts, end_ts,
98100
std::vector<metric_sdk::PointDataAttributes>{
99101
{metric_sdk::PointAttributes{{"a1", "b1"}}, last_value_point_data},
100102
{metric_sdk::PointAttributes{{"a2", "b2"}}, last_value_point_data2}}};
@@ -113,8 +115,7 @@ struct TestDataPoints
113115
metric_sdk::InstrumentDescriptor{"library_name", "description", "unit",
114116
metric_sdk::InstrumentType::kCounter,
115117
metric_sdk::InstrumentValueType::kDouble},
116-
metric_sdk::AggregationTemporality::kDelta, opentelemetry::common::SystemTimestamp{},
117-
opentelemetry::common::SystemTimestamp{},
118+
metric_sdk::AggregationTemporality::kDelta, start_ts, end_ts,
118119
std::vector<metric_sdk::PointDataAttributes>{
119120
{metric_sdk::PointAttributes{{"a1", "b1"}}, drop_point_data},
120121
{metric_sdk::PointAttributes{{"a2", "b2"}}, drop_point_data2}}};

0 commit comments

Comments
 (0)