grpc_main.cc 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. // Copyright The OpenTelemetry Authors
  2. // SPDX-License-Identifier: Apache-2.0
  3. #include "opentelemetry/exporters/otlp/otlp_grpc_exporter_factory.h"
  4. #include "opentelemetry/nostd/shared_ptr.h"
  5. #include "opentelemetry/sdk/trace/processor.h"
  6. #include "opentelemetry/sdk/trace/provider.h"
  7. #include "opentelemetry/sdk/trace/simple_processor_factory.h"
  8. #include "opentelemetry/sdk/trace/tracer_provider.h"
  9. #include "opentelemetry/sdk/trace/tracer_provider_factory.h"
  10. #include "opentelemetry/trace/provider.h"
  11. #include "opentelemetry/trace/tracer_provider.h"
  12. #ifdef BAZEL_BUILD
  13. # include "examples/common/foo_library/foo_library.h"
  14. #else
  15. # include "foo_library/foo_library.h"
  16. #endif
  17. namespace trace = opentelemetry::trace;
  18. namespace trace_sdk = opentelemetry::sdk::trace;
  19. namespace otlp = opentelemetry::exporter::otlp;
  20. namespace
  21. {
  22. opentelemetry::exporter::otlp::OtlpGrpcExporterOptions opts;
  23. std::shared_ptr<opentelemetry::sdk::trace::TracerProvider> provider;
  24. void InitTracer()
  25. {
  26. // Create OTLP exporter instance
  27. auto exporter = otlp::OtlpGrpcExporterFactory::Create(opts);
  28. auto processor = trace_sdk::SimpleSpanProcessorFactory::Create(std::move(exporter));
  29. provider = trace_sdk::TracerProviderFactory::Create(std::move(processor));
  30. // Set the global trace provider
  31. std::shared_ptr<opentelemetry::trace::TracerProvider> api_provider = provider;
  32. trace_sdk::Provider::SetTracerProvider(api_provider);
  33. }
  34. void CleanupTracer()
  35. {
  36. // We call ForceFlush to prevent to cancel running exportings, It's optional.
  37. if (provider)
  38. {
  39. provider->ForceFlush();
  40. }
  41. provider.reset();
  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 > 1)
  49. {
  50. opts.endpoint = argv[1];
  51. if (argc > 2)
  52. {
  53. opts.use_ssl_credentials = true;
  54. opts.ssl_credentials_cacert_path = argv[2];
  55. }
  56. }
  57. // Removing this line will leave the default noop TracerProvider in place.
  58. InitTracer();
  59. foo_library();
  60. CleanupTracer();
  61. return 0;
  62. }