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 v2 based on OpenTelemetry collector #4843

Open
6 of 24 tasks
yurishkuro opened this issue Oct 15, 2023 · 10 comments
Open
6 of 24 tasks

Jaeger v2 based on OpenTelemetry collector #4843

yurishkuro opened this issue Oct 15, 2023 · 10 comments
Assignees
Labels
area/otel changelog:breaking-change Change that is breaking public APIs or established behavior changelog:new-feature Change that should be called out as new feature in CHANGELOG enhancement help wanted Features that maintainers are willing to accept but do not have cycles to implement meta-issue An tracking issue that requires work in other repos v2

Comments

@yurishkuro
Copy link
Member

yurishkuro commented Oct 15, 2023

Proposal: https://docs.google.com/document/d/1s4_6VgAS7qAVp6iEm5KYvpiGw3h2Ja5T5HpKo29iv00/view

This replaces the previous attempt: #3500.

Work tracked in the project https://github.com/orgs/jaegertracing/projects/3

Roadmap

Proof of concept

Feature parity

Prepare for Beta

  • Add to integration tests
  • Add to release pipeline
  • Documentation

Prepare for GA

Enhancements

@yurishkuro yurishkuro added enhancement meta-issue An tracking issue that requires work in other repos changelog:new-feature Change that should be called out as new feature in CHANGELOG changelog:breaking-change Change that is breaking public APIs or established behavior area/otel labels Oct 15, 2023
@yurishkuro yurishkuro pinned this issue Oct 15, 2023
@yurishkuro yurishkuro changed the title feat: Jaeger v2 based on OpenTelemetry collector Jaeger v2 based on OpenTelemetry collector Oct 17, 2023
@yurishkuro yurishkuro added the help wanted Features that maintainers are willing to accept but do not have cycles to implement label Oct 20, 2023
yurishkuro added a commit that referenced this issue Oct 21, 2023
## Which problem is this PR solving?
- Part of #4843
- Prototype defining primary and archive storage used by query service

## Description of the changes
- Introduce `trace_storage_archive` argument to extension/jaegerquery
  - This is temporary, need to design a better shape for the config
- Implement initialization of archive storage. Tested manually.
- Changed memstore to implement archive storage (maybe not a good idea
in retrospect)
- Change how no-config condition is detected as the previous changes
worked for all-in-one but broke with-config mode
  - Need to start adding some basic integration tests
- There is a better way than using default configs for all in one -
override `--config` flag with `yaml: ....` string an provide
configuration as a file (embed the file into the binary)
- Some refactoring of querysvc/app to be able to reuse
querysvc.QueryOptions in v2 config

## How was this change tested?
- Run all-in-one
- Run with config
- Run with custom UI config to enable Archive button (it should really
be dynamically determined by backend capability)

Signed-off-by: Yuri Shkuro <github@ysh.us>
yurishkuro added a commit that referenced this issue Oct 21, 2023
## Which problem is this PR solving?
- Part of #4843 
- Improvement on #4842, where all-in-one configuration was created via
createDefaultConfig methods of extensions called by OTel automatically.
This resulted in the memstore always being present in the config and
always instantiated, which is not the desired behavior.

## Description of the changes
- The cmd.RunE interceptor is changed to provide an internal value to
the `--config` flag if no flag was present on cmd line
- This avoids creating the collector manually, once we set the flag we
always delegate back to official OTel code
- The value for the config is embedded in the binary and passed using
`yaml:...`, which is one of the official config providers in OTel

## How was this change tested?
- Ran all-in-one manually

Signed-off-by: Yuri Shkuro <github@ysh.us>
@pavolloffay
Copy link
Member

The V2 is as well affected by open-telemetry/opentelemetry-collector#8768, It can cause startup failure.

yurishkuro added a commit that referenced this issue Nov 3, 2023
## Which problem is this PR solving?
- Enable testing of jaeger-v2 in all-in-one mode in CI
- Part of #4843

## Description of the changes
- Add `cmd/jaeger-v2/Dockerfile`
- Parameterize `scripts/build-all-in-one-image.sh` to allow running
`jaeger-v2` instead of `all-in-one`
- Call this script with `jaeger-v2` from
.github/workflows/ci-all-in-one-build.yml

## How was this change tested?
```shell
$ BINARY=jaeger-v2 BRANCH=v2-docker GITHUB_SHA=abcd scripts/build-all-in-one-image.sh pr-only
```

---------

Signed-off-by: Yuri Shkuro <github@ysh.us>
yurishkuro added a commit that referenced this issue Nov 3, 2023
## Which problem is this PR solving?
- Part of #4843

## Description of the changes
- Per discussion with maintainers, rename `jaeger-v2` binary to just
`jaeger`.
- Motivation:
- In the long run it's not going to be convenient for users to refer to
`jaeger-v2`, projects typically don't do that
  - The name `jaeger` is currently unused (e.g. in Docker Hub)
- Since we're combining all deployment units into one binary, `jaeger`
name is quite appropriate

## How was this change tested?
```
$ go run -tags=ui ./cmd/jaeger
```
`grep -ri jaeger-v2 .` does not find any references (except in the
changelog)

---------

Signed-off-by: Yuri Shkuro <github@ysh.us>
yurishkuro added a commit that referenced this issue Nov 3, 2023
## Which problem is this PR solving?
- Part of #4843

## Description of the changes
- Remove early exit and allow `jaeger` binary to be published to Docker
Hub / quay.io
- The repositories in the respective hubs were created manually

## How was this change tested?
- Publishing only works on the main branch, will see how it goes once
erged

Signed-off-by: Yuri Shkuro <github@ysh.us>
@yurishkuro
Copy link
Member Author

The new jaeger binary is available as Docker image https://hub.docker.com/repository/docker/jaegertracing/jaeger/tags

@yurishkuro
Copy link
Member Author

I wrote down some thoughts on what Jaeger Storage API v2 might look like. Interested in feedback.

@hdost
Copy link

hdost commented Dec 19, 2023

I wrote down some thoughts on what Jaeger Storage API v2 might look like. Interested in feedback.

So one thing that I think might be worth thinking about as well is search complexity. One issue I know we had was making search efficient on large span storage.
Time range to limit is useful, but painful for users. Being able to search on attributes is a must. It might be good add criteria to compare about query patterns as well.

@88vishnu
Copy link

Appx by when Jaeger-v2 will be available with tail-based-sampling??

@yurishkuro
Copy link
Member Author

I am hoping to make good progress on v2 in the Spring if we get 3 interns, and then in the summer to get it to GA.

@yasharne
Copy link

Is this open to contributing? if yes, where can I find the open tasks/issues?

@yurishkuro
Copy link
Member Author

@yasharne it is definitely open, but I'd say most open issues here are medium complexity, not good-first-issue. The open issues are listed in this ticket (and more in Google docs).

yurishkuro added a commit that referenced this issue Jan 23, 2024
## Which problem is this PR solving?
- part of #4843

## Description of the changes
- adding wiring for badger in jeager-v2

## How was this change tested?
- not tested yet

## Checklist
- [x] I have read
https://github.com/jaegertracing/jaeger/blob/master/CONTRIBUTING_GUIDELINES.md
- [x] I have signed all commits
- [ ] I have added unit tests for the new functionality
- [ ] I have run lint and test steps successfully
  - for `jaeger`: `make lint test`
  - for `jaeger-ui`: `yarn lint` and `yarn test`

---------

Signed-off-by: Harshvir Potpose <hpotpose62@gmail.com>
Signed-off-by: Harshvir Potpose <122517264+akagami-harsh@users.noreply.github.com>
Signed-off-by: Yuri Shkuro <github@ysh.us>
Co-authored-by: Yuri Shkuro <yurishkuro@users.noreply.github.com>
Co-authored-by: Yuri Shkuro <github@ysh.us>
@yurishkuro yurishkuro self-assigned this Feb 4, 2024
yurishkuro added a commit that referenced this issue Feb 27, 2024
## Which problem is this PR solving?
- part of #4843

## Description of the changes
- add support for elasticsearch in jaeger-v2

## How was this change tested?
- tested locally

## Checklist
- [x] I have read
https://github.com/jaegertracing/jaeger/blob/master/CONTRIBUTING_GUIDELINES.md
- [x] I have signed all commits
- [x] I have added unit tests for the new functionality
- [x] I have run lint and test steps successfully
  - for `jaeger`: `make lint test`
  - for `jaeger-ui`: `yarn lint` and `yarn test`

---------

Signed-off-by: Harshvir Potpose <hpotpose62@gmail.com>
Signed-off-by: Harshvir Potpose <122517264+akagami-harsh@users.noreply.github.com>
Co-authored-by: Yuri Shkuro <yurishkuro@users.noreply.github.com>
@tmeckel
Copy link

tmeckel commented Feb 27, 2024

When I try to use the OLTPLogExporter with Jeager and GRPC,

details collased ```python get_logger_provider().add_log_record_processor( BatchLogRecordProcessor( exporter=OTLPLogExporter( endpoint="http://jaeger:4317", insecure=True, ), ) ) ```

I recieve the following error:

2024-02-27 13:41:34,233 ERROR [opentelemetry.exporter.otlp.proto.grpc.exporter] [exporter.py:306] - Failed to export logs to jaeger:4317, error code: StatusCode.UNIMPLEMENTED

An indication that https://github.com/open-telemetry/opentelemetry-proto/blob/main/opentelemetry/proto/collector/logs/v1/logs_service.proto is not implemented by Jaeger. Is this correct? Or did I configured Jaeger incorrectly, ref. to following Docker Compose snippet (ports 4317 and 4318 are used only internally using the network ipam)?

---
# This is a Docker Compose override file to add jeager tracing
version: "3.9"

services:
  jaeger:
    image: jaegertracing/all-in-one:${JAEGER_VERSION:-latest}
    ports:
      - "16686:16686"
    environment:
      - LOG_LEVEL=debug
      - COLLECTOR_OTLP_ENABLED=true
    networks:
      - ipam

  network-managemnent:
    depends_on:
      - jaeger

open-telemetry/opentelemetry-collector#6363

@yurishkuro
Copy link
Member Author

@tmeckel Jaeger is not a logging backend, it only accepts traces.

yurishkuro pushed a commit that referenced this issue Feb 27, 2024
## Which problem is this PR solving?
- Part of #4843
- Separate GRPC storage PR from and will be used by jaeger-v2 Kafka PR
#4971

## Description of the changes
- Implement GRPC storage backend for Jaeger-V2 storage

## How was this change tested?
- Run two `jaegertracing/jaeger-remote-storage` at `17271` and `17281`
ports
- Execute `go run -tags=ui ./cmd/jaeger --config
./cmd/jaeger/grpc_config.yaml`

## Checklist
- [x] I have read
https://github.com/jaegertracing/jaeger/blob/master/CONTRIBUTING_GUIDELINES.md
- [x] I have signed all commits
- [x] I have added unit tests for the new functionality
- [x] I have run lint and test steps successfully
  - for `jaeger`: `make lint test`
  - for `jaeger-ui`: `yarn lint` and `yarn test`

---------

Signed-off-by: James Ryans <james.ryans2012@gmail.com>
yurishkuro pushed a commit that referenced this issue Mar 4, 2024
## Which problem is this PR solving?
- Part of #4843
- Separate Jaeger storage receiver PR from and will be used by jaeger-v2
Kafka PR #4971

## Description of the changes
- Implement Jaeger storage receiver to be used by Jaeger-v2 Kafka
integration test.

## How was this change tested?
- Added some unit tests.

## Checklist
- [x] I have read
https://github.com/jaegertracing/jaeger/blob/master/CONTRIBUTING_GUIDELINES.md
- [x] I have signed all commits
- [x] I have added unit tests for the new functionality
- [x] I have run lint and test steps successfully
  - for `jaeger`: `make lint test`
  - for `jaeger-ui`: `yarn lint` and `yarn test`

---------

Signed-off-by: James Ryans <james.ryans2012@gmail.com>
@pavolloffay pavolloffay added the v2 label Mar 13, 2024
yurishkuro pushed a commit that referenced this issue Mar 16, 2024
## Which problem is this PR solving?
- part of #4843 

## Description of the changes
- add support for cassandra

## How was this change tested?
- currently, tests are failing.

## Checklist
- [X] I have read
https://github.com/jaegertracing/jaeger/blob/master/CONTRIBUTING_GUIDELINES.md
- [X] I have signed all commits
- [X] I have added unit tests for the new functionality
- [X] I have run lint and test steps successfully
  - for `jaeger`: `make lint test`
  - for `jaeger-ui`: `yarn lint` and `yarn test`

---------

Signed-off-by: Pushkar Mishra <pushkarmishra029@gmail.com>
yurishkuro pushed a commit that referenced this issue Mar 21, 2024
## Which problem is this PR solving?
- part of #4843

## Description of the changes
- Added OpenSearch support in jaeger-V2.
- Reused the existing Elasticsearch factory for OpenSearch.

## How was this change tested?
- tested locally by running jaeger-v2 with newly added opensearch
config-file.
- Run the opensearch container:
```bash
docker run --rm --name opensearch -p 9200:9200 -e "discovery.type=single-node" opensearchproject/opensearch:1.3.0
```
- Execute below to run jaeger-V2
```bash
go run -tags=ui ./cmd/jaeger/. --config ./cmd/jaeger/config-opensearch.yaml
```

## Checklist
- [x] I have read
https://github.com/jaegertracing/jaeger/blob/master/CONTRIBUTING_GUIDELINES.md
- [x] I have signed all commits
- [] I have added unit tests for the new functionality
- [x] I have run lint and test steps successfully
  - for `jaeger`: `make lint test`
  - for `jaeger-ui`: `yarn lint` and `yarn test`

---------

Signed-off-by: Harshvir Potpose <hpotpose62@gmail.com>
Signed-off-by: Harshvir Potpose <122517264+akagami-harsh@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/otel changelog:breaking-change Change that is breaking public APIs or established behavior changelog:new-feature Change that should be called out as new feature in CHANGELOG enhancement help wanted Features that maintainers are willing to accept but do not have cycles to implement meta-issue An tracking issue that requires work in other repos v2
Projects
Status: In Progress
Development

No branches or pull requests

6 participants