Skip to content
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

Jaeger: DEV ES v8.x Compatibility #1505

Closed
Souheil-Yazji opened this issue Jan 11, 2023 · 3 comments
Closed

Jaeger: DEV ES v8.x Compatibility #1505

Souheil-Yazji opened this issue Jan 11, 2023 · 3 comments
Assignees
Labels
kind/bug Something isn't working triage/support

Comments

@Souheil-Yazji
Copy link
Contributor

After correctly configuring the ES service thanks to Will, we ran into an issue where the Jaeger Collector, a component created by the operator, was running into the following error:
"msg":"Failed to create span writer","error":"elastic: Error 400 (Bad Request): unknown key [template] in the template

After doing some research, it seems that the latest release of Jaeger (1.41) does not yet support ES v8.x+. There is a long-run issue open in the Jaeger repository for this.
Also supporting this discovery https://www.jaegertracing.io/docs/1.41/deployment/#elasticsearch, does not include 8.

For reference, our ElasticSearch instance is currently at v8.5.0

According to ES, it should be possible to integrate https://www.elastic.co/guide/en/apm/guide/current/jaeger-integration.html

@Jose-Matsuda
Copy link
Contributor

Jose-Matsuda commented Jan 18, 2023

Leaving a comment here with info I have synthesized from talking with Pat and Souheil. (if the two of you want to have comments leaving what you have learned go ahead but this will be my property to edit.

Attempting to continue to leverage Jaeger

Other options to Jaeger

Leveraging APM

  • We could use APM which seems to have similar features to Jaeger, and really depends on what we need out of this (do we just want those fancy span graphs?)

Caveats

  • Currently it does not seem like APM supports getting traces directly from istio. If we wanted to use those istio traces we would need the jaeger-agent in some form to consume said traces.
  • If we don't want jaeger at all, we would need to inject an agent into the pods to allow APM to get data (since cant get it from istio).

Leveraging OTel and APM

OpenTelemetry is not an observability back-end like Jaeger or Prometheus. Instead, it supports exporting data to a variety of open source and commercial back-ends. which we can combine with APM. Using the opentelemetry operator we can set the mode to be in sidecar to inject into our pods.

Leveraging OTel and Jaeger

  • From above, OTel seems like what would generate the data, so in our current setup it would be like the istio sidecar generating and sending traces. Once applications have the OTel library in them (idk how feasible that is)
    image

  • In the video "if you have a jaeger instrumentation library... you can just point it to the collector, and the collector would take advantage of that and send it to your destination"

  • In the demo (also in the video screenshotted above) they present OpenTel with Jaeger + Elastic

  • I don't think this solves the existing problem of needing a "span storage" area though...

Zipkin

Maybe I shouldn't be surprised but the storage component for zipkin is also elasticsearch (tested against es 6-7.x no action on this issue for ES 8.3.0) and cassandra

@Jose-Matsuda
Copy link
Contributor

Jose-Matsuda commented Jan 20, 2023

The OpenTelemetry and ES APM pivot (details to be edited in)

Rationale: Jaeger was proving difficult to work with in our environment, and the workarounds needed introduced more components than thought necessary. We are moving in favour of using Elastic APM which seems to provide similar functionality to Jager
Because APM does not support using istio traces to get spans, we need span data somehow by either injecting APM Agents or using OpenTelemetry agents
With talks of looking at OpenSearch as a path forward we decided on leveraging OpenTelemetry instead of digging too deep into Elastic which does support Otel. Do note however that envoy is looking to send Otel compatible data so possibly in the future we might be able to do away with whatever agent we add at current time of implementation.

Plan Moving forward (Souheil or Pat feel free to edit this section)

Following bullets are to be split into tasks

@Jose-Matsuda
Copy link
Contributor

Closing as completed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/bug Something isn't working triage/support
Projects
None yet
Development

No branches or pull requests

3 participants