Skip to content

Commit 700e892

Browse files
authored
Merge branch 'open-telemetry:main' into otel-webserver-samplers
2 parents f6d868a + 8bf5ebe commit 700e892

File tree

58 files changed

+3890
-85
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+3890
-85
lines changed

.clang-format

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# Copyright The OpenTelemetry Authors
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
# See Clang docs: http://clang.llvm.org/docs/ClangFormatStyleOptions.html
5+
BasedOnStyle: Chromium
6+
7+
# Allow double brackets such as std::vector<std::vector<int>>.
8+
Standard: Cpp11
9+
10+
# Indent 2 spaces at a time.
11+
IndentWidth: 2
12+
13+
# Keep lines under 100 columns long.
14+
ColumnLimit: 100
15+
16+
# Always break before braces
17+
BreakBeforeBraces: Custom
18+
BraceWrapping:
19+
# TODO(lujc) wait for clang-format-9 support in Chromium tools
20+
# AfterCaseLabel: true
21+
AfterClass: true
22+
AfterControlStatement: true
23+
AfterEnum: true
24+
AfterFunction: true
25+
AfterNamespace: true
26+
AfterStruct: true
27+
AfterUnion: true
28+
BeforeCatch: true
29+
BeforeElse: true
30+
IndentBraces: false
31+
SplitEmptyFunction: false
32+
SplitEmptyRecord: false
33+
SplitEmptyNamespace: false
34+
35+
# Keeps extern "C" blocks unindented.
36+
AfterExternBlock: false
37+
38+
# Indent case labels.
39+
IndentCaseLabels: true
40+
41+
# Right-align pointers and references
42+
PointerAlignment: Right
43+
44+
# ANGLE likes to align things as much as possible.
45+
AlignOperands: true
46+
AlignConsecutiveAssignments: true
47+
48+
# Use 2 space negative offset for access modifiers
49+
AccessModifierOffset: -2
50+
51+
# TODO(jmadill): Decide if we want this on. Doesn't have an "all or none" mode.
52+
AllowShortCaseLabelsOnASingleLine: false
53+
54+
# Useful for spacing out functions in classes
55+
KeepEmptyLinesAtTheStartOfBlocks: true
56+
57+
# Indent nested PP directives.
58+
IndentPPDirectives: AfterHash
59+
60+
# Include blocks style
61+
IncludeBlocks: Preserve

README.md

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,47 @@ can find their home here.
66

77
## Contributing
88

9-
For information on how to contribute, consult [the contributing
10-
guidelines](./CONTRIBUTING.md)
9+
See [CONTRIBUTING.md](CONTRIBUTING.md)
10+
11+
We meet weekly, and the time of the meeting alternates between Monday at 13:00
12+
PT and Wednesday at 9:00 PT. The meeting is subject to change depending on
13+
contributors' availability. Check the [OpenTelemetry community
14+
calendar](https://github.com/open-telemetry/community#calendar)
15+
for specific dates and Zoom meeting links.
16+
17+
Meeting notes are available as a public [Google
18+
doc](https://docs.google.com/document/d/1i1E4-_y4uJ083lCutKGDhkpi3n4_e774SBLi9hPLocw/edit?usp=sharing).
19+
For edit access, get in touch on
20+
[Slack](https://cloud-native.slack.com/archives/C01N3AT62SJ).
21+
22+
[Maintainers](https://github.com/open-telemetry/community/blob/main/community-membership.md#maintainer)
23+
([@open-telemetry/cpp-contrib-maintainers](https://github.com/orgs/open-telemetry/teams/cpp-contrib-maintainers)):
24+
25+
* [Ehsan Saei](https://github.com/esigo)
26+
* [Lalit Kumar Bhasin](https://github.com/lalitb), Microsoft
27+
* [Marc Alff](https://github.com/marcalff), Oracle
28+
* [Tom Tan](https://github.com/ThomsonTan), Microsoft
29+
30+
[Approvers](https://github.com/open-telemetry/community/blob/main/community-membership.md#approver)
31+
([@open-telemetry/cpp-contrib-approvers](https://github.com/orgs/open-telemetry/teams/cpp-contrib-approvers)):
32+
33+
* [DEBAJIT DAS](https://github.com/DebajitDas), Cisco
34+
* [Johannes Tax](https://github.com/pyohannes), Grafana Labs
35+
* [Josh Suereth](https://github.com/jsuereth), Google
36+
* [Kumar Pratyush](https://github.com/kpratyus), Cisco
37+
* [Max Golovanov](https://github.com/maxgolov), Microsoft
38+
* [Siim Kallas](https://github.com/seemk), Splunk
39+
* [Tobias Stadler](https://github.com/tobiasstadler)
40+
* [Tomasz Rojek](https://github.com/TomRoSystems)
41+
42+
[Emeritus
43+
Maintainer/Approver/Triager](https://github.com/open-telemetry/community/blob/main/community-membership.md#emeritus-maintainerapprovertriager):
44+
45+
* None
46+
47+
### Thanks to all the people who have contributed
48+
49+
[![contributors](https://contributors-img.web.app/image?repo=open-telemetry/opentelemetry-cpp-contrib)](https://github.com/open-telemetry/opentelemetry-cpp-contrib/graphs/contributors)
1150

1251
## Support
1352

exporters/fluentd/CMakeLists.txt

Lines changed: 45 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -49,78 +49,84 @@ else()
4949
message("nlohmann_json package was not found. Cloning from github")
5050
endif()
5151

52-
find_package(CURL REQUIRED)
53-
find_package(Threads REQUIRED)
52+
if(MAIN_PROJECT)
53+
find_package(CURL REQUIRED)
54+
find_package(Threads REQUIRED)
55+
endif()
5456

5557
include_directories(include)
58+
5659
# create fluentd trace exporter
57-
add_library(opentelemetry_exporter_fluentd_trace src/trace/fluentd_exporter.cc
58-
src/trace/recordable.cc)
60+
add_library(opentelemetry_exporter_geneva_trace src/trace/fluentd_exporter.cc
61+
src/trace/recordable.cc)
5962
if(MAIN_PROJECT)
60-
target_include_directories(opentelemetry_exporter_fluentd_trace
63+
target_include_directories(opentelemetry_exporter_geneva_trace
6164
PRIVATE ${OPENTELEMETRY_CPP_INCLUDE_DIRS})
6265
target_link_libraries(
63-
opentelemetry_exporter_fluentd_trace
66+
opentelemetry_exporter_geneva_trace
6467
PUBLIC ${OPENTELEMETRY_CPP_LIBRARIES}
6568
INTERFACE nlohmann_json::nlohmann_json)
69+
set_target_properties(opentelemetry_exporter_geneva_trace
70+
PROPERTIES EXPORT_NAME trace)
6671
else()
6772
target_link_libraries(
68-
opentelemetry_exporter_fluentd_trace
73+
opentelemetry_exporter_geneva_trace
6974
PUBLIC opentelemetry_trace opentelemetry_resources opentelemetry_common
7075
INTERFACE nlohmann_json::nlohmann_json)
7176
endif()
7277

73-
set_target_properties(opentelemetry_exporter_fluentd_trace
74-
PROPERTIES EXPORT_NAME trace)
75-
7678
# create fluentd logs exporter
7779

78-
add_library(opentelemetry_exporter_fluentd_logs src/log/fluentd_exporter.cc
79-
src/log/recordable.cc)
80+
add_library(opentelemetry_exporter_geneva_logs src/log/fluentd_exporter.cc
81+
src/log/recordable.cc)
8082
if(MAIN_PROJECT)
81-
target_include_directories(opentelemetry_exporter_fluentd_logs
83+
target_include_directories(opentelemetry_exporter_geneva_logs
8284
PRIVATE ${OPENTELEMETRY_CPP_INCLUDE_DIRS})
8385
target_link_libraries(
84-
opentelemetry_exporter_fluentd_logs
86+
opentelemetry_exporter_geneva_logs
8587
PUBLIC ${OPENTELEMETRY_CPP_LIBRARIES}
8688
INTERFACE nlohmann_json::nlohmann_json)
89+
90+
set_target_properties(opentelemetry_exporter_geneva_logs
91+
PROPERTIES EXPORT_NAME logs)
8792
else()
8893
target_link_libraries(
89-
opentelemetry_exporter_fluentd_logs
94+
opentelemetry_exporter_geneva_logs
9095
PUBLIC opentelemetry_logs opentelemetry_resources opentelemetry_common
9196
INTERFACE nlohmann_json::nlohmann_json)
9297
endif()
93-
set_target_properties(opentelemetry_exporter_fluentd_logs PROPERTIES EXPORT_NAME
94-
logs)
98+
9599
if(nlohmann_json_clone)
96-
add_dependencies(opentelemetry_exporter_fluentd_trace
100+
add_dependencies(opentelemetry_exporter_geneva_logs
97101
nlohmann_json::nlohmann_json)
98-
add_dependencies(opentelemetry_exporter_fluentd_logs
102+
add_dependencies(opentelemetry_exporter_geneva_logs
99103
nlohmann_json::nlohmann_json)
100104
include_directories(${PROJECT_BINARY_DIR}/include)
101105
endif()
102106

103-
add_subdirectory(example)
107+
if(MAIN_PROJECT)
108+
option(WITH_EXAMPLES "Build examples" ON)
109+
endif()
104110

105-
install(
106-
TARGETS opentelemetry_exporter_fluentd_trace
107-
EXPORT "${PROJECT_NAME}-target"
108-
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
109-
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
110-
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
111+
if (WITH_EXAMPLES)
112+
add_subdirectory(example)
113+
endif()
111114

112-
install(
113-
TARGETS opentelemetry_exporter_fluentd_logs
114-
EXPORT "${PROJECT_NAME}-target"
115-
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
116-
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
117-
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
115+
if(OPENTELEMETRY_INSTALL)
116+
install(
117+
TARGETS opentelemetry_exporter_geneva_logs
118+
opentelemetry_exporter_geneva_trace
119+
EXPORT "${PROJECT_NAME}-target"
120+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
121+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
122+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
118123

119-
install(
120-
DIRECTORY include/opentelemetry/exporters/fluentd/
121-
DESTINATION include/opentelemetry/exporters/fluentd/
122-
FILES_MATCHING
123-
PATTERN "*.h")
124+
install(
125+
DIRECTORY include/opentelemetry/exporters/
126+
DESTINATION include/opentelemetry/exporters/
127+
FILES_MATCHING
128+
PATTERN "*.h")
129+
endif()
124130

125131
if(BUILD_TESTING)
126132
include(GoogleTest)
@@ -137,7 +143,7 @@ if(BUILD_TESTING)
137143
opentelemetry_common
138144
opentelemetry_trace
139145
opentelemetry_resources
140-
opentelemetry_exporter_fluentd_trace)
146+
opentelemetry_exporter_geneva_trace)
141147

142148
if(nlohmann_json_clone)
143149
add_dependencies(fluentd_recordable_trace_test nlohmann_json::nlohmann_json)
@@ -160,7 +166,7 @@ if(BUILD_TESTING)
160166
opentelemetry_common
161167
opentelemetry_logs
162168
opentelemetry_resources
163-
opentelemetry_exporter_fluentd_logs)
169+
opentelemetry_exporter_geneva_logs)
164170

165171
if(nlohmann_json_clone)
166172
add_dependencies(fluentd_recordable_logs_test nlohmann_json::nlohmann_json)

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,8 @@ inline std::string AttributeValueToString(
116116
result = std::to_string(nostd::get<double>(value));
117117
} else if (nostd::holds_alternative<const char*>(value)) {
118118
result = std::string(nostd::get<const char*>(value));
119-
} else if (nostd::holds_alternative<opentelemetry::v1::nostd::string_view>(value)) {
120-
result = std::string(nostd::get<opentelemetry::v1::nostd::string_view>(value).data());
119+
} else if (nostd::holds_alternative<opentelemetry::nostd::string_view>(value)) {
120+
result = std::string(nostd::get<opentelemetry::nostd::string_view>(value).data());
121121
} else {
122122
LOG_WARN("[Fluentd Exporter] AttributeValueToString - "
123123
" Nested attributes not supported - ignored");

exporters/fluentd/include/opentelemetry/exporters/fluentd/trace/recordable.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ class Recordable final : public sdk::trace::Recordable {
7171
const opentelemetry::sdk::instrumentationscope::InstrumentationScope
7272
&instrumentation_scope) noexcept override;
7373

74+
void SetTraceFlags(opentelemetry::trace::TraceFlags flags) noexcept override;
75+
7476
private:
7577
std::string tag_;
7678
nlohmann::json events_;
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include <opentelemetry/exporters/fluentd/common/fluentd_common.h>
7+
#include<string>
8+
9+
OPENTELEMETRY_BEGIN_NAMESPACE
10+
11+
namespace exporters {
12+
13+
namespace geneva {
14+
15+
constexpr const char *kUnixDomainScheme = "unix://";
16+
constexpr const size_t kUnixDomainSchemeLength = 7; // length of "unix://"
17+
struct GenevaExporterOptions {
18+
19+
/** socker path for unix domain socket. Should start with unix://
20+
* Example unix:///tmp/.socket_geneva_exporter
21+
*/
22+
std::string socket_endpoint ;
23+
24+
/* number of retries before failing */
25+
26+
size_t retry_count = 2;
27+
28+
/**
29+
* The maximum buffer/queue size. After the size is reached, spans/logs are
30+
* dropped.
31+
*/
32+
size_t max_queue_size = 2048; // max buffer size dropping logs/spans
33+
34+
/* The time interval between two consecutive exports. */
35+
std::chrono::milliseconds schedule_delay_millis = std::chrono::milliseconds(5000);
36+
37+
/**
38+
* The maximum batch size of every export. It must be smaller or
39+
* equal to max_queue_size.
40+
*/
41+
size_t max_export_batch_size = 512;
42+
};
43+
44+
}
45+
}
46+
OPENTELEMETRY_END_NAMESPACE
47+
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#pragma once
5+
6+
#include "geneva_exporter_options.h"
7+
#include <opentelemetry/exporters/fluentd/common/socket_tools.h>
8+
#include <opentelemetry/exporters/fluentd/log/fluentd_exporter.h>
9+
#include <opentelemetry/sdk/logs/batch_log_record_processor.h>
10+
#include <opentelemetry/sdk/logs/logger_provider.h>
11+
#include <opentelemetry/logs/provider.h>
12+
13+
OPENTELEMETRY_BEGIN_NAMESPACE
14+
15+
namespace exporters {
16+
17+
namespace geneva {
18+
19+
class GenevaLoggerExporter {
20+
21+
public:
22+
23+
static inline bool InitializeGenevaExporter( const GenevaExporterOptions options ) {
24+
// Use only unix-domain IPC for agent connectivity
25+
if (options.socket_endpoint.size() > kUnixDomainSchemeLength && options.socket_endpoint.substr(0, kUnixDomainSchemeLength) == std::string(kUnixDomainScheme)){
26+
opentelemetry::exporter::fluentd::common::FluentdExporterOptions fluentd_options;
27+
fluentd_options.retry_count = options.retry_count;
28+
fluentd_options.endpoint = options.socket_endpoint;
29+
auto exporter = std::unique_ptr<opentelemetry::sdk::logs::LogRecordExporter>(
30+
new opentelemetry::exporter::fluentd::logs::FluentdExporter(fluentd_options));
31+
auto processor = std::unique_ptr<opentelemetry::sdk::logs::LogRecordProcessor>(
32+
new opentelemetry::sdk::logs::BatchLogRecordProcessor(std::move(exporter), options.max_queue_size, options.schedule_delay_millis, options.max_export_batch_size));
33+
auto provider = std::shared_ptr<opentelemetry::logs::LoggerProvider>(
34+
new opentelemetry::sdk::logs::LoggerProvider(std::move(processor)));
35+
// Set the global logger provider
36+
opentelemetry::logs::Provider::SetLoggerProvider(provider);
37+
return true;
38+
} else {
39+
#if defined(__EXCEPTIONS)
40+
throw new std::runtime_error("Invalid endpoint! Unix domain socket should have unix:// as url-scheme");
41+
#endif
42+
return false;
43+
}
44+
}
45+
46+
};
47+
}
48+
}
49+
OPENTELEMETRY_END_NAMESPACE

0 commit comments

Comments
 (0)