DemoSampler.java 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /*
  2. * Copyright The OpenTelemetry Authors
  3. * SPDX-License-Identifier: Apache-2.0
  4. */
  5. package com.example.javaagent;
  6. import io.opentelemetry.api.common.Attributes;
  7. import io.opentelemetry.api.trace.SpanKind;
  8. import io.opentelemetry.context.Context;
  9. import io.opentelemetry.sdk.trace.data.LinkData;
  10. import io.opentelemetry.sdk.trace.samplers.Sampler;
  11. import io.opentelemetry.sdk.trace.samplers.SamplingDecision;
  12. import io.opentelemetry.sdk.trace.samplers.SamplingResult;
  13. import java.util.List;
  14. /**
  15. * This demo sampler filters out all internal spans whose name contains string "greeting".
  16. *
  17. * <p>See <a
  18. * href="https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/trace/sdk.md#sampling">
  19. * OpenTelemetry Specification</a> for more information about span sampling.
  20. *
  21. * @see DemoAutoConfigurationCustomizerProvider
  22. */
  23. public class DemoSampler implements Sampler {
  24. @Override
  25. public SamplingResult shouldSample(
  26. Context parentContext,
  27. String traceId,
  28. String name,
  29. SpanKind spanKind,
  30. Attributes attributes,
  31. List<LinkData> parentLinks) {
  32. if (spanKind == SpanKind.INTERNAL && name.contains("greeting")) {
  33. return SamplingResult.create(SamplingDecision.DROP);
  34. } else {
  35. return SamplingResult.create(SamplingDecision.RECORD_AND_SAMPLE);
  36. }
  37. }
  38. @Override
  39. public String getDescription() {
  40. return "DemoSampler";
  41. }
  42. }