Monitoring System 0.1.0
System resource monitoring with pluggable collectors and alerting
Loading...
Searching...
No Matches
kcenon::monitoring::opentelemetry_metrics_adapter Class Reference

Adapter for converting monitoring system metrics to OpenTelemetry format. More...

#include <opentelemetry_adapter.h>

Collaboration diagram for kcenon::monitoring::opentelemetry_metrics_adapter:
Collaboration graph

Public Member Functions

 opentelemetry_metrics_adapter (const otel_resource &resource)
 
common::Result< std::vector< otel_metric_data > > convert_metrics (const metrics_snapshot &snapshot)
 Convert metrics snapshot to OpenTelemetry metric data.
 
common::Result< std::vector< otel_metric_data > > convert_monitoring_data (const monitoring_data &data)
 Convert monitoring data to OpenTelemetry metric data.
 

Private Attributes

otel_resource resource_
 

Detailed Description

Adapter for converting monitoring system metrics to OpenTelemetry format.

Definition at line 280 of file opentelemetry_adapter.h.

Constructor & Destructor Documentation

◆ opentelemetry_metrics_adapter()

kcenon::monitoring::opentelemetry_metrics_adapter::opentelemetry_metrics_adapter ( const otel_resource & resource)
inlineexplicit

Definition at line 282 of file opentelemetry_adapter.h.

Member Function Documentation

◆ convert_metrics()

common::Result< std::vector< otel_metric_data > > kcenon::monitoring::opentelemetry_metrics_adapter::convert_metrics ( const metrics_snapshot & snapshot)
inline

Convert metrics snapshot to OpenTelemetry metric data.

Definition at line 288 of file opentelemetry_adapter.h.

288 {
289 std::vector<otel_metric_data> otel_metrics;
290
291 for (const auto& metric_value : snapshot.metrics) {
292 otel_metric_data metric;
293 metric.name = metric_value.name;
294 metric.value = metric_value.value;
295 metric.timestamp = metric_value.timestamp;
296 metric.resource = resource_;
297
298 // Add tags as attributes
299 for (const auto& [tag_name, tag_value] : metric_value.tags) {
300 metric.add_attribute(tag_name, tag_value);
301 }
302
303 // Add common resource attributes
304 metric.add_attribute("service.name", resource_.get_attribute("service.name").value_or("unknown"));
305 metric.add_attribute("service.version", resource_.get_attribute("service.version").value_or("unknown"));
306
307 otel_metrics.push_back(std::move(metric));
308 }
309
310 return common::Result<std::vector<otel_metric_data>>::ok(std::move(otel_metrics));
311 }
common::Result< std::string > get_attribute(const std::string &key) const
void add_attribute(const std::string &key, const std::string &value)

References kcenon::monitoring::otel_resource::get_attribute(), kcenon::monitoring::metrics_snapshot::metrics, kcenon::monitoring::metric::name, kcenon::monitoring::metric_value::name, kcenon::monitoring::ok, resource_, kcenon::monitoring::metric_value::tags, kcenon::monitoring::metric::timestamp, kcenon::monitoring::metric_value::timestamp, kcenon::monitoring::metric::value, and kcenon::monitoring::metric_value::value.

Here is the call graph for this function:

◆ convert_monitoring_data()

common::Result< std::vector< otel_metric_data > > kcenon::monitoring::opentelemetry_metrics_adapter::convert_monitoring_data ( const monitoring_data & data)
inline

Convert monitoring data to OpenTelemetry metric data.

Definition at line 316 of file opentelemetry_adapter.h.

316 {
317 std::vector<otel_metric_data> otel_metrics;
318
319 for (const auto& [name, value] : data.get_metrics()) {
320 otel_metric_data metric;
321 metric.name = name;
322 metric.value = value;
323 metric.timestamp = data.get_timestamp();
324 metric.resource = resource_;
325
326 // Add tags as attributes
327 for (const auto& [tag_name, tag_value] : data.get_tags()) {
328 metric.add_attribute(tag_name, tag_value);
329 }
330
331 otel_metrics.push_back(std::move(metric));
332 }
333
334 return common::Result<std::vector<otel_metric_data>>::ok(std::move(otel_metrics));
335 }

References kcenon::monitoring::monitoring_data::get_metrics(), kcenon::monitoring::monitoring_data::get_tags(), kcenon::monitoring::monitoring_data::get_timestamp(), kcenon::monitoring::metric::name, kcenon::monitoring::ok, resource_, kcenon::monitoring::metric::timestamp, and kcenon::monitoring::metric::value.

Referenced by kcenon::monitoring::opentelemetry_compatibility_layer::export_metrics(), and TEST_F().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ resource_

otel_resource kcenon::monitoring::opentelemetry_metrics_adapter::resource_
private

Definition at line 338 of file opentelemetry_adapter.h.

Referenced by convert_metrics(), and convert_monitoring_data().


The documentation for this class was generated from the following file: