Skip to content

Commit

Permalink
enhancement: Add different samplers and propagators support with Open…
Browse files Browse the repository at this point in the history
…Telemetry (#2201)

* Samplers: Check PR/helm values for supported types
* Propagators: Check PR/helm values for supported types
* Added tracing support via fission CLI
* Use parentbased_traceidratio as default sampler with 0.1 ratio

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
  • Loading branch information
sanketsudake committed Sep 22, 2021
1 parent 1347d73 commit 119d674
Show file tree
Hide file tree
Showing 9 changed files with 447 additions and 70 deletions.
6 changes: 6 additions & 0 deletions charts/fission-all/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,12 @@ This template generates the image name for the deployment depending on the value
- name: OTEL_EXPORTER_OTLP_HEADERS
value: "{{ .Values.openTelemetry.otlpHeaders }}"
{{- end }}
- name: OTEL_TRACES_SAMPLER
value: "{{ .Values.openTelemetry.tracesSampler }}"
- name: OTEL_TRACES_SAMPLER_ARG
value: "{{ .Values.openTelemetry.tracesSamplingRate }}"
- name: OTEL_PROPAGATORS
value: "{{ .Values.openTelemetry.propagators }}"
{{- end }}

{{- define "opentracing.envs" }}
Expand Down
25 changes: 24 additions & 1 deletion charts/fission-all/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -340,7 +340,7 @@ canaryDeployment:
enabled: true

# Use the following flags to enable OpenTracing.
# Note: OpenTracing support will be deprecated in an upcoming release.
# Note: OpenTracing support will be removed in an upcoming release.
# Please prefer using OpenTelemetry instead.
openTracing:
## set this flag to true if you wish to enable OpenTracing
Expand All @@ -364,6 +364,29 @@ openTelemetry:
# to the collector.
# Eg. otlpHeaders: "key1=value1,key2=value2"
otlpHeaders: ""
# Supported samplers:
# always_on - Sampler that always samples spans, regardless of the parent span's sampling decision.
# always_off - Sampler that never samples spans, regardless of the parent span's sampling decision.
# traceidratio - Sampler that samples probabalistically based on rate.
# parentbased_always_on - (default if empty) Sampler that respects its parent span's sampling decision, but otherwise always samples.
# parentbased_always_off - Sampler that respects its parent span's sampling decision, but otherwise never samples.
# parentbased_traceidratio - Sampler that respects its parent span's sampling decision, but otherwise samples probabalistically based on rate.
tracesSampler: "parentbased_traceidratio"
# Each Sampler type defines its own expected input, if any.
# Currently we get trace ratio for the case of,
# 1. traceidratio
# 2. parentbased_traceidratio
# Sampling probability, a number in the [0..1] range, e.g. "0.1". Default is 0.1.
tracesSamplingRate: "0.1"
# Supported providers:
# tracecontext - W3C Trace Context
# baggage - W3C Baggage
# b3 - B3 Single
# b3multi - B3 Multi
# jaeger - Jaeger uber-trace-id header
# xray - AWS X-Ray (third party)
# ottrace - OpenTracing Trace (third party)
propagators: "tracecontext,baggage"

## Message Queue Trigger Kind, KEDA: enable and configuration
mqt_keda:
Expand Down
6 changes: 6 additions & 0 deletions charts/fission-core/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@ This template generates the image name for the deployment depending on the value
- name: OTEL_EXPORTER_OTLP_HEADERS
value: "{{ .Values.openTelemetry.otlpHeaders }}"
{{- end }}
- name: OTEL_TRACES_SAMPLER
value: "{{ .Values.openTelemetry.tracesSampler }}"
- name: OTEL_TRACES_SAMPLER_ARG
value: "{{ .Values.openTelemetry.tracesSamplingRate }}"
- name: OTEL_PROPAGATORS
value: "{{ .Values.openTelemetry.propagators }}"
{{- end }}

{{- define "opentracing.envs" }}
Expand Down
25 changes: 24 additions & 1 deletion charts/fission-core/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ canaryDeployment:
enabled: false

# Use the following flags to enable OpenTracing.
# Note: OpenTracing support will be deprecated in an upcoming release.
# Note: OpenTracing support will be removed in an upcoming release.
# Please prefer using OpenTelemetry instead.
openTracing:
## set this flag to true if you wish to enable OpenTracing
Expand All @@ -254,6 +254,29 @@ openTelemetry:
# to the collector.
# Eg. otlpHeaders: "key1=value1,key2=value2"
otlpHeaders: ""
# Supported samplers:
# always_on - Sampler that always samples spans, regardless of the parent span's sampling decision.
# always_off - Sampler that never samples spans, regardless of the parent span's sampling decision.
# traceidratio - Sampler that samples probabalistically based on rate.
# parentbased_always_on - (default if empty) Sampler that respects its parent span's sampling decision, but otherwise always samples.
# parentbased_always_off - Sampler that respects its parent span's sampling decision, but otherwise never samples.
# parentbased_traceidratio - Sampler that respects its parent span's sampling decision, but otherwise samples probabalistically based on rate.
tracesSampler: "parentbased_traceidratio"
# Each Sampler type defines its own expected input, if any.
# Currently we get trace ratio for the case of,
# 1. traceidratio
# 2. parentbased_traceidratio
# Sampling probability, a number in the [0..1] range, e.g. "0.1". Default is 0.1.
tracesSamplingRate: "0.1"
# Supported providers:
# tracecontext - W3C Trace Context
# baggage - W3C Baggage
# b3 - B3 Single
# b3multi - B3 Multi
# jaeger - Jaeger uber-trace-id header
# xray - AWS X-Ray (third party)
# ottrace - OpenTracing Trace (third party)
propagators: "tracecontext,baggage"

## Message Queue Trigger Kind, KEDA: enable and configuration
mqt_keda:
Expand Down
22 changes: 13 additions & 9 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -54,21 +54,25 @@ require (
github.com/ulikunitz/xz v0.5.9 // indirect
github.com/wcharczuk/go-chart v2.0.1+incompatible
go.opencensus.io v0.23.0
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.22.0
go.opentelemetry.io/otel v1.0.0-RC2
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.0-RC2
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.0-RC2
go.opentelemetry.io/otel/sdk v1.0.0-RC2
go.opentelemetry.io/otel/trace v1.0.0-RC2
go.uber.org/zap v1.18.1
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.23.0
go.opentelemetry.io/contrib/propagators/aws v0.23.0
go.opentelemetry.io/contrib/propagators/b3 v0.23.0
go.opentelemetry.io/contrib/propagators/jaeger v0.23.0
go.opentelemetry.io/contrib/propagators/ot v0.23.0
go.opentelemetry.io/otel v1.0.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.0
go.opentelemetry.io/otel/sdk v1.0.0
go.opentelemetry.io/otel/trace v1.0.0
go.uber.org/zap v1.19.1
golang.org/x/net v0.0.0-20210614182718-04defd469f4e
google.golang.org/grpc v1.39.0
google.golang.org/grpc v1.40.0
gotest.tools v2.2.0+incompatible // indirect
k8s.io/api v0.21.4
k8s.io/apiextensions-apiserver v0.21.4
k8s.io/apimachinery v0.21.4
k8s.io/client-go v0.21.4
k8s.io/klog v1.0.0
k8s.io/metrics v0.21.4
sigs.k8s.io/controller-runtime v0.9.6
sigs.k8s.io/controller-runtime v0.9.7
)
Loading

0 comments on commit 119d674

Please sign in to comment.