File tree 3 files changed +11
-5
lines changed
examples/common/metrics_foo_library
include/opentelemetry/sdk/metrics
3 files changed +11
-5
lines changed Original file line number Diff line number Diff line change @@ -40,9 +40,10 @@ class MeasurementFetcher
40
40
{
41
41
double random_incr = (rand () % 5 ) + 1.1 ;
42
42
value_ += random_incr;
43
+ std::map<std::string, std::string> labels = get_random_attr ();
43
44
nostd::get<nostd::shared_ptr<opentelemetry::metrics::ObserverResultT<double >>>(
44
45
observer_result)
45
- ->Observe (value_ /* , labelkv */ );
46
+ ->Observe (value_, labels );
46
47
}
47
48
}
48
49
static double value_;
Original file line number Diff line number Diff line change @@ -26,11 +26,15 @@ class ObserverResultT final : public opentelemetry::metrics::ObserverResultT<T>
26
26
27
27
~ObserverResultT () override = default ;
28
28
29
- void Observe (T value) noexcept override { data_.insert ({{}, value}); }
29
+ void Observe (T value) noexcept override
30
+ {
31
+ data_[MetricAttributes{{}, attributes_processor_}] = value;
32
+ }
30
33
31
34
void Observe (T value, const opentelemetry::common::KeyValueIterable &attributes) noexcept override
32
35
{
33
- data_.insert ({MetricAttributes{attributes, attributes_processor_}, value});
36
+ data_[MetricAttributes{attributes, attributes_processor_}] =
37
+ value; // overwrites the previous value if present
34
38
}
35
39
36
40
const std::unordered_map<MetricAttributes, T, AttributeHashGenerator> &GetMeasurements ()
Original file line number Diff line number Diff line change @@ -50,6 +50,7 @@ void ObservableRegistry::CleanupCallback(opentelemetry::metrics::ObservableInstr
50
50
51
51
void ObservableRegistry::Observe (opentelemetry::common::SystemTimestamp collection_ts)
52
52
{
53
+ static DefaultAttributesProcessor default_attribute_processor;
53
54
std::lock_guard<std::mutex> lock_guard{callbacks_m_};
54
55
for (auto &callback_wrap : callbacks_)
55
56
{
@@ -69,7 +70,7 @@ void ObservableRegistry::Observe(opentelemetry::common::SystemTimestamp collecti
69
70
if (value_type == InstrumentValueType::kDouble )
70
71
{
71
72
nostd::shared_ptr<opentelemetry::metrics::ObserverResultT<double >> ob_res (
72
- new opentelemetry::sdk::metrics::ObserverResultT<double >());
73
+ new opentelemetry::sdk::metrics::ObserverResultT<double >(&default_attribute_processor ));
73
74
callback_wrap->callback (ob_res, callback_wrap->state );
74
75
storage->RecordDouble (
75
76
static_cast <opentelemetry::sdk::metrics::ObserverResultT<double > *>(ob_res.get ())
@@ -79,7 +80,7 @@ void ObservableRegistry::Observe(opentelemetry::common::SystemTimestamp collecti
79
80
else
80
81
{
81
82
nostd::shared_ptr<opentelemetry::metrics::ObserverResultT<int64_t >> ob_res (
82
- new opentelemetry::sdk::metrics::ObserverResultT<int64_t >());
83
+ new opentelemetry::sdk::metrics::ObserverResultT<int64_t >(&default_attribute_processor ));
83
84
callback_wrap->callback (ob_res, callback_wrap->state );
84
85
storage->RecordLong (
85
86
static_cast <opentelemetry::sdk::metrics::ObserverResultT<int64_t > *>(ob_res.get ())
You can’t perform that action at this time.
0 commit comments