Skip to content

Commit

Permalink
chore: update jaeger remote sampler example using latest otel collect…
Browse files Browse the repository at this point in the history
…or extension

Previously, example was outdated and not working properly. This commit updates the example
provided using otelcol-contrib jaegerremotesampling extension.
  • Loading branch information
hcelaloner committed Feb 6, 2024
1 parent a1b4b4d commit 7c6e086
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 18 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Expand Up @@ -14,6 +14,10 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
- Add client metric support to `go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp`. (#4707)
- Add peer attributes to spans recorded by `NewClientHandler`, `NewServerHandler` in `go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc`. (#4873)

### Changed

- Updated jaeger version in `go.opentelemetry.io/contrib/samplers/jaegerremote/example` example. (#4892)

### Deprecated

- The `RequestCount`, `RequestContentLength`, `ResponseContentLength`, `ServerLatency` constants in `go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp` are deprecated. (#4707)
Expand Down
2 changes: 1 addition & 1 deletion samplers/jaegerremote/example/docker-compose.yaml
Expand Up @@ -2,7 +2,7 @@ version: "3"
services:

otel-collector:
image: otel/opentelemetry-collector:latest
image: otel/opentelemetry-collector-contrib:latest
command: [ "--config=/etc/otel-collector.yaml" ]
volumes:
- ./otel-collector.yaml:/etc/otel-collector.yaml
Expand Down
2 changes: 1 addition & 1 deletion samplers/jaegerremote/example/go.mod
Expand Up @@ -4,6 +4,7 @@ go 1.20

require (
github.com/davecgh/go-spew v1.1.1
github.com/go-logr/stdr v1.2.2
go.opentelemetry.io/contrib/samplers/jaegerremote v0.16.0
go.opentelemetry.io/otel v1.22.0
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.22.0
Expand All @@ -12,7 +13,6 @@ require (

require (
github.com/go-logr/logr v1.4.1 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
go.opentelemetry.io/otel/metric v1.22.0 // indirect
go.opentelemetry.io/otel/trace v1.22.0 // indirect
Expand Down
30 changes: 22 additions & 8 deletions samplers/jaegerremote/example/main.go
Expand Up @@ -16,9 +16,12 @@ package main

import (
"fmt"
stdlog "log"
"os"
"time"

"github.com/davecgh/go-spew/spew"
"github.com/go-logr/stdr"

"go.opentelemetry.io/contrib/samplers/jaegerremote"
"go.opentelemetry.io/otel"
Expand All @@ -27,12 +30,19 @@ import (
)

func main() {
// Optional: an implementation of logr.Logger used for demo purposes to catch potential error logs
logger := stdr.NewWithOptions(stdlog.New(os.Stderr, "", stdlog.LstdFlags), stdr.Options{LogCaller: stdr.All})

samplingRefreshInterval := 1 * time.Minute
jaegerRemoteSampler := jaegerremote.New(
"foo",
jaegerremote.WithSamplingServerURL("http://localhost:5778"),
jaegerremote.WithSamplingRefreshInterval(10*time.Second), // decrease polling interval to get quicker feedback
jaegerremote.WithSamplingServerURL("http://localhost:5778/sampling"),
jaegerremote.WithSamplingRefreshInterval(samplingRefreshInterval), // decrease polling interval to get quicker feedback
jaegerremote.WithInitialSampler(trace.TraceIDRatioBased(0.5)),
jaegerremote.WithLogger(logger),
)
// Optional: you can decorate the jaeger sampler with parent based sampler as you wish
// parentBasedJaegerRemoteSampler := trace.ParentBased(jaegerRemoteSampler, trace.WithRemoteParentNotSampled(jaegerRemoteSampler))

exporter, _ := stdouttrace.New()

Expand All @@ -42,14 +52,18 @@ func main() {
)
otel.SetTracerProvider(tp)

ticker := time.Tick(time.Second)
fmt.Printf("\n* Initial Jaeger Remote Sampler: %v\n\n", time.Now())
spewCfg := spew.ConfigState{
Indent: " ",
DisablePointerAddresses: true,
SortKeys: true,
}
spewCfg.Dump(jaegerRemoteSampler)

ticker := time.Tick(samplingRefreshInterval / 2)
for {
<-ticker
fmt.Printf("\n* Jaeger Remote Sampler %v\n\n", time.Now())
spewCfg := spew.ConfigState{
Indent: " ",
DisablePointerAddresses: true,
}
fmt.Printf("\n* Jaeger Remote Sampler: %v\n\n", time.Now())
spewCfg.Dump(jaegerRemoteSampler)
}
}
24 changes: 16 additions & 8 deletions samplers/jaegerremote/example/otel-collector.yaml
@@ -1,17 +1,25 @@
receivers:
jaeger:
otlp:
protocols:
grpc:
remote_sampling:
host_endpoint: "0.0.0.0:5778" # default port
insecure: true
strategy_file: "/etc/strategies.json"
http:

processors:
batch:

exporters:
logging:
debug:

extensions:
jaegerremotesampling:
source:
reload_interval: 30s
file: "/etc/strategies.json"

service:
extensions: [jaegerremotesampling]
pipelines:
traces:
receivers: [ jaeger ]
exporters: [ logging ]
receivers: [otlp]
processors: [batch]
exporters: [debug]

0 comments on commit 7c6e086

Please sign in to comment.