Observability:具有 Web 容器安装的 APM Java agent 动手实践 - Apache Tomcat

在之前的教程 “Solutions:应用程序性能监视/管理(APM)实践”,我详细讲述了如何使用 APM Java agent 来监视及管理一个 Spring 网络服务器。在实际的使用中,有很多的开发者也使用 Apache Tomcat 容器来安装自己的网路服务器。在今天的教程中,我将详述如何使用 APM Java agent 来监控这类 Java 应用。

具有 Web 容器安装的 APM Java agent 动手实践

介绍

如今,世界上有大量的 Web 容器,要覆盖全部内容并不容易。 我们将在你的机器上安装最流行的开源Web容器之一 Apache Tomcat,并将 Java 字节代码部署到服务器上以运行它。 如果要在不安装 Web 容器的情况下监视,请阅读文章 “Solutions:应用程序性能监视/管理(APM)实践”。

 

Elastic Stack 安装

如果你还没有安装自己的 Elastic Stack 的话,请参照文章 “Solutions:应用程序性能监视/管理(APM)实践” 来进行安装 Elasticsearch, Kibana 以及 APM server。我们需要运行它们。这里就不再详述了。

 

Web容器(Apache Tomcat)安装

1)访问 Apache Tomcat 主页并下载最新版本。 本实验将在 Mac 上使用 `apache-tomcat-7.0.107`。

2)将文件解压缩到所需的目录。 我们将解压缩后的文件的根目录称为 “CATALINA_HOME”。

3)从解压缩目录 CATALINA_HOME 的根目录中打开你的终端。

tar xzf apache-tomcat-7.0.107.tar.gz

4)授予执行权限以运行 `bin` 目录下的文件:

chmod a+x ./bin/*

5)使用 $./bin/startup.sh 运行 Tomcat。 你应该看到 “Tomcat已启动”。 消息位于日志底部。 (对于Windows,请使用`startup.bat`)。 注意:Tomca t也是一种 Java 应用程序,它将在你的计算机上创建 Java 进程。 有关更多详细信息,你可以参考 `logs/catalina.out` 日志文件。

6)访问 http://localhost:8080,你将看到:

 

运行你的简单 hello-world Web 应用程序


1)从默认的 Tomcat 安装提供的 http://localhost:8080/docs/appdev/sample/sample.war 下载文件

2)将 war 文件复制到目录 “CATALINA_HOME/webapps”。 默认的 Tomcat 安装将自动为你扩展和部署该应用程序。

3)访问 http://localhost:8080/sample/。 你将找到以下 UI。

让我们使用 APM Java Agent 运行 Web 应用程序

我们将自动设置代理,而无需更改你的应用程序服务器的配置。 请按照以下步骤操作。

1)在您的终端中,使用以下命令停止tomcat:

./bin/shutdown.sh

2)下载最新的 Java APM 代理。 请按照以下步骤操作。

  • 选择 “elastic-apm-agent” 的最新版本。
  • 点击 “下载” 按钮。

  • 将 jar 文件(“elastic-apm-agent-<version>.jar”)复制到你的终端位置(CATALINA_HOME)

3)创建 `CATALINA_HOME/bin/ setenv.sh`(或修改文件是否已经存在)。 确保使文件可执行,例如($ chmod +x bin/ setenv.sh)

4)添加如下的代码到 setenv.sh  文件中。 从 ESS 部署中添加正确的 APM 服务器 URL 和秘密令牌。

export CATALINA_OPTS="$CATALINA_OPTS -javaagent:elastic-apm-agent-1.19.0.jar"
export CATALINA_OPTS="$CATALINA_OPTS -Delastic.apm.service_name=tomcat-hello-world"
export CATALINA_OPTS="$CATALINA_OPTS -Delastic.apm.server_url=<APM Server URL>"
export CATALINA_OPTS="$CATALINA_OPTS -Delastic.apm.secret_token=<APM Server Secret Token>"
export CATALINA_OPTS="$CATALINA_OPTS -Delastic.apm.application_packages=mypackage"

针对我的本地部署,我是这样配置的:

export CATALINA_OPTS="$CATALINA_OPTS -javaagent:elastic-apm-agent-1.19.0.jar"
export CATALINA_OPTS="$CATALINA_OPTS -Delastic.apm.service_name=tomcat-hello-world"
export CATALINA_OPTS="$CATALINA_OPTS -Delastic.apm.server_url=http://localhost:8200"
export CATALINA_OPTS="$CATALINA_OPTS -Delastic.apm.secret_token="
export CATALINA_OPTS="$CATALINA_OPTS -Delastic.apm.application_packages=mypackage"

在这里,我使用了本地的 http://localhost:8200 APM 服务器,同时我没有配置 secret_token。在上面的配置中一定要注意使用自己下载的 apm-

5)使用 $ ./bin/startup.sh 运行 Tomcat。

./bin/startup.sh

6)访问 http://localhost:8080/sample/ 并通过单击链接进行操作。

注意:如果你使用其他 Web 容器,请从此处查看参考指南:https://www.elastic.co/guide/en/apm/agent/java/current/setup-javaagent.html#setup-generic

 

从 Kibana APM UI 检查 APM 指标

一旦做好了上面的配置,我们可以打开 Kibana 的 APM 应用。如果这是你第一次访问 APM 应用,请首先单击 “添加APM” 按钮,然后单击 “加载Kibana对象” 按钮:

 

点击上面的链接来查看  APM 服务器是否已经运行并连接到 Elasticsearch。

点击上面的 Launch APM 按钮:

在上面我们发现有一个新的叫做 tomcat_hello_world 的服务。我们在 sample 网页上随意点击如下的两个链接:

 

接着我们点击 tomcat-hello_world 链接:

我们可以看到在 sample 应用中的两个接口的 transaction。点击上面的 “GET /hello.jsp” 接口:

我们可以很清楚地看到当前接口被调用所需要的时间。 

记住再次关闭服务,可以使用如下的命令:

./bin/shutdown.sh

总结

恭喜!! 你刚刚完成了将最流行的开源 Web 容器之一安装到计算机上的操作,并使用 APM Java 代理成功运行了示例Web应用程序! 目前,我们无法涵盖所有的Web容器,但是你将从本练习中找到以下价值。

  • 通常,如果要将 Java 作为 Web 服务运行,则应在计算机上安装 Web 容器,然后将 “war” 文件部署到 Web 容器
  • Tomcat 是一种 Java 流程,你需要在 Tomcat 配置中添加 Java 选项才能运行 APM Java 代理。 如果你使用其他 Web 容器,则配置文件和内容可能会稍有不同,但是如果遇到任何与安装和配置有关的情况,则需要检查此链接
已标记关键词 清除标记