Skip to content

Commit 950c336

Browse files
authored
[DOC] Add readme and examples for OTLP FILE exporters. (#2638)
1 parent 8f15440 commit 950c336

File tree

6 files changed

+461
-0
lines changed

6 files changed

+461
-0
lines changed

examples/otlp/BUILD

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,24 @@ cc_binary(
3737
],
3838
)
3939

40+
cc_binary(
41+
name = "example_otlp_file",
42+
srcs = [
43+
"file_main.cc",
44+
],
45+
tags = [
46+
"examples",
47+
"otlp",
48+
"otlp_file",
49+
],
50+
deps = [
51+
"//api",
52+
"//examples/common/foo_library:common_foo_library",
53+
"//exporters/otlp:otlp_file_exporter",
54+
"//sdk/src/trace",
55+
],
56+
)
57+
4058
cc_binary(
4159
name = "example_otlp_http_log",
4260
srcs = [
@@ -75,6 +93,25 @@ cc_binary(
7593
],
7694
)
7795

96+
cc_binary(
97+
name = "example_otlp_file_log",
98+
srcs = [
99+
"file_log_main.cc",
100+
],
101+
tags = [
102+
"examples",
103+
"otlp",
104+
"otlp_file_log",
105+
],
106+
deps = [
107+
"//api",
108+
"//examples/common/logs_foo_library:common_logs_foo_library",
109+
"//exporters/otlp:otlp_file_exporter",
110+
"//exporters/otlp:otlp_file_log_record_exporter",
111+
"//sdk/src/trace",
112+
],
113+
)
114+
78115
cc_binary(
79116
name = "example_otlp_grpc_metric",
80117
srcs = [
@@ -112,3 +149,22 @@ cc_binary(
112149
"//sdk/src/metrics",
113150
],
114151
)
152+
153+
cc_binary(
154+
name = "example_otlp_file_metric",
155+
srcs = [
156+
"file_metric_main.cc",
157+
],
158+
tags = [
159+
"examples",
160+
"metrics",
161+
"otlp",
162+
],
163+
deps = [
164+
"//api",
165+
"//examples/common/metrics_foo_library:common_metrics_foo_library",
166+
"//exporters/otlp:otlp_file_exporter",
167+
"//exporters/otlp:otlp_file_metric_exporter",
168+
"//sdk/src/metrics",
169+
],
170+
)

examples/otlp/CMakeLists.txt

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,3 +100,47 @@ if(WITH_OTLP_HTTP)
100100
endif()
101101

102102
endif()
103+
104+
if(WITH_OTLP_FILE)
105+
# TRACE
106+
107+
add_executable(example_otlp_file file_main.cc)
108+
109+
target_link_libraries(example_otlp_file ${CMAKE_THREAD_LIBS_INIT}
110+
common_foo_library)
111+
112+
if(DEFINED OPENTELEMETRY_BUILD_DLL)
113+
target_link_libraries(example_otlp_file opentelemetry_cpp)
114+
else()
115+
target_link_libraries(example_otlp_file opentelemetry_trace
116+
opentelemetry_exporter_otlp_file)
117+
endif()
118+
119+
# METRIC
120+
121+
add_executable(example_otlp_file_metric file_metric_main.cc)
122+
123+
target_link_libraries(example_otlp_file_metric ${CMAKE_THREAD_LIBS_INIT}
124+
common_metrics_foo_library)
125+
126+
if(DEFINED OPENTELEMETRY_BUILD_DLL)
127+
target_link_libraries(example_otlp_file_metric opentelemetry_cpp)
128+
else()
129+
target_link_libraries(example_otlp_file_metric opentelemetry_metrics
130+
opentelemetry_exporter_otlp_file_metric)
131+
endif()
132+
133+
# LOG
134+
135+
add_executable(example_otlp_file_log file_log_main.cc)
136+
137+
target_link_libraries(example_otlp_file_log ${CMAKE_THREAD_LIBS_INIT}
138+
common_logs_foo_library)
139+
if(DEFINED OPENTELEMETRY_BUILD_DLL)
140+
target_link_libraries(example_otlp_file_log opentelemetry_cpp)
141+
else()
142+
target_link_libraries(
143+
example_otlp_file_log opentelemetry_trace opentelemetry_logs
144+
opentelemetry_exporter_otlp_file opentelemetry_exporter_otlp_file_log)
145+
endif()
146+
endif()

examples/otlp/file_log_main.cc

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#include "opentelemetry/exporters/otlp/otlp_file_client_options.h"
5+
#include "opentelemetry/exporters/otlp/otlp_file_exporter_factory.h"
6+
#include "opentelemetry/exporters/otlp/otlp_file_exporter_options.h"
7+
#include "opentelemetry/exporters/otlp/otlp_file_log_record_exporter_factory.h"
8+
#include "opentelemetry/exporters/otlp/otlp_file_log_record_exporter_options.h"
9+
#include "opentelemetry/logs/provider.h"
10+
#include "opentelemetry/sdk/logs/exporter.h"
11+
#include "opentelemetry/sdk/logs/logger_provider_factory.h"
12+
#include "opentelemetry/sdk/logs/processor.h"
13+
#include "opentelemetry/sdk/logs/simple_log_record_processor_factory.h"
14+
#include "opentelemetry/sdk/trace/exporter.h"
15+
#include "opentelemetry/sdk/trace/processor.h"
16+
#include "opentelemetry/sdk/trace/simple_processor_factory.h"
17+
#include "opentelemetry/sdk/trace/tracer_provider_factory.h"
18+
#include "opentelemetry/trace/provider.h"
19+
20+
// sdk::TracerProvider and sdk::LoggerProvider is just used to call ForceFlush and prevent to cancel
21+
// running exportings when destroy and shutdown exporters.It's optional to users.
22+
#include "opentelemetry/sdk/logs/logger_provider.h"
23+
#include "opentelemetry/sdk/trace/tracer_provider.h"
24+
25+
#include <iostream>
26+
#include <string>
27+
#include <utility>
28+
29+
#ifdef BAZEL_BUILD
30+
# include "examples/common/logs_foo_library/foo_library.h"
31+
#else
32+
# include "logs_foo_library/foo_library.h"
33+
#endif
34+
35+
namespace trace = opentelemetry::trace;
36+
namespace nostd = opentelemetry::nostd;
37+
namespace otlp = opentelemetry::exporter::otlp;
38+
namespace logs_sdk = opentelemetry::sdk::logs;
39+
namespace logs = opentelemetry::logs;
40+
namespace trace_sdk = opentelemetry::sdk::trace;
41+
42+
namespace
43+
{
44+
opentelemetry::exporter::otlp::OtlpFileExporterOptions opts;
45+
opentelemetry::exporter::otlp::OtlpFileLogRecordExporterOptions log_opts;
46+
void InitTracer()
47+
{
48+
// Create OTLP exporter instance
49+
auto exporter = otlp::OtlpFileExporterFactory::Create(opts);
50+
auto processor = trace_sdk::SimpleSpanProcessorFactory::Create(std::move(exporter));
51+
std::shared_ptr<opentelemetry::trace::TracerProvider> provider =
52+
trace_sdk::TracerProviderFactory::Create(std::move(processor));
53+
// Set the global trace provider
54+
trace::Provider::SetTracerProvider(provider);
55+
}
56+
57+
void CleanupTracer()
58+
{
59+
// We call ForceFlush to prevent to cancel running exportings, It's optional.
60+
opentelemetry::nostd::shared_ptr<opentelemetry::trace::TracerProvider> provider =
61+
trace::Provider::GetTracerProvider();
62+
if (provider)
63+
{
64+
static_cast<trace_sdk::TracerProvider *>(provider.get())->ForceFlush();
65+
}
66+
67+
std::shared_ptr<opentelemetry::trace::TracerProvider> none;
68+
trace::Provider::SetTracerProvider(none);
69+
}
70+
71+
void InitLogger()
72+
{
73+
// Create OTLP exporter instance
74+
auto exporter = otlp::OtlpFileLogRecordExporterFactory::Create(log_opts);
75+
auto processor = logs_sdk::SimpleLogRecordProcessorFactory::Create(std::move(exporter));
76+
nostd::shared_ptr<logs::LoggerProvider> provider(
77+
logs_sdk::LoggerProviderFactory::Create(std::move(processor)));
78+
79+
opentelemetry::logs::Provider::SetLoggerProvider(provider);
80+
}
81+
82+
void CleanupLogger()
83+
{
84+
// We call ForceFlush to prevent to cancel running exportings, It's optional.
85+
opentelemetry::nostd::shared_ptr<logs::LoggerProvider> provider =
86+
logs::Provider::GetLoggerProvider();
87+
if (provider)
88+
{
89+
static_cast<logs_sdk::LoggerProvider *>(provider.get())->ForceFlush();
90+
}
91+
92+
nostd::shared_ptr<logs::LoggerProvider> none;
93+
opentelemetry::logs::Provider::SetLoggerProvider(none);
94+
}
95+
} // namespace
96+
97+
int main(int argc, char *argv[])
98+
{
99+
if (argc > 1)
100+
{
101+
opentelemetry::exporter::otlp::OtlpFileClientFileSystemOptions fs_backend;
102+
fs_backend.file_pattern = argv[1];
103+
opts.backend_options = fs_backend;
104+
if (argc > 2)
105+
{
106+
opentelemetry::exporter::otlp::OtlpFileClientFileSystemOptions logs_fs_backend;
107+
logs_fs_backend.file_pattern = argv[2];
108+
log_opts.backend_options = logs_fs_backend;
109+
}
110+
else
111+
{
112+
log_opts.backend_options = std::ref(std::cout);
113+
}
114+
}
115+
else
116+
{
117+
opts.backend_options = std::ref(std::cout);
118+
}
119+
InitLogger();
120+
InitTracer();
121+
foo_library();
122+
CleanupTracer();
123+
CleanupLogger();
124+
}

examples/otlp/file_main.cc

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#include "opentelemetry/exporters/otlp/otlp_file_exporter_factory.h"
5+
#include "opentelemetry/sdk/trace/processor.h"
6+
#include "opentelemetry/sdk/trace/simple_processor_factory.h"
7+
#include "opentelemetry/sdk/trace/tracer_provider_factory.h"
8+
#include "opentelemetry/trace/provider.h"
9+
10+
// sdk::TracerProvider is just used to call ForceFlush and prevent to cancel running exportings when
11+
// destroy and shutdown exporters.It's optional to users.
12+
#include "opentelemetry/sdk/trace/tracer_provider.h"
13+
14+
#include <iostream>
15+
#include <string>
16+
#include <utility>
17+
18+
#ifdef BAZEL_BUILD
19+
# include "examples/common/foo_library/foo_library.h"
20+
#else
21+
# include "foo_library/foo_library.h"
22+
#endif
23+
24+
namespace trace = opentelemetry::trace;
25+
namespace trace_sdk = opentelemetry::sdk::trace;
26+
namespace otlp = opentelemetry::exporter::otlp;
27+
28+
namespace
29+
{
30+
opentelemetry::exporter::otlp::OtlpFileExporterOptions opts;
31+
void InitTracer()
32+
{
33+
// Create OTLP exporter instance
34+
auto exporter = otlp::OtlpFileExporterFactory::Create(opts);
35+
auto processor = trace_sdk::SimpleSpanProcessorFactory::Create(std::move(exporter));
36+
std::shared_ptr<opentelemetry::trace::TracerProvider> provider =
37+
trace_sdk::TracerProviderFactory::Create(std::move(processor));
38+
// Set the global trace provider
39+
trace::Provider::SetTracerProvider(provider);
40+
}
41+
42+
void CleanupTracer()
43+
{
44+
// We call ForceFlush to prevent to cancel running exportings, It's optional.
45+
opentelemetry::nostd::shared_ptr<opentelemetry::trace::TracerProvider> provider =
46+
trace::Provider::GetTracerProvider();
47+
if (provider)
48+
{
49+
static_cast<trace_sdk::TracerProvider *>(provider.get())->ForceFlush();
50+
}
51+
52+
std::shared_ptr<opentelemetry::trace::TracerProvider> none;
53+
trace::Provider::SetTracerProvider(none);
54+
}
55+
} // namespace
56+
57+
int main(int argc, char *argv[])
58+
{
59+
if (argc > 1)
60+
{
61+
opentelemetry::exporter::otlp::OtlpFileClientFileSystemOptions fs_backend;
62+
fs_backend.file_pattern = argv[1];
63+
opts.backend_options = fs_backend;
64+
}
65+
// Removing this line will leave the default noop TracerProvider in place.
66+
InitTracer();
67+
68+
foo_library();
69+
70+
CleanupTracer();
71+
}

0 commit comments

Comments
 (0)