Skip to content

Commit

Permalink
Keycloak: Upgrade OpenTelemetry tooling for KC20
Browse files Browse the repository at this point in the history
  • Loading branch information
sonOfRa committed Nov 16, 2022
1 parent ddff30a commit 6713e17
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 40 deletions.
1 change: 1 addition & 0 deletions deployments/local/dev/docker-compose-keycloakx.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
91 changes: 52 additions & 39 deletions deployments/local/dev/keycloakx/Dockerfile
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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
7 changes: 6 additions & 1 deletion keycloak/config/quarkus.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 6713e17

Please sign in to comment.