···970970 return repoIDs
971971}
972972973973-func hostnameBestEffort() string {
974974- if h := os.Getenv("NODE_NAME"); h != "" {
975975- return h
976976- }
977977- if h := os.Getenv("HOSTNAME"); h != "" {
978978- return h
979979- }
980980- hostname, _ := os.Hostname()
981981- return hostname
982982-}
983983-984973// setupTmpDir sets up a temporary directory on the same volume as the
985974// indexes.
986975//
···12071196 fs.Int64Var(&rc.indexConcurrency, "index_concurrency", getEnvWithDefaultInt64("SRC_INDEX_CONCURRENCY", 1), "the number of concurrent index jobs to run.")
12081197 fs.StringVar(&rc.index, "index", getEnvWithDefaultString("DATA_DIR", build.DefaultDir), "set index directory to use")
12091198 fs.StringVar(&rc.listen, "listen", ":6072", "listen on this address.")
12101210- fs.StringVar(&rc.hostname, "hostname", hostnameBestEffort(), "the name we advertise to Sourcegraph when asking for the list of repositories to index. Can also be set via the NODE_NAME environment variable.")
11991199+ fs.StringVar(&rc.hostname, "hostname", zoekt.HostnameBestEffort(), "the name we advertise to Sourcegraph when asking for the list of repositories to index. Can also be set via the NODE_NAME environment variable.")
12111200 fs.Float64Var(&rc.cpuFraction, "cpu_fraction", 1.0, "use this fraction of the cores for indexing.")
12121201 fs.IntVar(&rc.blockProfileRate, "block_profile_rate", getEnvWithDefaultInt("BLOCK_PROFILE_RATE", -1), "Sampling rate of Go's block profiler in nanoseconds. Values <=0 disable the blocking profiler Var(default). A value of 1 includes every blocking event. See https://pkg.go.dev/runtime#SetBlockProfileRate")
12131202 fs.DurationVar(&rc.backoffDuration, "backoff_duration", getEnvWithDefaultDuration("BACKOFF_DURATION", 10*time.Minute), "for the given duration we backoff from enqueue operations for a repository that's failed its previous indexing attempt. Consecutive failures increase the duration of the delay linearly up to the maxBackoffDuration. A negative value disables indexing backoff.")
···15211510 liblog := sglog.Init(sglog.Resource{
15221511 Name: "zoekt-indexserver",
15231512 Version: zoekt.Version,
15241524- InstanceID: hostnameBestEffort(),
15131513+ InstanceID: zoekt.HostnameBestEffort(),
15251514 })
15261515 defer liblog.Sync()
15271516
···2121 "hash/crc64"
2222 "html/template"
2323 "log"
2424+ "os"
2425 "path/filepath"
2526 "sort"
2627 "time"
···39404041// Filled by the linker
4142var Version string
4343+4444+func HostnameBestEffort() string {
4545+ if h := os.Getenv("NODE_NAME"); h != "" {
4646+ return h
4747+ }
4848+ if h := os.Getenv("HOSTNAME"); h != "" {
4949+ return h
5050+ }
5151+ hostname, _ := os.Hostname()
5252+ return hostname
5353+}
42544355// Store character (unicode codepoint) offset (in bytes) this often.
4456const runeOffsetFrequency = 100
+8-3
internal/tracer/jaeger.go
···55 "reflect"
6677 "github.com/opentracing/opentracing-go"
88+ sglog "github.com/sourcegraph/log"
89 "github.com/uber/jaeger-client-go"
910 jaegercfg "github.com/uber/jaeger-client-go/config"
1011 jaegermetrics "github.com/uber/jaeger-lib/metrics"
1112)
12131313-func configureJaeger(svcName string, version string) (opentracing.Tracer, error) {
1414+func configureJaeger(resource sglog.Resource) (opentracing.Tracer, error) {
1415 cfg, err := jaegercfg.FromEnv()
1515- cfg.ServiceName = svcName
1616+ cfg.ServiceName = resource.Name
1617 if err != nil {
1718 return nil, err
1819 }
1919- cfg.Tags = append(cfg.Tags, opentracing.Tag{Key: "service.version", Value: version})
2020+ cfg.Tags = append(
2121+ cfg.Tags,
2222+ opentracing.Tag{Key: "service.version", Value: resource.Version},
2323+ opentracing.Tag{Key: "service.instance.id", Value: resource.InstanceID},
2424+ )
2025 if reflect.DeepEqual(cfg.Sampler, &jaegercfg.SamplerConfig{}) {
2126 // Default sampler configuration for when it is not specified via
2227 // JAEGER_SAMPLER_* env vars. In most cases, this is sufficient
+7-5
internal/tracer/opentelemetry.go
···8899 "github.com/opentracing/opentracing-go"
1010 "github.com/pkg/errors"
1111+ sglog "github.com/sourcegraph/log"
1112 jaegerpropagator "go.opentelemetry.io/contrib/propagators/jaeger"
1213 otpropagator "go.opentelemetry.io/contrib/propagators/ot"
1314 "go.opentelemetry.io/otel"
···1617 "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
1718 "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
1819 w3cpropagator "go.opentelemetry.io/otel/propagation"
1919- "go.opentelemetry.io/otel/sdk/resource"
2020+ otelresource "go.opentelemetry.io/otel/sdk/resource"
2021 oteltracesdk "go.opentelemetry.io/otel/sdk/trace"
2122 semconv "go.opentelemetry.io/otel/semconv/v1.4.0"
2223···3334//
3435// This setup is based on the one done in sourcegraph/sourcegraph - when making changes,
3536// be wary of divergences from the source: https://github.com/sourcegraph/sourcegraph/blob/main/internal/tracer/otel.go
3636-func configureOpenTelemetry(svcName string, version string) (opentracing.Tracer, error) {
3737+func configureOpenTelemetry(resource sglog.Resource) (opentracing.Tracer, error) {
3738 // Ensure propagation between services continues to work. This is also done by another
3839 // project that uses the OpenTracing bridge:
3940 // https://sourcegraph.com/github.com/thanos-io/thanos/-/blob/pkg/tracing/migration/bridge.go?L62
···5152 return nil, fmt.Errorf("new exporter: %w", err)
5253 }
5354 provider := oteltracesdk.NewTracerProvider(
5454- oteltracesdk.WithResource(resource.NewWithAttributes(
5555+ oteltracesdk.WithResource(otelresource.NewWithAttributes(
5556 semconv.SchemaURL,
5656- semconv.ServiceNameKey.String(svcName),
5757- semconv.ServiceVersionKey.String(version))),
5757+ semconv.ServiceNameKey.String(resource.Name),
5858+ semconv.ServiceInstanceIDKey.String(resource.InstanceID),
5959+ semconv.ServiceVersionKey.String(resource.Version))),
5860 oteltracesdk.WithSampler(oteltracesdk.AlwaysSample()),
5961 oteltracesdk.WithSpanProcessor(processor),
6062 )
+4-3
internal/tracer/tracer.go
···66 "strconv"
7788 "github.com/opentracing/opentracing-go"
99+ sglog "github.com/sourcegraph/log"
910)
10111112type tracerType string
···3536// Init should only be called from main and only once
3637// It will initialize the configured tracer, and register it as the global tracer
3738// This MUST be the same tracer as the one used by Sourcegraph
3838-func Init(svcName, version string) {
3939+func Init(resource sglog.Resource) {
3940 var (
4041 tt = inferTracerType()
4142 tracer opentracing.Tracer
···4344 )
4445 switch tt {
4546 case tracerTypeJaeger:
4646- tracer, err = configureJaeger(svcName, version)
4747+ tracer, err = configureJaeger(resource)
4748 if err != nil {
4849 log.Printf("failed to configure Jaeger tracer: %v", err)
4950 return
···5152 log.Printf("INFO: using Jaeger tracer")
52535354 case tracerTypeOpenTelemetry:
5454- tracer, err = configureOpenTelemetry(svcName, version)
5555+ tracer, err = configureOpenTelemetry(resource)
5556 if err != nil {
5657 log.Printf("failed to configure OpenTelemetry tracer: %v", err)
5758 return