diff --git a/pom.xml b/pom.xml index bd31d107c91..8392a099b57 100644 --- a/pom.xml +++ b/pom.xml @@ -189,6 +189,8 @@ 0.5.4 3.1.7 3.25.5 + 1.51.0 + 2.16.0 @@ -427,6 +429,16 @@ commons-validator ${cs.commons-validator.version} + + io.opentelemetry + opentelemetry-api + ${cs.opentelemetry.version} + + + io.opentelemetry.instrumentation + opentelemetry-instrumentation-annotations + ${cs.opentelemetry-instrumentation.version} + javax.annotation javax.annotation-api diff --git a/server/pom.xml b/server/pom.xml index c7f4d24d68b..19cc0ca4583 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -197,6 +197,14 @@ 4.22.2.0-SNAPSHOT compile + + io.opentelemetry.instrumentation + opentelemetry-instrumentation-annotations + + + io.opentelemetry + opentelemetry-api + diff --git a/server/src/main/java/com/cloud/api/ApiServer.java b/server/src/main/java/com/cloud/api/ApiServer.java index 05ea166e13b..e3a64649078 100644 --- a/server/src/main/java/com/cloud/api/ApiServer.java +++ b/server/src/main/java/com/cloud/api/ApiServer.java @@ -58,6 +58,9 @@ import javax.naming.ConfigurationException; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; +import io.opentelemetry.api.trace.Span; +import io.opentelemetry.instrumentation.annotations.WithSpan; + import com.cloud.cluster.ManagementServerHostVO; import com.cloud.cluster.dao.ManagementServerHostDao; import com.cloud.user.Account; @@ -619,6 +622,7 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer } @Override + @WithSpan("ApiServer.handleRequest") @SuppressWarnings("rawtypes") public String handleRequest(final Map params, final String responseType, final StringBuilder auditTrailSb) throws ServerApiException { checkCharacterInkParams(params); @@ -628,6 +632,10 @@ public class ApiServer extends ManagerBase implements HttpRequestHandler, ApiSer try { command = (String[])params.get("command"); + if (command != null && command.length > 0) { + Span.current().updateName("ApiServer.handleRequest " + command[0]); + Span.current().setAttribute("api.command", command[0]); + } if (command == null) { logger.error("invalid request, no command sent"); if (logger.isTraceEnabled()) { diff --git a/tools/docker/supervisord.conf b/tools/docker/supervisord.conf index 93f01387575..1c14578c4cf 100644 --- a/tools/docker/supervisord.conf +++ b/tools/docker/supervisord.conf @@ -12,6 +12,7 @@ command=/bin/bash -c "mvn -pl client jetty:run -Dsimulator -Dorg.eclipse.jetty.a directory=/root stdout_logfile=/dev/stdout stdout_logfile_maxbytes=0 +redirect_stderr=true user=root [program:cloudstack-ui]