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

Redesign telemetry support in Helm chart #6153

Merged
merged 7 commits into from
Feb 22, 2023

Conversation

adutra
Copy link
Contributor

@adutra adutra commented Feb 21, 2023

This commit removes the old jaegerTracing section from the values.yaml file. Indeed, OpenTracing support has been replaced in 0.46.0 with OpenTelemetry support, and properties like quarkus.jaeger.service.name are not honored anymore.

Instead, this commit creates a new tracing section that maps to OpenTelemetry configuration properties.

This commit also introduces some doc changes:

  • In helm/nessie/README.md to explain how to test Nessie with OpenTelemetry enabled, and with custom Docker images;
  • In site/docs/try/configuration.md to create a new Traces chapter with a few troubleshooting tips.

Fixes #6105

This commit removes the old jaegerTracing section from the values.yaml file. Indeed, OpenTracing support has been replaced in 0.46.0 with OpenTelemetry support, and properties like quarkus.jaeger.service.name are not honored anymore.

Instead, this commit creates a new tracing section that maps to OpenTelemetry configuration properties.

This commit also introduces some doc changes:

- In helm/nessie/README.md to explain how to test Nessie with OpenTelemetry enabled, and with custom Docker images;
- In site/docs/try/configuration.md to create a new Traces chapter with a few troubleshooting tips.
@adutra adutra requested a review from dimas-b February 21, 2023 11:26
@snazy snazy added pr-helm Helm chart testing pr-native run native test labels Feb 21, 2023
{{- end }}
{{- if .Values.tracing.sampler }}
- name: QUARKUS_OPENTELEMETRY_TRACER_SAMPLER
value: {{ .Values.tracing.sampler | toString | replace "true" "on" | replace "false" "off" | quote }}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The calls to replace are required because in Yaml, on and off are actually booleans, but the server expects the strings on or off, not true or false.

@codecov
Copy link

codecov bot commented Feb 21, 2023

Codecov Report

Base: 77.36% // Head: 83.78% // Increases project coverage by +6.41% 🎉

Coverage data is based on head (a584a59) compared to base (12fabc9).
Patch has no changes to coverable lines.

Additional details and impacted files
@@             Coverage Diff              @@
##               main    #6153      +/-   ##
============================================
+ Coverage     77.36%   83.78%   +6.41%     
============================================
  Files           565       49     -516     
  Lines         17260     1819   -15441     
  Branches       1723      328    -1395     
============================================
- Hits          13353     1524   -11829     
+ Misses         3282      216    -3066     
+ Partials        625       79     -546     
Flag Coverage Δ
java ∅ <ø> (∅)
javascript 82.91% <ø> (ø)
python 83.96% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
.../projectnessie/client/http/HttpRequestWrapper.java
...va/org/apache/iceberg/view/BaseViewDefinition.java
...rojectnessie/client/http/v1api/HttpGetEntries.java
...java/org/projectnessie/model/MergeKeyBehavior.java
...c/main/java/org/projectnessie/model/Reference.java
...g/projectnessie/api/v1/params/NamespaceParams.java
...e/client/util/v2api/ClientSideDeleteNamespace.java
...projectnessie/versioned/VersionStoreException.java
...ava/org/projectnessie/versioned/ReferenceInfo.java
...g/projectnessie/model/SingleReferenceResponse.java
... and 506 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.


```bash
eval $(minikube docker-env)
docker build -f ./tools/dockerbuild/docker/Dockerfile-jvm -t nessie-test:latest ./servers/quarkus-server
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe add a ./gradlew :nessie-quarkus:quarkusBuild ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice to see that that these Dockerfiles help w/ k8s stuff as well.


```bash
eval $(minikube docker-env)
docker build -f ./tools/dockerbuild/docker/Dockerfile-jvm -t nessie-test:latest ./servers/quarkus-server
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(same here)

@@ -1,5 +1,5 @@
# -- The number of replicas to deploy (horizontal scaling).
# Beware that replicas are stateless; don't set this number > 1 when using ROCKS version store type.
# Beware that replicas are stateless; don't set this number > 1 when using INMEMORY or ROCKS version store types.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

helm/nessie/values.yaml Outdated Show resolved Hide resolved
site/docs/try/configuration.md Show resolved Hide resolved
```bash
helm install nessie -n nessie-ns helm/nessie \
--set tracing.enabled=true \
--set tracing.endpoint=http://jaeger-collector:4317
Copy link
Member

@dimas-b dimas-b Feb 21, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it work with the otlp/2 protocol (default port 55680)?.. or do we need to configure something else for otlp/2 perhaps?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I confess I don't know, I am going to run a few tests now to investigate.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here is what I found:

According to this issue: open-telemetry/opentelemetry-specification#1148, it seems that in its early stages, OpenTelemetry chose to use ports 55680 and 55681 for OTLP/gRPC and OTLP/HTTP respectively.

However, as the discussion in the issue reveals, these choices weren't good ones, because these ports are in the ephemeral range, and consequently, are not suitable to be used as service ports.

So, they asked IANA to reserve instead two other ports: 4317 and 4318, the common ports that we use today for OTLP/gRPC and OTLP/HTTP respectively.

If you look at the specs in 2020, the default endpoint for OTLP/gRPC was localhost:55680.

But if you look at the specs now, the default endpoint for OTLP/gRPC was changed to http://localhost:4317.

As a conclusion, I don't think there is any other alternate port that we should be supporting, only 4317 is nowadays being used for OTLP/gRPC.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice 👍 thanks for the detailed explanation!

snazy
snazy previously approved these changes Feb 21, 2023
Copy link
Member

@snazy snazy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM - if @dimas-b is happy, too

sample: all
# -- Resource attributes to identify the nessie service among other tracing sources.
# See https://opentelemetry.io/docs/reference/specification/resource/semantic_conventions/#service.
# If left empty, the following attribute will be automatically added: service.name=nessie.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am having second thoughts about this.

If service.name is not provided at all, it seems that Quarkus will use the value from quarkus.application.name, which in our case is Nessie. This might be enough, wdyt?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Defaulting to quarkus.application.name SGTM.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK I made the change. You will need to re-approve, sorry.

dimas-b
dimas-b previously approved these changes Feb 21, 2023
@adutra adutra merged commit 1e491aa into projectnessie:main Feb 22, 2023
@adutra adutra deleted the helm-telemetry branch February 22, 2023 10:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
pr-helm Helm chart testing pr-native run native test
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Rethink telemetry support in Helm chart
3 participants