diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:54:28 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-21 11:54:28 +0000 |
commit | e6918187568dbd01842d8d1d2c808ce16a894239 (patch) | |
tree | 64f88b554b444a49f656b6c656111a145cbbaa28 /src/jaegertracing/opentelemetry-cpp/examples/zipkin | |
parent | Initial commit. (diff) | |
download | ceph-e6918187568dbd01842d8d1d2c808ce16a894239.tar.xz ceph-e6918187568dbd01842d8d1d2c808ce16a894239.zip |
Adding upstream version 18.2.2.upstream/18.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/jaegertracing/opentelemetry-cpp/examples/zipkin')
3 files changed, 87 insertions, 0 deletions
diff --git a/src/jaegertracing/opentelemetry-cpp/examples/zipkin/CMakeLists.txt b/src/jaegertracing/opentelemetry-cpp/examples/zipkin/CMakeLists.txt new file mode 100644 index 000000000..f55f363d7 --- /dev/null +++ b/src/jaegertracing/opentelemetry-cpp/examples/zipkin/CMakeLists.txt @@ -0,0 +1,6 @@ +include_directories(${CMAKE_SOURCE_DIR}/exporters/zipkin/include) + +add_executable(example_zipkin main.cc) +target_link_libraries( + example_zipkin ${CMAKE_THREAD_LIBS_INIT} common_foo_library + opentelemetry_trace opentelemetry_exporter_zipkin_trace) diff --git a/src/jaegertracing/opentelemetry-cpp/examples/zipkin/README.md b/src/jaegertracing/opentelemetry-cpp/examples/zipkin/README.md new file mode 100644 index 000000000..17d325ecb --- /dev/null +++ b/src/jaegertracing/opentelemetry-cpp/examples/zipkin/README.md @@ -0,0 +1,32 @@ +# Zipkin Exporter Example + +This is an example of how to use the Zipkin exporter. + +The application in `main.cc` initializes an `ZipkinExporter` instance and uses +it to register a tracer provider from the [OpenTelemetry +SDK](https://github.com/open-telemetry/opentelemetry-cpp). The application then +calls a `foo_library` which has been instrumented using the [OpenTelemetry +API](https://github.com/open-telemetry/opentelemetry-cpp/tree/main/api). + +Resulting spans are exported to the Zipkin server using the Zipkin exporter. + +Note that the Zipkin exporter connects to the server at `localhost:9411` by +default. + +## Running Zipkin server locally + +The quick way to run the Zipkin server is using Docker container : + +``console + +$ docker run -d -p 9411:9411 openzipkin/zipkin + +`` + +## Running Zipkin example + +Build this example using instructions in [INSTALL.md](../../INSTALL.md). + +## Viewing the traces + +Please visit the Zipkin UI endpoint `http://localhost:9411` diff --git a/src/jaegertracing/opentelemetry-cpp/examples/zipkin/main.cc b/src/jaegertracing/opentelemetry-cpp/examples/zipkin/main.cc new file mode 100644 index 000000000..352114749 --- /dev/null +++ b/src/jaegertracing/opentelemetry-cpp/examples/zipkin/main.cc @@ -0,0 +1,49 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +#include "opentelemetry/exporters/zipkin/zipkin_exporter.h" +#include "opentelemetry/sdk/trace/simple_processor.h" +#include "opentelemetry/sdk/trace/tracer_provider.h" +#include "opentelemetry/trace/provider.h" + +#ifdef BAZEL_BUILD +# include "examples/common/foo_library/foo_library.h" +#else +# include "foo_library/foo_library.h" +#endif + +namespace trace = opentelemetry::trace; +namespace nostd = opentelemetry::nostd; +namespace trace_sdk = opentelemetry::sdk::trace; +namespace zipkin = opentelemetry::exporter::zipkin; +namespace resource = opentelemetry::sdk::resource; + +namespace +{ +zipkin::ZipkinExporterOptions opts; +void InitTracer() +{ + // Create zipkin exporter instance + resource::ResourceAttributes attributes = {{"service.name", "zipkin_demo_service"}}; + auto resource = resource::Resource::Create(attributes); + auto exporter = std::unique_ptr<trace_sdk::SpanExporter>(new zipkin::ZipkinExporter(opts)); + auto processor = std::unique_ptr<trace_sdk::SpanProcessor>( + new trace_sdk::SimpleSpanProcessor(std::move(exporter))); + auto provider = nostd::shared_ptr<trace::TracerProvider>( + new trace_sdk::TracerProvider(std::move(processor), resource)); + // Set the global trace provider + trace::Provider::SetTracerProvider(provider); +} +} // namespace + +int main(int argc, char *argv[]) +{ + if (argc == 2) + { + opts.endpoint = argv[1]; + } + // Removing this line will leave the default noop TracerProvider in place. + InitTracer(); + + foo_library(); +} |