tracing.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import { SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base'
  2. import { Resource } from '@opentelemetry/resources'
  3. import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'
  4. import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http/build/esnext'
  5. import { WebTracerProvider } from '@opentelemetry/sdk-trace-web'
  6. import { ZoneContextManager } from '@opentelemetry/context-zone'
  7. import { registerInstrumentations } from '@opentelemetry/instrumentation'
  8. import { getWebAutoInstrumentations } from '@opentelemetry/auto-instrumentations-web'
  9. import getMeta from './utils/meta'
  10. if (getMeta('ol-useOpenTelemetry')) {
  11. const resource = new Resource({
  12. [SemanticResourceAttributes.SERVICE_NAME]: 'frontend',
  13. [SemanticResourceAttributes.SERVICE_NAMESPACE]: 'Overleaf',
  14. })
  15. const provider = new WebTracerProvider({ resource })
  16. provider.addSpanProcessor(
  17. new SimpleSpanProcessor(
  18. new OTLPTraceExporter({
  19. url: `https://${window.location.hostname}/otlp/v1/traces`,
  20. })
  21. )
  22. )
  23. provider.register({
  24. // Changing default contextManager to use ZoneContextManager - supports asynchronous operations - optional
  25. contextManager: new ZoneContextManager(),
  26. })
  27. // Registering instrumentations
  28. registerInstrumentations({
  29. instrumentations: [getWebAutoInstrumentations()],
  30. })
  31. }