2
0

main.cc 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Copyright The OpenTelemetry Authors
  2. // SPDX-License-Identifier: Apache-2.0
  3. #include <memory>
  4. #include <string>
  5. #include <utility>
  6. #include "opentelemetry/exporters/zipkin/zipkin_exporter_factory.h"
  7. #include "opentelemetry/exporters/zipkin/zipkin_exporter_options.h"
  8. #include "opentelemetry/sdk/resource/resource.h"
  9. #include "opentelemetry/sdk/trace/exporter.h"
  10. #include "opentelemetry/sdk/trace/processor.h"
  11. #include "opentelemetry/sdk/trace/provider.h"
  12. #include "opentelemetry/sdk/trace/simple_processor_factory.h"
  13. #include "opentelemetry/sdk/trace/tracer_provider.h"
  14. #include "opentelemetry/sdk/trace/tracer_provider_factory.h"
  15. #include "opentelemetry/trace/tracer_provider.h"
  16. #ifdef BAZEL_BUILD
  17. # include "examples/common/foo_library/foo_library.h"
  18. #else
  19. # include "foo_library/foo_library.h"
  20. #endif
  21. namespace trace = opentelemetry::trace;
  22. namespace trace_sdk = opentelemetry::sdk::trace;
  23. namespace zipkin = opentelemetry::exporter::zipkin;
  24. namespace resource = opentelemetry::sdk::resource;
  25. namespace
  26. {
  27. zipkin::ZipkinExporterOptions opts;
  28. void InitTracer()
  29. {
  30. // Create zipkin exporter instance
  31. resource::ResourceAttributes attributes = {{"service.name", "zipkin_demo_service"}};
  32. auto resource = resource::Resource::Create(attributes);
  33. auto exporter = zipkin::ZipkinExporterFactory::Create(opts);
  34. auto processor = trace_sdk::SimpleSpanProcessorFactory::Create(std::move(exporter));
  35. std::shared_ptr<opentelemetry::trace::TracerProvider> provider =
  36. trace_sdk::TracerProviderFactory::Create(std::move(processor), resource);
  37. // Set the global trace provider
  38. trace_sdk::Provider::SetTracerProvider(provider);
  39. }
  40. void CleanupTracer()
  41. {
  42. std::shared_ptr<opentelemetry::trace::TracerProvider> none;
  43. trace_sdk::Provider::SetTracerProvider(none);
  44. }
  45. } // namespace
  46. int main(int argc, char *argv[])
  47. {
  48. if (argc == 2)
  49. {
  50. opts.endpoint = argv[1];
  51. }
  52. // Removing this line will leave the default noop TracerProvider in place.
  53. InitTracer();
  54. foo_library();
  55. CleanupTracer();
  56. return 0;
  57. }