Nov 14, 2024
Mar 7, 2025
N/A Views
MD

Warning

This article was automatically translated by OpenAI (gpt-4o-mini).It may be edited eventually, but please be aware that it may contain incorrect information at this time.

Notes on Tracing a legacy Servlet application on Tomcat using OpenTelemetry Java Agent.

Starting the Tracing Backend

Here, we will use OTLP-compatible Zipkin as the tracing backend.

docker run --name zipkin --rm -p 9411:9411 -e UI_ENABLED=true ghcr.io/openzipkin-contrib/zipkin-otel

Access http://localhost:9411.

image

Installing Tomcat 9

brew install tomcat@9

If you are installing Tomcat by other means, please modify the path of CATALINA_HOME below.

Installing the Otel Java Agent

export CATALINA_HOME=/opt/homebrew/opt/tomcat@9/libexec
wget https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/latest/download/opentelemetry-javaagent.jar -P $CATALINA_HOME/bin
cat <<'EOF' > $CATALINA_HOME/bin/setenv.sh
export CATALINA_OPTS="$CATALINA_OPTS -javaagent:$CATALINA_HOME/bin/opentelemetry-javaagent.jar"
export OTEL_SERVICE_NAME=legacy-app
export OTEL_TRACES_EXPORTER=otlp
export OTEL_METRICS_EXPORTER=none
export OTEL_LOGS_EXPORTER=none
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:9411
export OTEL_TRACES_SAMPLER=traceidratio
export OTEL_TRACES_SAMPLER_ARG=1.0
export OTEL_EXPORTER_OTLP_COMPRESSION=gzip
export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
export CATALINA_OPTS="$CATALINA_OPTS -Dotel.resource.disabled.keys=process.command_args,process.command_line,process.executable.path,process.runtime.name,process.runtime.version,process.pid,process.runtime.description,os.type,os.description,host.arch"
EOF

Downloading and Deploying the Legacy Application

wget https://archive.apache.org/dist/struts/1.3.10/struts-1.3.10-apps.zip
unzip struts-1.3.10-apps.zip

cp struts-1.3.10/apps/struts-examples-1.3.10.war $CATALINA_HOME/webapps/

Starting Tomcat

$CATALINA_HOME/bin/startup.sh

Check the logs. If you see logs like the following, it's OK.

$ cat  $CATALINA_HOME/logs/catalina.out 
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
[otel.javaagent 2024-11-14 11:33:43:373 +0900] [main] INFO io.opentelemetry.javaagent.tooling.VersionLogger - opentelemetry-javaagent - version: 2.10.0
14-Nov-2024 11:33:44.222 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log Serverのバージョン名:     Apache Tomcat/9.0.97
14-Nov-2024 11:33:44.225 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log Server ビルド:            Nov 6 2024 19:55:19 UTC
14-Nov-2024 11:33:44.225 情報 [main] org.apache.catalina.startup.VersionLoggerListener.log サーバーのバージョン番号: 9.0.97.0
...
14-Nov-2024 11:33:44.390 情報 [main] org.apache.catalina.core.StandardService.startInternal サービス [Catalina] を起動します
14-Nov-2024 11:33:44.390 情報 [main] org.apache.catalina.core.StandardEngine.startInternal サーブレットエンジンの起動:[Apache Tomcat/9.0.97]
14-Nov-2024 11:33:44.400 情報 [main] org.apache.catalina.startup.HostConfig.deployWAR Webアプリケーションアーカイブ [/opt/homebrew/Cellar/tomcat@9/9.0.97/libexec/webapps/struts-examples-1.3.10.war] を配備します
14-Nov-2024 11:33:44.597 情報 [main] org.apache.jasper.servlet.TldScanner.scanJars 少なくとも1つのJARでTLDをスキャンしましたが、TLDが含まれていませんでした。スキャンしたもののTLDが見つからなかったJARの完全なリストについては、このロガーのデバッグログを有効にしてください。スキャン中に不要なJARをスキップすると、起動時間とJSPのコンパイル時間が短縮されます。
14-Nov-2024 11:33:44.628 情報 [main] org.apache.struts.action.ActionServlet.initChain Loading chain catalog from jar:file:/opt/homebrew/Cellar/tomcat@9/9.0.97/libexec/webapps/struts-examples-1.3.10/WEB-INF/lib/struts-core-1.3.10.jar!/org/apache/struts/chain/chain-config.xml
14-Nov-2024 11:33:44.708 情報 [main] org.apache.struts.validator.ValidatorPlugIn.initResources Loading validation rules file from '/org/apache/struts/validator/validator-rules.xml'
14-Nov-2024 11:33:44.709 情報 [main] org.apache.struts.validator.ValidatorPlugIn.initResources Loading validation rules file from '/WEB-INF/upload/validation.xml'
14-Nov-2024 11:33:44.742 警告 [main] org.apache.struts.config.impl.ModuleConfigImpl.addFormBeanConfig Overriding ActionForm of name localeForm
14-Nov-2024 11:33:44.744 情報 [main] org.apache.struts.validator.ValidatorPlugIn.initResources Loading validation rules file from '/org/apache/struts/validator/validator-rules-compressed.xml'
14-Nov-2024 11:33:44.744 情報 [main] org.apache.struts.validator.ValidatorPlugIn.initResources Loading validation rules file from '/WEB-INF/validator/validation.xml'
14-Nov-2024 11:33:44.744 情報 [main] org.apache.struts.validator.ValidatorPlugIn.initResources Loading validation rules file from '/WEB-INF/validator/validation-bundles.xml'
14-Nov-2024 11:33:44.744 情報 [main] org.apache.struts.validator.ValidatorPlugIn.initResources Loading validation rules file from '/WEB-INF/validator/validation-i18nVariables.xml'
14-Nov-2024 11:33:44.744 情報 [main] org.apache.struts.validator.ValidatorPlugIn.initResources Loading validation rules file from '/WEB-INF/validator/validation-type.xml'
14-Nov-2024 11:33:44.744 情報 [main] org.apache.struts.validator.ValidatorPlugIn.initResources Loading validation rules file from '/WEB-INF/validator/validation-validwhen.xml'
14-Nov-2024 11:33:44.765 情報 [main] org.apache.catalina.startup.HostConfig.deployWAR Web アプリケーションアーカイブ [/opt/homebrew/Cellar/tomcat@9/9.0.97/libexec/webapps/struts-examples-1.3.10.war] の配備は [365] ミリ秒で完了しました
...
14-Nov-2024 11:33:44.869 情報 [main] org.apache.coyote.AbstractProtocol.start プロトコルハンドラー ["http-nio-8080"] を開始しました。
14-Nov-2024 11:33:44.882 情報 [main] org.apache.catalina.startup.Catalina.start サーバーの起動 [516] ミリ秒

Access http://localhost:8080/struts-examples-1.3.10.

image

Checking the Trace

Click the "Run Query" button in Zipkin. The trace will be visible.

image image

Stopping Tomcat

$CATALINA_HOME/bin/shutdown.sh
Found a mistake? Update the entry.
Share this article: