Skip to content

Commit 20721e5

Browse files
authored
Bump opentelemetry-cpp version to 1.9.1, change LogExporter/LogProcessor to post-1.6 LogRecordExporter and LogRecordProcessor (#294)
1 parent 49d5efb commit 20721e5

File tree

15 files changed

+196
-76
lines changed

15 files changed

+196
-76
lines changed

exporters/fluentd/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ Increment the:
1313
* MINOR version when you add functionality in a backwards compatible manner, and
1414
* PATCH version when you make backwards compatible bug fixes.
1515

16+
## [2.0.0] 2023-06-30
17+
18+
* [EXPORTER] OpenTelemetry SDK v1.9.1 compatibility. Migrate to ObservedTimestamp from Timestamp.
19+
1620
## [1.2.0] 2022-08-29
1721

1822
* [EXPORTER] OpenTelemetry SDK v1.6.0 compatibility

exporters/fluentd/CMakeLists.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ add_definitions(-DHAVE_CONSOLE_LOG)
2626
add_definitions(-DENABLE_LOGS_PREVIEW)
2727

2828
if (MAIN_PROJECT)
29-
find_package(opentelemetry-cpp QUIET)
30-
if(opentelemetry_cpp_FOUND)
29+
find_package(opentelemetry-cpp CONFIG QUIET)
30+
if(opentelemetry-cpp_FOUND)
3131
message("Using external opentelemetry-cpp")
3232
else()
3333
include(cmake/opentelemetry-cpp.cmake)
@@ -52,6 +52,7 @@ else()
5252
endif()
5353

5454
find_package(CURL REQUIRED)
55+
find_package(Threads REQUIRED)
5556

5657
include_directories(include)
5758
# create fluentd trace exporter

exporters/fluentd/README.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Refer to install instructions [INSTALL.md](../../INSTALL.md#building-as-standalo
1212
Modify step 2 to create `cmake` build configuration for compiling fluentd as below:
1313

1414
```console
15-
$ cmake -DWITH_fluentd=ON ..
15+
$ cmake ..
1616
-- The C compiler identification is GNU 9.3.0
1717
-- The CXX compiler identification is GNU 9.3.0
1818
...
@@ -22,6 +22,18 @@ Modify step 2 to create `cmake` build configuration for compiling fluentd as bel
2222
$
2323
```
2424

25+
### VCPKG Integration
26+
27+
If integrating with VCPKG, make sure the cmake invocation defines the additional CMAKE_TOOLCHAIN_FILE.
28+
29+
For example:
30+
31+
```console
32+
$ .../opentelemetry-cpp-contrib2/exporters/fluentd$ ~/vcpkg/vcpkg install
33+
$ .../opentelemetry-cpp-contrib2/exporters/fluentd$ cmake -D CMAKE_TOOLCHAIN_FILE=/home/niande/vcpkg/scripts/buildsystems/vcpkg.cmake
34+
$ .../opentelemetry-cpp-contrib2/exporters/fluentd$ make
35+
```
36+
2537
### Bazel Install Instructions
2638

2739
TODO

exporters/fluentd/cmake/opentelemetry-cpp.cmake

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
if("${opentelemetry-cpp-tag}" STREQUAL "")
2-
set(opentelemetry-cpp-tag "v1.6.0")
2+
set(opentelemetry-cpp-tag "v1.9.1")
33
endif()
44
function(target_create _target _lib)
55
add_library(${_target} STATIC IMPORTED)
@@ -11,7 +11,7 @@ endfunction()
1111
function(build_opentelemetry)
1212
set(opentelemetry_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/opentelemetry-cpp")
1313
set(opentelemetry_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/opentelemetry-cpp")
14-
set(opentelemetry_cpp_targets opentelemetry_trace opentelemetry_logs opentelemetry_http_client_curl )
14+
set(opentelemetry_cpp_targets opentelemetry_trace opentelemetry_logs)
1515
set(opentelemetry_CMAKE_ARGS -DCMAKE_POSITION_INDEPENDENT_CODE=ON
1616
-DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
1717
-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
@@ -24,7 +24,6 @@ function(build_opentelemetry)
2424
${opentelemetry_BINARY_DIR}/sdk/src/logs/libopentelemetry_logs.a
2525
${opentelemetry_BINARY_DIR}/sdk/src/resource/libopentelemetry_resources.a
2626
${opentelemetry_BINARY_DIR}/sdk/src/common/libopentelemetry_common.a
27-
${opentelemetry_BINARY_DIR}/ext/src/http/client/curl/libopentelemetry_http_client_curl.a
2827
${CURL_LIBRARIES}
2928
)
3029

@@ -35,9 +34,7 @@ function(build_opentelemetry)
3534

3635
include_directories(SYSTEM ${opentelemetry_include_dir})
3736

38-
set(opentelemetry_deps opentelemetry_trace opentelemetry_logs opentelemetry_resources opentelemetry_common
39-
opentelemetry_http_client_curl
40-
${CURL_LIBRARIES})
37+
set(opentelemetry_deps opentelemetry_trace opentelemetry_logs opentelemetry_resources opentelemetry_common ${CURL_LIBRARIES})
4138

4239
set(make_cmd ${CMAKE_COMMAND} --build <BINARY_DIR> --target
4340
${opentelemetry_cpp_targets})
@@ -64,8 +61,6 @@ function(build_opentelemetry)
6461
"sdk/src/resource/libopentelemetry_resources.a")
6562
target_create("opentelemetry_common"
6663
"sdk/src/common/libopentelemetry_common.a")
67-
target_create("opentelemetry_http_client_curl"
68-
"ext/src/http/client/curl/libopentelemetry_http_client_curl.a")
6964
add_library(opentelemetry::libopentelemetry INTERFACE IMPORTED)
7065
add_dependencies(opentelemetry::libopentelemetry opentelemetry-cpp)
7166
set_target_properties(

exporters/fluentd/example/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ target_link_libraries(foo_library_trace opentelemetry_exporter_fluentd_trace
77

88
add_executable(fluentd_example_trace trace/main.cc)
99
target_link_libraries(fluentd_example_trace ${CMAKE_THREAD_LIBS_INIT}
10-
foo_library_trace opentelemetry_trace)
10+
foo_library_trace opentelemetry-cpp::trace)
1111

1212
add_library(foo_library_logs log/foo_library/foo_library.cc)
1313

@@ -16,4 +16,4 @@ target_link_libraries(foo_library_logs opentelemetry_exporter_fluentd_logs
1616

1717
add_executable(fluentd_example_logs log/main.cc)
1818
target_link_libraries(fluentd_example_logs ${CMAKE_THREAD_LIBS_INIT}
19-
foo_library_logs opentelemetry_logs)
19+
foo_library_logs opentelemetry-cpp::logs)

exporters/fluentd/example/log/foo_library/foo_library.cc

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,36 @@ nostd::shared_ptr<logs::Logger> get_logger() {
1414
}
1515

1616
void f1() {
17-
get_logger()->Log(opentelemetry::logs::Severity::kDebug, "logName2",
18-
{{"k1", "v1"}, {"k2", "v2"}});
17+
auto log_record = get_logger()->CreateLogRecord();
18+
log_record->SetSeverity(opentelemetry::logs::Severity::kDebug);
19+
log_record->SetAttribute("k1", "v1");
20+
log_record->SetAttribute("k2", "v2");
21+
log_record->SetTimestamp(std::chrono::system_clock::now());
22+
log_record->SetEventId(2, "logName2");
23+
24+
get_logger()->EmitLogRecord(std::move(log_record));
1925
}
2026

2127
void f2() {
22-
get_logger()->Log(opentelemetry::logs::Severity::kDebug, "logName3",
23-
"log body - 3");
28+
auto log_record = get_logger()->CreateLogRecord();
29+
log_record->SetSeverity(opentelemetry::logs::Severity::kDebug);
30+
log_record->SetBody("log body - 3");
31+
log_record->SetTimestamp(std::chrono::system_clock::now());
32+
log_record->SetEventId(3, "logName3");
33+
34+
get_logger()->EmitLogRecord(std::move(log_record));
2435

2536
f1();
2637
f1();
2738
}
2839
} // namespace
2940

3041
void foo_library() {
31-
get_logger()->Log(opentelemetry::logs::Severity::kDebug, "logName1",
32-
"log body - 1");
42+
auto log_record = get_logger()->CreateLogRecord();
43+
log_record->SetSeverity(opentelemetry::logs::Severity::kDebug);
44+
log_record->SetBody("log body - 1");
45+
log_record->SetTimestamp(std::chrono::system_clock::now());
46+
log_record->SetEventId(1, "logName1");
47+
48+
get_logger()->EmitLogRecord(std::move(log_record));
3349
}

exporters/fluentd/example/log/main.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#include "opentelemetry/exporters/fluentd/log/fluentd_exporter.h"
55
#include "opentelemetry/logs/provider.h"
66
#include "opentelemetry/sdk/logs/logger_provider.h"
7-
#include "opentelemetry/sdk/logs/simple_log_processor.h"
7+
#include "opentelemetry/sdk/logs/simple_log_record_processor.h"
88

99
// Using an exporter that simply dumps span data to stdout.
1010
#include "foo_library/foo_library.h"
@@ -20,10 +20,10 @@ namespace {
2020
void initLogger() {
2121
opentelemetry::exporter::fluentd::common::FluentdExporterOptions options;
2222
options.endpoint = "tcp://localhost:24222";
23-
auto exporter = std::unique_ptr<sdk_logs::LogExporter>(
23+
auto exporter = std::unique_ptr<sdk_logs::LogRecordExporter>(
2424
new opentelemetry::exporter::fluentd::logs::FluentdExporter(options));
25-
auto processor = std::unique_ptr<sdk_logs::LogProcessor>(
26-
new sdk_logs::SimpleLogProcessor(std::move(exporter)));
25+
auto processor = std::unique_ptr<sdk_logs::LogRecordProcessor>(
26+
new sdk_logs::SimpleLogRecordProcessor(std::move(exporter)));
2727

2828
auto provider = std::shared_ptr<opentelemetry::logs::LoggerProvider>(
2929
new opentelemetry::sdk::logs::LoggerProvider(std::move(processor)));

exporters/fluentd/include/opentelemetry/exporters/fluentd/common/fluentd_common.h

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,32 @@ void inline PopulateAttribute(
9595
}
9696
}
9797

98+
inline std::string AttributeValueToString(
99+
const opentelemetry::common::AttributeValue &value) {
100+
std::string result;
101+
if (nostd::holds_alternative<bool>(value)) {
102+
result = nostd::get<bool>(value) ? "true" : "false";
103+
} else if (nostd::holds_alternative<int>(value)) {
104+
result = std::to_string(nostd::get<int>(value));
105+
} else if (nostd::holds_alternative<int64_t>(value)) {
106+
result = std::to_string(nostd::get<int64_t>(value));
107+
} else if (nostd::holds_alternative<unsigned int>(value)) {
108+
result = std::to_string(nostd::get<unsigned int>(value));
109+
} else if (nostd::holds_alternative<uint64_t>(value)) {
110+
result = std::to_string(nostd::get<uint64_t>(value));
111+
} else if (nostd::holds_alternative<double>(value)) {
112+
result = std::to_string(nostd::get<double>(value));
113+
} else if (nostd::holds_alternative<const char*>(value)) {
114+
result = std::string(nostd::get<const char*>(value));
115+
} else if (nostd::holds_alternative<opentelemetry::v1::nostd::string_view>(value)) {
116+
result = std::string(nostd::get<opentelemetry::v1::nostd::string_view>(value).data());
117+
} else {
118+
LOG_WARN("[Fluentd Exporter] AttributeValueToString - "
119+
" Nested attributes not supported - ignored");
120+
}
121+
return result;
122+
}
123+
98124
// Ref. https://github.com/fluent/fluentd/wiki/Forward-Protocol-Specification-v1
99125
enum class TransportFormat {
100126
kMessage,

exporters/fluentd/include/opentelemetry/exporters/fluentd/common/fluentd_fields.h

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,39 +19,40 @@
1919
* - links - OT Span links array
2020
*/
2121

22-
# define FLUENT_FIELD_VERSION "env_ver" /* Event version */
23-
# define FLUENT_FIELD_TYPE "env_type" /* Event type */
24-
# define FLUENT_FIELD_NAME "name" /* Event name */
22+
# define FLUENT_FIELD_VERSION "env_ver" /* Event version */
23+
# define FLUENT_FIELD_TYPE "env_type" /* Event type */
24+
# define FLUENT_FIELD_NAME "name" /* Event name */
2525

2626
#ifndef HAVE_FIELD_TIME
2727
#define HAVE_FIELD_TIME
2828
#endif
29-
# define FLUENT_FIELD_TIME "env_time" /* Event time at envelope */
29+
# define FLUENT_FIELD_TIME "env_time" /* Event time at envelope */
3030

31-
# define FLUENT_FIELD_TRACE_ID "env_dt_traceId" /* Trace Id */
32-
# define FLUENT_FIELD_SPAN_ID "env_dt_spanId" /* Span Id */
33-
# define FLUENT_FIELD_SPAN_PARENTID "parentId" /* Span ParentId */
34-
# define FLUENT_FIELD_SPAN_KIND "kind" /* Span Kind */
35-
# define FLUENT_FIELD_SPAN_LINKS "links" /* Span Links array */
31+
# define FLUENT_FIELD_TRACE_ID "env_dt_traceId" /* Trace Id */
32+
# define FLUENT_FIELD_SPAN_ID "env_dt_spanId" /* Span Id */
33+
# define FLUENT_FIELD_SPAN_PARENTID "parentId" /* Span ParentId */
34+
# define FLUENT_FIELD_SPAN_KIND "kind" /* Span Kind */
35+
# define FLUENT_FIELD_SPAN_LINKS "links" /* Span Links array */
3636

37-
# define FLUENT_FIELD_PROPERTIES "env_properties"
37+
# define FLUENT_FIELD_PROPERTIES "env_properties"
3838

3939
/* Span option constants */
40-
# define FLUENT_FIELD_STARTTIME "startTime" /* Operation start time */
41-
# define FLUENT_FIELD_ENDTTIME "env_time" /* Operation end time */
42-
# define FLUENT_FIELD_DURATION "duration" /* Operation duration */
43-
# define FLUENT_FIELD_STATUSCODE "statusCode" /* OT Span status code */
44-
# define FLUENT_FIELD_STATUSMESSAGE "statusMessage" /* OT Span status message */
45-
# define FLUENT_FIELD_SUCCESS "success" /* OT Span success */
40+
# define FLUENT_FIELD_STARTTIME "startTime" /* Operation start time */
41+
# define FLUENT_FIELD_ENDTTIME "env_time" /* Operation end time */
42+
# define FLUENT_FIELD_DURATION "duration" /* Operation duration */
43+
# define FLUENT_FIELD_STATUSCODE "statusCode" /* OT Span status code */
44+
# define FLUENT_FIELD_STATUSMESSAGE "statusMessage" /* OT Span status message */
45+
# define FLUENT_FIELD_SUCCESS "success" /* OT Span success */
4646

4747
/*Log option constants */
48-
# define FLUENT_FIELD_TIMESTAMP "Timestamp" /* Log timestamp */
48+
# define FLUENT_FIELD_TIMESTAMP "Timestamp" /* Log timestamp */
49+
# define FLUENT_FIELD_OBSERVEDTIMESTAMP "ObservedTimestamp" /* Log observed timestamp */
4950

5051
/* Value constants */
51-
# define FLUENT_VALUE_SPAN "Span" /* Event name for Span */
52-
# define FLUENT_VALUE_LOG "Log" /* Event name for Log */
52+
# define FLUENT_VALUE_SPAN "Span" /* Event name for Span */
53+
# define FLUENT_VALUE_LOG "Log" /* Event name for Log */
5354

54-
# define FLUENT_VALUE_SPAN_START "SpanStart" /* Span Start */
55-
# define FLUENT_VALUE_SPAN_END "SpanEnd" /* Span Start */
55+
# define FLUENT_VALUE_SPAN_START "SpanStart" /* Span Start */
56+
# define FLUENT_VALUE_SPAN_END "SpanEnd" /* Span Start */
5657

5758
/* clang-format on */

exporters/fluentd/include/opentelemetry/exporters/fluentd/log/fluentd_exporter.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
#include "opentelemetry/exporters/fluentd/trace/recordable.h"
1010
#include "opentelemetry/ext/http/common/url_parser.h"
1111
#include "opentelemetry/sdk/logs/exporter.h"
12-
#include "opentelemetry/sdk/logs/log_record.h"
12+
#include "opentelemetry/logs/log_record.h"
1313

1414
#include <vector>
1515

@@ -25,7 +25,7 @@ namespace fluentd_common = opentelemetry::exporter::fluentd::common;
2525
/**
2626
* The fluentd exporter exports span data in JSON format as expected by fluentd
2727
*/
28-
class FluentdExporter final : public logs_sdk::LogExporter {
28+
class FluentdExporter final : public logs_sdk::LogRecordExporter {
2929
public:
3030
/**
3131
* Create a FluentdExporter using all default options.

0 commit comments

Comments
 (0)