From 6713e179a2a17388c39c041c46a3b71553957889 Mon Sep 17 00:00:00 2001 From: Simon Levermann Date: Wed, 16 Nov 2022 10:49:28 +0100 Subject: [PATCH] Keycloak: Upgrade OpenTelemetry tooling for KC20 --- .../local/dev/docker-compose-keycloakx.yml | 1 + deployments/local/dev/keycloakx/Dockerfile | 91 +++++++++++-------- keycloak/config/quarkus.properties | 7 +- 3 files changed, 59 insertions(+), 40 deletions(-) diff --git a/deployments/local/dev/docker-compose-keycloakx.yml b/deployments/local/dev/docker-compose-keycloakx.yml index ab9cf676..7fc3f582 100644 --- a/deployments/local/dev/docker-compose-keycloakx.yml +++ b/deployments/local/dev/docker-compose-keycloakx.yml @@ -52,6 +52,7 @@ services: - "--cache=local" - "--proxy=passthrough" # - "--log-console-output=json" + - "--log-console-format='%d{HH:mm:ss} %-5p traceId=%X{traceId}, parentId=%X{parentId}, spanId=%X{spanId}, sampled=%X{sampled} [%c{2.}] (%t) %s%e%n'" - "--https-protocols=TLSv1.3,TLSv1.2" - "--spi-theme-cache-themes=false" - "--spi-theme-cache-templates=false" diff --git a/deployments/local/dev/keycloakx/Dockerfile b/deployments/local/dev/keycloakx/Dockerfile index e7d59f60..83a1e9dd 100644 --- a/deployments/local/dev/keycloakx/Dockerfile +++ b/deployments/local/dev/keycloakx/Dockerfile @@ -1,9 +1,9 @@ #see https://www.keycloak.org/server/containers ARG KEYCLOAK_VERSION=20.0.1 FROM quay.io/keycloak/keycloak:$KEYCLOAK_VERSION -ARG QUARKUS_VERSION=2.7.6.Final -ARG OTEL_VERSION=1.9.1 -ARG OTEL_ALPHA_VERSION=1.9.1-alpha +ARG QUARKUS_VERSION=2.13.3.Final +ARG OTEL_VERSION=1.17.0 +ARG OTEL_ALPHA_VERSION=1.17.0-alpha USER root # Add java-11-openjdk-devel JDK for debugging @@ -28,75 +28,88 @@ RUN curl https://repo1.maven.org/maven2/io/quarkus/quarkus-opentelemetry/$QUARKU -L \ -o /opt/keycloak/providers/quarkus-opentelemetry-$QUARKUS_VERSION.jar -RUN curl https://repo1.maven.org/maven2/io/quarkus/quarkus-opentelemetry-deployment/$QUARKUS_VERSION/quarkus-opentelemetry-deployment-$QUARKUS_VERSION.jar \ +RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-sdk/$OTEL_VERSION/opentelemetry-sdk-$OTEL_VERSION.jar \ -L \ - -o /opt/keycloak/providers/quarkus-opentelemetry-deployment-$QUARKUS_VERSION.jar + -o /opt/keycloak/providers/opentelemetry-sdk-$OTEL_VERSION.jar -RUN curl https://repo1.maven.org/maven2/io/quarkus/quarkus-opentelemetry-exporter-otlp/$QUARKUS_VERSION/quarkus-opentelemetry-exporter-otlp-$QUARKUS_VERSION.jar \ +RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-api/$OTEL_VERSION/opentelemetry-api-$OTEL_VERSION.jar \ -L \ - -o /opt/keycloak/providers/quarkus-opentelemetry-exporter-otlp-$QUARKUS_VERSION.jar + -o /opt/keycloak/providers/opentelemetry-api-$OTEL_VERSION.jar -RUN curl https://repo1.maven.org/maven2/io/quarkus/quarkus-opentelemetry-exporter-otlp-deployment/$QUARKUS_VERSION/quarkus-opentelemetry-exporter-otlp-deployment-$QUARKUS_VERSION.jar \ +RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-context/$OTEL_VERSION/opentelemetry-context-$OTEL_VERSION.jar \ -L \ - -o /opt/keycloak/providers/quarkus-opentelemetry-exporter-otlp-deployment-$QUARKUS_VERSION.jar + -o /opt/keycloak/providers/opentelemetry-context-$OTEL_VERSION.jar -RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-exporter-otlp-common/$OTEL_VERSION/opentelemetry-exporter-otlp-common-$OTEL_VERSION.jar \ +RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-sdk-common/$OTEL_VERSION/opentelemetry-sdk-common-$OTEL_VERSION.jar \ -L \ - -o /opt/keycloak/providers/opentelemetry-exporter-otlp-common-$OTEL_VERSION.jar + -o /opt/keycloak/providers/opentelemetry-sdk-common-$OTEL_VERSION.jar -RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-exporter-otlp-trace/$OTEL_VERSION/opentelemetry-exporter-otlp-trace-$OTEL_VERSION.jar \ +RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-sdk-trace/$OTEL_VERSION/opentelemetry-sdk-trace-$OTEL_VERSION.jar \ -L \ - -o /opt/keycloak/providers/opentelemetry-exporter-otlp-trace-$OTEL_VERSION.jar + -o /opt/keycloak/providers/opentelemetry-sdk-trace-$OTEL_VERSION.jar -RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-sdk/$OTEL_VERSION/opentelemetry-sdk-$OTEL_VERSION.jar \ +RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-sdk-metrics/$OTEL_VERSION/opentelemetry-sdk-metrics-$OTEL_VERSION.jar \ -L \ - -o /opt/keycloak/providers/opentelemetry-sdk-$OTEL_VERSION.jar + -o /opt/keycloak/providers/opentelemetry-sdk-metrics-$OTEL_VERSION.jar -RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-sdk-trace/$OTEL_VERSION/opentelemetry-sdk-trace-$OTEL_VERSION.jar \ +RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-sdk-logs/$OTEL_ALPHA_VERSION/opentelemetry-sdk-logs-$OTEL_ALPHA_VERSION.jar \ -L \ - -o /opt/keycloak/providers/opentelemetry-sdk-trace-$OTEL_VERSION.jar + -o /opt/keycloak/providers/opentelemetry-sdk-logs-$OTEL_ALPHA_VERSION.jar -RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-api-metrics/$OTEL_ALPHA_VERSION/opentelemetry-api-metrics-$OTEL_ALPHA_VERSION.jar \ +RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-extension-annotations/$OTEL_VERSION/opentelemetry-extension-annotations-$OTEL_VERSION.jar \ -L \ - -o /opt/keycloak/providers/opentelemetry-api-metrics-$OTEL_ALPHA_VERSION.jar + -o /opt/keycloak/providers/opentelemetry-extension-annotations-$OTEL_VERSION.jar -RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-sdk-common/$OTEL_VERSION/opentelemetry-sdk-common-$OTEL_VERSION.jar \ +RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-sdk-extension-autoconfigure-spi/$OTEL_VERSION/opentelemetry-sdk-extension-autoconfigure-spi-$OTEL_VERSION.jar \ -L \ - -o /opt/keycloak/providers/opentelemetry-sdk-common-$OTEL_VERSION.jar + -o /opt/keycloak/providers/opentelemetry-sdk-extension-autoconfigure-spi-$OTEL_VERSION.jar -RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-api/$OTEL_VERSION/opentelemetry-api-$OTEL_VERSION.jar \ +RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-semconv/$OTEL_ALPHA_VERSION/opentelemetry-semconv-$OTEL_ALPHA_VERSION.jar \ -L \ - -o /opt/keycloak/providers/opentelemetry-api-$OTEL_VERSION.jar + -o /opt/keycloak/providers/opentelemetry-semconv-$OTEL_ALPHA_VERSION.jar -RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-extension-trace-propagators/$OTEL_VERSION/opentelemetry-extension-trace-propagators-$OTEL_VERSION.jar \ +RUN curl https://repo1.maven.org/maven2/io/opentelemetry/instrumentation/opentelemetry-instrumentation-api/$OTEL_ALPHA_VERSION/opentelemetry-instrumentation-api-$OTEL_ALPHA_VERSION.jar \ -L \ - -o /opt/keycloak/providers/opentelemetry-extension-trace-propagators-$OTEL_VERSION.jar + -o /opt/keycloak/providers/opentelemetry-instrumentation-api-$OTEL_ALPHA_VERSION.jar -RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-context/$OTEL_VERSION/opentelemetry-context-$OTEL_VERSION.jar \ +RUN curl https://repo1.maven.org/maven2/io/opentelemetry/instrumentation/opentelemetry-instrumentation-annotations/$OTEL_ALPHA_VERSION/opentelemetry-instrumentation-annotations-$OTEL_ALPHA_VERSION.jar \ -L \ - -o /opt/keycloak/providers/opentelemetry-context-$OTEL_VERSION.jar + -o /opt/keycloak/providers/opentelemetry-instrumentation-annotations-$OTEL_ALPHA_VERSION.jar -RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-extension-annotations/$OTEL_VERSION/opentelemetry-extension-annotations-$OTEL_VERSION.jar \ +RUN curl https://repo1.maven.org/maven2/io/opentelemetry/instrumentation/opentelemetry-instrumentation-annotations-support/$OTEL_ALPHA_VERSION/opentelemetry-instrumentation-annotations-support-$OTEL_ALPHA_VERSION.jar \ -L \ - -o /opt/keycloak/providers/opentelemetry-extension-annotations-$OTEL_VERSION.jar + -o /opt/keycloak/providers/opentelemetry-instrumentation-annotations-support-$OTEL_ALPHA_VERSION.jar -RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-sdk-extension-autoconfigure-spi/$OTEL_VERSION/opentelemetry-sdk-extension-autoconfigure-spi-$OTEL_VERSION.jar \ +RUN curl https://repo1.maven.org/maven2/io/opentelemetry/instrumentation/opentelemetry-instrumentation-api-semconv/$OTEL_ALPHA_VERSION/opentelemetry-instrumentation-api-semconv-$OTEL_ALPHA_VERSION.jar \ -L \ - -o /opt/keycloak/providers/opentelemetry-sdk-extension-autoconfigure-spi-$OTEL_VERSION.jar \ + -o /opt/keycloak/providers/opentelemetry-instrumentation-api-semconv-$OTEL_ALPHA_VERSION.jar -RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-sdk-extension-autoconfigure/$OTEL_ALPHA_VERSION/opentelemetry-sdk-extension-autoconfigure-$OTEL_ALPHA_VERSION.jar \ +RUN curl https://repo1.maven.org/maven2/io/quarkus/quarkus-opentelemetry-deployment/$QUARKUS_VERSION/quarkus-opentelemetry-deployment-$QUARKUS_VERSION.jar \ -L \ - -o /opt/keycloak/providers/opentelemetry-sdk-extension-autoconfigure-$OTEL_ALPHA_VERSION.jar + -o /opt/keycloak/providers/quarkus-opentelemetry-deployment-$QUARKUS_VERSION.jar -RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-semconv/$OTEL_ALPHA_VERSION/opentelemetry-semconv-$OTEL_ALPHA_VERSION.jar \ +RUN curl https://repo1.maven.org/maven2/io/quarkus/quarkus-opentelemetry-exporter-otlp/$QUARKUS_VERSION/quarkus-opentelemetry-exporter-otlp-$QUARKUS_VERSION.jar \ -L \ - -o /opt/keycloak/providers/opentelemetry-semconv-$OTEL_ALPHA_VERSION.jar + -o /opt/keycloak/providers/quarkus-opentelemetry-exporter-otlp-$QUARKUS_VERSION.jar -RUN curl https://repo1.maven.org/maven2/io/opentelemetry/instrumentation/opentelemetry-instrumentation-api/$OTEL_ALPHA_VERSION/opentelemetry-instrumentation-api-$OTEL_ALPHA_VERSION.jar \ +RUN curl https://repo1.maven.org/maven2/io/quarkus/quarkus-opentelemetry-exporter-otlp-deployment/$QUARKUS_VERSION/quarkus-opentelemetry-exporter-otlp-deployment-$QUARKUS_VERSION.jar \ -L \ - -o /opt/keycloak/providers/opentelemetry-instrumentation-api-$OTEL_ALPHA_VERSION.jar + -o /opt/keycloak/providers/quarkus-opentelemetry-exporter-otlp-deployment-$QUARKUS_VERSION.jar -RUN curl https://repo1.maven.org/maven2/io/opentelemetry/instrumentation/opentelemetry-instrumentation-api-annotation-support/$OTEL_ALPHA_VERSION/opentelemetry-instrumentation-api-annotation-support-$OTEL_ALPHA_VERSION.jar \ +RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-exporter-otlp/$OTEL_VERSION/opentelemetry-exporter-otlp-$OTEL_VERSION.jar \ -L \ - -o /opt/keycloak/providers/opentelemetry-instrumentation-api-annotation-support-$OTEL_ALPHA_VERSION.jar + -o /opt/keycloak/providers/opentelemetry-exporter-otlp-$OTEL_VERSION.jar + +RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-exporter-otlp-common/$OTEL_VERSION/opentelemetry-exporter-otlp-common-$OTEL_VERSION.jar \ + -L \ + -o /opt/keycloak/providers/opentelemetry-exporter-otlp-common-$OTEL_VERSION.jar + +RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-exporter-common/$OTEL_VERSION/opentelemetry-exporter-common-$OTEL_VERSION.jar \ + -L \ + -o /opt/keycloak/providers/opentelemetry-exporter-common-$OTEL_VERSION.jar + +RUN curl https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-extension-trace-propagators/$OTEL_VERSION/opentelemetry-extension-trace-propagators-$OTEL_VERSION.jar \ + -L \ + -o /opt/keycloak/providers/opentelemetry-extension-trace-propagators-$OTEL_VERSION.jar + USER keycloak diff --git a/keycloak/config/quarkus.properties b/keycloak/config/quarkus.properties index 248c6834..f11abb45 100644 --- a/keycloak/config/quarkus.properties +++ b/keycloak/config/quarkus.properties @@ -16,7 +16,12 @@ quarkus.opentelemetry.enabled=true quarkus.opentelemetry.tracer.enabled=true quarkus.opentelemetry.tracer.exporter.otlp.enabled=true quarkus.opentelemetry.tracer.exporter.otlp.endpoint=http://id.acme.test:4317 +quarkus.opentelemetry.tracer.resource-attributes=service.name=acme-keycloak + +## Sampling Settings quarkus.opentelemetry.tracer.sampler=ratio +# Percentage of traces that are sampled. 1.0 = 100%. Great for testing, not great for production. quarkus.opentelemetry.tracer.sampler.ratio=1.0 -quarkus.opentelemetry.tracer.sampler.parent-based=false +# If we're not the root of this trace, defer to the sampling decision made by the parent +quarkus.opentelemetry.tracer.sampler.parent-based=true quarkus.opentelemetry.propagators=b3multi \ No newline at end of file