From aef830aeb5b4edd280128abf35ae670df2121d5d Mon Sep 17 00:00:00 2001 From: jzonthemtn Date: Thu, 12 Sep 2024 13:42:55 -0400 Subject: [PATCH] #20 Working on sending ubi queries as Otel. --- .gitignore | 1 + Dockerfile | 8 ++-- docker-compose.yaml | 10 ++++ gradle.properties | 4 +- licenses/jackson-annotations-2.17.1.jar.sha1 | 1 - licenses/jackson-annotations-2.17.2.jar.sha1 | 1 + licenses/jackson-databind-2.17.1.jar.sha1 | 1 - licenses/jackson-databind-2.17.2.jar.sha1 | 1 + .../org/opensearch/ubi/UbiActionFilter.java | 26 +++++++++- src/main/java/org/opensearch/ubi/UbiOTel.java | 48 ------------------- 10 files changed, 45 insertions(+), 56 deletions(-) delete mode 100644 licenses/jackson-annotations-2.17.1.jar.sha1 create mode 100644 licenses/jackson-annotations-2.17.2.jar.sha1 delete mode 100644 licenses/jackson-databind-2.17.1.jar.sha1 create mode 100644 licenses/jackson-databind-2.17.2.jar.sha1 delete mode 100644 src/main/java/org/opensearch/ubi/UbiOTel.java diff --git a/.gitignore b/.gitignore index 6c884e1..37b389f 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ build build-idea/ out/ +volumes/ diff --git a/Dockerfile b/Dockerfile index e79e608..fa42d7b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,7 @@ -FROM opensearchproject/opensearch:2.15.0 +FROM opensearchproject/opensearch:2.16.0 -COPY ./build/distributions/opensearch-ubi-2.15.0.0.zip /tmp/ +COPY ./build/distributions/opensearch-ubi-2.16.0.0.zip /tmp/ + +RUN /usr/share/opensearch/bin/opensearch-plugin install --batch telemetry-otel +RUN /usr/share/opensearch/bin/opensearch-plugin install --batch file:/tmp/opensearch-ubi-2.16.0.0.zip -RUN /usr/share/opensearch/bin/opensearch-plugin install --batch file:/tmp/opensearch-ubi-2.15.0.0.zip diff --git a/docker-compose.yaml b/docker-compose.yaml index 4e883fa..bbc8714 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -24,6 +24,16 @@ services: logger.level: info OPENSEARCH_INITIAL_ADMIN_PASSWORD: SuperSecretPassword_123 #ubi.dataprepper.url: "http://dataprepper-dev-os:2021/log/ingest" + # otel + telemetry.feature.tracer.enabled: true + telemetry.tracer.enabled: true + telemetry.tracer.sampler.probability: 1.0 + opensearch.experimental.feature.telemetry.enabled: true + telemetry.otel.tracer.span.exporter.class: io.opentelemetry.exporter.logging.LoggingSpanExporter + telemetry.otel.tracer.exporter.batch_size: 1 + telemetry.otel.tracer.exporter.max_queue_size: 3 + volumes: + - "./volumes/logs:/usr/share/opensearch/logs" ulimits: memlock: soft: -1 diff --git a/gradle.properties b/gradle.properties index 69e1b77..3f7ce5e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,2 @@ -opensearchVersion = 2.15.0 -ubiVersion = 2.15.0.0 +opensearchVersion = 2.16.0 +ubiVersion = 2.16.0.0 diff --git a/licenses/jackson-annotations-2.17.1.jar.sha1 b/licenses/jackson-annotations-2.17.1.jar.sha1 deleted file mode 100644 index 4ceead1..0000000 --- a/licenses/jackson-annotations-2.17.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -fca7ef6192c9ad05d07bc50da991bf937a84af3a \ No newline at end of file diff --git a/licenses/jackson-annotations-2.17.2.jar.sha1 b/licenses/jackson-annotations-2.17.2.jar.sha1 new file mode 100644 index 0000000..411e1d6 --- /dev/null +++ b/licenses/jackson-annotations-2.17.2.jar.sha1 @@ -0,0 +1 @@ +147b7b9412ffff24339f8aba080b292448e08698 \ No newline at end of file diff --git a/licenses/jackson-databind-2.17.1.jar.sha1 b/licenses/jackson-databind-2.17.1.jar.sha1 deleted file mode 100644 index 7cf1ac1..0000000 --- a/licenses/jackson-databind-2.17.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -0524dcbcccdde7d45a679dfc333e4763feb09079 \ No newline at end of file diff --git a/licenses/jackson-databind-2.17.2.jar.sha1 b/licenses/jackson-databind-2.17.2.jar.sha1 new file mode 100644 index 0000000..f2b4dbd --- /dev/null +++ b/licenses/jackson-databind-2.17.2.jar.sha1 @@ -0,0 +1 @@ +e6deb029e5901e027c129341fac39e515066b68c \ No newline at end of file diff --git a/src/main/java/org/opensearch/ubi/UbiActionFilter.java b/src/main/java/org/opensearch/ubi/UbiActionFilter.java index 8f8b339..eb9bf30 100644 --- a/src/main/java/org/opensearch/ubi/UbiActionFilter.java +++ b/src/main/java/org/opensearch/ubi/UbiActionFilter.java @@ -35,6 +35,8 @@ import org.opensearch.env.Environment; import org.opensearch.search.SearchHit; import org.opensearch.tasks.Task; +import org.opensearch.telemetry.tracing.Span; +import org.opensearch.telemetry.tracing.SpanBuilder; import org.opensearch.telemetry.tracing.Tracer; import org.opensearch.ubi.ext.UbiParameters; @@ -138,7 +140,7 @@ public void onResponse(Response response) { final QueryResponse queryResponse = new QueryResponse(queryId, queryResponseId, queryResponseHitIds); final QueryRequest queryRequest = new QueryRequest(queryId, userQuery, userId, query, queryAttributes, queryResponse); - UbiOTel.send(task, tracer, queryRequest); + sendOtelTrace(task, tracer, queryRequest); final String dataPrepperUrl = environment.settings().get(UbiSettings.DATA_PREPPER_URL); if(dataPrepperUrl != null) { @@ -304,4 +306,26 @@ private String getResourceFile(final String fileName) { } } + private void sendOtelTrace(final Task task, final Tracer tracer, final QueryRequest queryRequest) { + + final Span span = tracer.startSpan(SpanBuilder.from(task, "ubi_search")); + + span.addAttribute("ubi.user_id", queryRequest.getQueryId()); + span.addAttribute("ubi.query", queryRequest.getQuery()); + span.addAttribute("ubi.user_query", queryRequest.getUserQuery()); + span.addAttribute("ubi.client_id", queryRequest.getClientId()); + span.addAttribute("ubi.timestamp", queryRequest.getTimestamp()); + + for (final String key : queryRequest.getQueryAttributes().keySet()) { + span.addAttribute("ubi.attribute." + key, queryRequest.getQueryAttributes().get(key)); + } + + span.addAttribute("ubi.query_response.response_id", queryRequest.getQueryResponse().getQueryResponseId()); + span.addAttribute("ubi.query_response.query_id", queryRequest.getQueryResponse().getQueryId()); + span.addAttribute("ubi.query_response.response_id", String.join(",", queryRequest.getQueryResponse().getQueryResponseObjectIds())); + + span.endSpan(); + + } + } diff --git a/src/main/java/org/opensearch/ubi/UbiOTel.java b/src/main/java/org/opensearch/ubi/UbiOTel.java deleted file mode 100644 index d0f9336..0000000 --- a/src/main/java/org/opensearch/ubi/UbiOTel.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -package org.opensearch.ubi; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.opensearch.tasks.Task; -import org.opensearch.telemetry.tracing.Span; -import org.opensearch.telemetry.tracing.SpanBuilder; -import org.opensearch.telemetry.tracing.Tracer; - -public class UbiOTel { - - private static final Logger LOGGER = LogManager.getLogger(UbiOTel.class); - - // final static String endpoint = "http://localhost:4318/v1/traces"; - - public static void send(final Task task, final Tracer tracer, final QueryRequest queryRequest) { - - LOGGER.info("Sending otel event."); - - final Span span = tracer.startSpan(SpanBuilder.from(task, "UBI")); - - span.addAttribute("ubi.user_id", queryRequest.getQueryId()); - span.addAttribute("ubi.query", queryRequest.getQuery()); - span.addAttribute("ubi.user_query", queryRequest.getUserQuery()); - span.addAttribute("ubi.client_id", queryRequest.getClientId()); - span.addAttribute("ubi.timestamp", queryRequest.getTimestamp()); - - for (final String key : queryRequest.getQueryAttributes().keySet()) { - span.addAttribute("ubi.attribute." + key, queryRequest.getQueryAttributes().get(key)); - } - - span.addAttribute("ubi.query_response.response_id", queryRequest.getQueryResponse().getQueryResponseId()); - span.addAttribute("ubi.query_response.query_id", queryRequest.getQueryResponse().getQueryId()); - span.addAttribute("ubi.query_response.response_id", String.join(",", queryRequest.getQueryResponse().getQueryResponseObjectIds())); - - span.endSpan(); - - } - -}