diff --git a/agents/otlp/src/otlp_common.cc b/agents/otlp/src/otlp_common.cc index 5a900808ad..ff44135940 100644 --- a/agents/otlp/src/otlp_common.cc +++ b/agents/otlp/src/otlp_common.cc @@ -5,6 +5,7 @@ #include "env-inl.h" #include "nlohmann/json.hpp" #include "opentelemetry/sdk/instrumentationscope/instrumentation_scope.h" +#include "opentelemetry/sdk/logs/recordable.h" #include "opentelemetry/sdk/resource/resource.h" #include "opentelemetry/sdk/resource/semantic_conventions.h" #include "opentelemetry/sdk/trace/recordable.h" @@ -21,7 +22,9 @@ using std::chrono::microseconds; using std::chrono::milliseconds; using std::chrono::nanoseconds; +using opentelemetry::common::SystemTimestamp; using opentelemetry::sdk::instrumentationscope::InstrumentationScope; +using LogsRecordable = opentelemetry::sdk::logs::Recordable; using opentelemetry::sdk::metrics::AggregationTemporality; using opentelemetry::sdk::metrics::MetricData; using opentelemetry::sdk::metrics::InstrumentDescriptor; @@ -73,8 +76,8 @@ static void add_counter(std::vector& metrics, MetricData metric_data{ InstrumentDescriptor{ name, "", unit, InstrumentType::kCounter, type}, AggregationTemporality::kCumulative, - opentelemetry::common::SystemTimestamp{ start }, - opentelemetry::common::SystemTimestamp{ end }, + SystemTimestamp{ start }, + SystemTimestamp{ end }, std::vector{{ attrs, sum_point_data }} }; metrics.push_back(metric_data); @@ -94,8 +97,8 @@ static void add_gauge(std::vector& metrics, InstrumentDescriptor{ name, "", unit, InstrumentType::kObservableGauge, type }, AggregationTemporality::kCumulative, - opentelemetry::common::SystemTimestamp{ start }, - opentelemetry::common::SystemTimestamp{ end }, + SystemTimestamp{ start }, + SystemTimestamp{ end }, std::vector{{ attrs, lv_point_data }} }; metrics.push_back(metric_data); @@ -254,6 +257,18 @@ NSOLID_ENV_METRICS_NUMBERS(V) #undef V } +void fill_log_recordable(LogsRecordable* recordable, + const LogWriteInfo& info) { + recordable->SetBody(info.msg); + recordable->SetSeverity(static_cast(info.severity)); + SystemTimestamp ts(duration_cast( + milliseconds(static_cast(info.timestamp)))); + recordable->SetTimestamp(ts); + recordable->SetObservedTimestamp(ts); + recordable->SetResource(*GetResource()); + recordable->SetInstrumentationScope(*GetScope()); +} + void fill_recordable(Recordable* recordable, const Tracer::SpanStor& s) { recordable->SetName(s.name); time_point start{ diff --git a/agents/otlp/src/otlp_common.h b/agents/otlp/src/otlp_common.h index 62dde3781d..de80cc4f0b 100644 --- a/agents/otlp/src/otlp_common.h +++ b/agents/otlp/src/otlp_common.h @@ -19,6 +19,24 @@ class Recordable; } // namespace sdk OPENTELEMETRY_END_NAMESPACE +// Class pre-declaration +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk { +namespace instrumentationscope { +class InstrumentationScope; +} +namespace logs { +class Recordable; +} +namespace resource { +class Resource; +} +namespace trace { +class Recordable; +} +} +OPENTELEMETRY_END_NAMESPACE + namespace node { namespace nsolid { namespace otlp { @@ -34,6 +52,9 @@ void fill_proc_metrics(std::vector&, void fill_env_metrics(std::vector&, const ThreadMetrics::MetricsStor& stor); +void fill_log_recordable(OPENTELEMETRY_NAMESPACE::sdk::logs::Recordable*, + const LogWriteInfo&); + void fill_recordable(OPENTELEMETRY_NAMESPACE::sdk::trace::Recordable*, const Tracer::SpanStor&); diff --git a/deps/opentelemetry-cpp/otlp-http-exporter.gyp b/deps/opentelemetry-cpp/otlp-http-exporter.gyp index 026fdeef19..d81669f1b3 100644 --- a/deps/opentelemetry-cpp/otlp-http-exporter.gyp +++ b/deps/opentelemetry-cpp/otlp-http-exporter.gyp @@ -8,6 +8,8 @@ 'exporters/otlp/src/otlp_grpc_client.cc', 'exporters/otlp/src/otlp_grpc_exporter_options.cc', 'exporters/otlp/src/otlp_grpc_exporter.cc', + 'exporters/otlp/src/otlp_grpc_log_record_exporter.cc', + 'exporters/otlp/src/otlp_grpc_log_record_exporter_options.cc', 'exporters/otlp/src/otlp_grpc_metric_exporter_options.cc', 'exporters/otlp/src/otlp_grpc_metric_exporter.cc', 'exporters/otlp/src/otlp_grpc_utils.cc', @@ -15,6 +17,8 @@ 'exporters/otlp/src/otlp_http_client.cc', 'exporters/otlp/src/otlp_http_exporter.cc', 'exporters/otlp/src/otlp_http_exporter_options.cc', + 'exporters/otlp/src/otlp_http_log_record_exporter.cc', + 'exporters/otlp/src/otlp_http_log_record_exporter_options.cc', 'exporters/otlp/src/otlp_http_metric_exporter.cc', 'exporters/otlp/src/otlp_http_metric_exporter_options.cc', 'exporters/otlp/src/otlp_log_recordable.cc', @@ -28,6 +32,7 @@ 'sdk/src/common/base64.cc', 'sdk/src/common/env_variables.cc', 'sdk/src/common/global_log_handler.cc', + 'sdk/src/logs/exporter.cc', 'sdk/src/logs/readable_log_record.cc', 'sdk/src/resource/resource.cc', 'sdk/src/resource/resource_detector.cc',