Skip to content

[Bug]: Jaeger v2 Using CRD OpenTelemetryCollector cannot use 0 replicas to create Elasticsarch Index #7123

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
Jorgevillada opened this issue May 14, 2025 · 3 comments
Labels
area/storage bug good first issue Good for beginners help wanted Features that maintainers are willing to accept but do not have cycles to implement storage/elasticsearch v2

Comments

@Jorgevillada
Copy link

What happened?

jaeger 2.6.0 use default replicas(1) to create elasticsearch index when CRD OpenTelemetryCollector use 0 replicas.

relates to
#754
Maybe this condition is affecting
https://github.com/jaegertracing/jaeger/blob/main/internal/storage/elasticsearch/config/config.go#L358

Steps to reproduce

apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: ${name}
  namespace: ${namespace}
spec:
  mode: deployment
  image: jaegertracing/jaeger:2.6.0
  ports:
  - name: jaeger
    port: 16686
  config:
    service:
      extensions: [jaeger_storage, jaeger_query]
      pipelines:
        traces:
          receivers: [otlp]    
          exporters: [jaeger_storage_exporter]
    extensions:
      jaeger_query:
        storage:
          traces: elasticsearch
      jaeger_storage:
        backends:
          elasticsearch:
            elasticsearch:
              server_urls:
                - http://localhost:9200
              indices:
                index_prefix: ""
                spans:
                  date_layout: "2006-01-02"
                  rollover_frequency: "day"
                  shards: 2
                  replicas: 0
                services:
                  date_layout: "2006-01-02"
                  rollover_frequency: "day"
                  shards: 2
                  replicas: 0
                dependencies:
                  date_layout: "2006-01-02"
                  rollover_frequency: "day"
                  shards: 2
                  replicas: 0
                sampling:
                  date_layout: "2006-01-02"
                  rollover_frequency: "day"
                  shards: 2
                  replicas: 0
    receivers:
      otlp:
        protocols:
          grpc:
            endpoint: 0.0.0.0:4317
          http:
            endpoint: 0.0.0.0:4318
    exporters:
      jaeger_storage_exporter:
        trace_storage: elasticsearch

ES output settings
"number_of_replicas":"1",

{
   "jaeger-span-2025-05-14":{
      "settings":{
         "index":{
            "routing":{
               "allocation":{
                  "include":{
                     "_tier_preference":"data_content"
                  }
               }
            },
            "mapping":{
               "nested_fields":{
                  "limit":"50"
               }
            },
            "number_of_shards":"2",
            "provided_name":"jaeger-span-2025-05-14",
            "creation_date":"1747242100856",
            "requests":{
               "cache":{
                  "enable":"true"
               }
            },
            "number_of_replicas":"1",
            "uuid":"Z5eqFn_BTJObC8Hkssbcmw",
            "version":{
               "created":"8521000"
            }
         }
      }
   }
}

Expected behavior

in ES index settings

"number_of_replicas":"0"

Relevant log output

elasticsearch index setting

{
   "jaeger-span-2025-05-14":{
      "settings":{
         "index":{
            "routing":{
               "allocation":{
                  "include":{
                     "_tier_preference":"data_content"
                  }
               }
            },
            "mapping":{
               "nested_fields":{
                  "limit":"50"
               }
            },
            "number_of_shards":"2",
            "provided_name":"jaeger-span-2025-05-14",
            "creation_date":"1747242100856",
            "requests":{
               "cache":{
                  "enable":"true"
               }
            },
            "number_of_replicas":"1",
            "uuid":"Z5eqFn_BTJObC8Hkssbcmw",
            "version":{
               "created":"8521000"
            }
         }
      }
   }
}

Screenshot

No response

Additional context

No response

Jaeger backend version

v2.6.0

SDK

No response

Pipeline

OTLP > Jaeger v26.0 (using OpenTelemetryCollector CRD) > ES v8.17 storage

Stogage backend

Elasticsearch 8.17

Operating system

Linux

Deployment model

Kubernetes with Opentelemetry-operator

Deployment configs

apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: ${name}
  namespace: ${namespace}
spec:
  mode: deployment
  image: jaegertracing/jaeger:2.6.0
  ports:
  - name: jaeger
    port: 16686
  config:
    service:
      extensions: [jaeger_storage, jaeger_query]
      pipelines:
        traces:
          receivers: [otlp]    
          exporters: [jaeger_storage_exporter]
    extensions:
      jaeger_query:
        storage:
          traces: elasticsearch
      jaeger_storage:
        backends:
          elasticsearch:
            elasticsearch:
              server_urls:
                - http://localhost:9200
              indices:
                index_prefix: ""
                spans:
                  date_layout: "2006-01-02"
                  rollover_frequency: "day"
                  shards: 2
                  replicas: 0
                services:
                  date_layout: "2006-01-02"
                  rollover_frequency: "day"
                  shards: 2
                  replicas: 0
                dependencies:
                  date_layout: "2006-01-02"
                  rollover_frequency: "day"
                  shards: 2
                  replicas: 0
                sampling:
                  date_layout: "2006-01-02"
                  rollover_frequency: "day"
                  shards: 2
                  replicas: 0
    receivers:
      otlp:
        protocols:
          grpc:
            endpoint: 0.0.0.0:4317
          http:
            endpoint: 0.0.0.0:4318
    exporters:
      jaeger_storage_exporter:
        trace_storage: elasticsearch
@yurishkuro
Copy link
Member

I think the only way we can support this today is by making this field a pointer and treating nil as unset (and subject to default) while 0 as valid value not to be overwritten by default.

@yurishkuro yurishkuro added good first issue Good for beginners help wanted Features that maintainers are willing to accept but do not have cycles to implement labels May 17, 2025
@Jaishree2310
Copy link

Hi @yurishkuro,
I would like to take this token ID.
Thanks!

@vignesh-codes
Copy link

@yurishkuro I would like to raise a pr on this. Can you assign this issue to me?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/storage bug good first issue Good for beginners help wanted Features that maintainers are willing to accept but do not have cycles to implement storage/elasticsearch v2
Projects
None yet
Development

No branches or pull requests

4 participants