练习 - 访问 JBoss EAP 管理工具和应用程序日志

已完成

在本练习中,你将访问 JBoss 管理工具并流式传输应用程序日志。

创建 TCP 隧道

若要访问远程服务器,需要在远程服务器与本地计算机之间创建 TCP 隧道。 运行以下命令:

az webapp create-remote-connection -n ${WEBAPP_NAME} -g ${RESOURCEGROUP_NAME}

该命令会返回以下结果:

Verifying if app is running....
App is running. Trying to establish tunnel connection...
Opening tunnel on port: 59445
SSH is available { username: root, password: Docker! }
Ctrl + C to close

从命令结果中获取以下信息:

必需的信息 “值”
Opening tunnel on port PORT_NUMBER(例如 59445
username root
password Docker!

记下密码和端口号。 下一部分将使用这两个值。

使用 SSH 和 TCP 隧道登录

现在,你需要使用 ssh 命令登录到服务器。 打开一个新的命令终端,并运行以下命令:

export PORT_NUMBER=<the port number from above>
ssh root@127.0.0.1 -L 9990:localhost:9990 -p $PORT_NUMBER 

提示

如果要访问 JBoss EAP 管理 Web 控制台,请指定 -L 9990:localhost:9990 选项。 然后,访问 JBoss Web 控制台 http://localhost:9990/console。 如果不需要登录 JBoss Web 控制台,则可以删除“-L”选项。

登录到服务器时,会看到以下消息。

The authenticity of host '[127.0.0.1]:59445 ([127.0.0.1]:59445)' can't be established.
ECDSA key fingerprint is SHA256:vHsp1b3+7NtnHISvZ6aKS82pww+e5L6CUc9fKaPZGDQ.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[127.0.0.1]:59445' (ECDSA) to the list of known hosts.
root@127.0.0.1's password:
   _|_|
 _|    _|  _|_|_|_|  _|    _|  _|  _|_|    _|_|
 _|_|_|_|      _|    _|    _|  _|_|      _|_|_|_|
 _|    _|    _|      _|    _|  _|        _|
 _|    _|  _|_|_|_|    _|_|_|  _|          _|_|_|

     J A V A   O N   A P P   S E R V I C E

Documentation: https://aka.ms/appservice

**NOTE**: No files or system changes outside of /home will persist beyond your application's current session. /home is your application's persistent storage and is shared across all the server instances.

运行 JBoss CLI 命令

登录到远程服务器后,可以将 JBoss EAP 管理 CLI 工具作为 jboss-cli.sh 运行。 CLI 命令位于 /opt/eap/bin/ 目录中。

使用以下命令连接到 JBoss EAP:

/opt/eap/bin/jboss-cli.sh --connect
Picked up JAVA_TOOL_OPTIONS: -Xmx2402M -Djava.net.preferIPv4Stack=true 

连接到 JBoss EAP 服务器后,运行 JBoss CLI 命令,获取 JBoss 服务器信息:

[standalone@localhost:9990 /] :product-info
{
    "outcome" => "success",
    "result" => [{"summary" => {
        "host-name" => "295cf7c97684",
        "instance-identifier" => "24bb4e37-ac89-42bc-b87e-d635d37a56f3",
        "product-name" => "JBoss EAP",
        "product-version" => "7.4.2.GA",
        "product-community-identifier" => "Product",
        "product-home" => "/opt/eap",
        "last-update-date" => "4/26/22, 10:29 PM",
        "standalone-or-domain-identifier" => "STANDALONE_SERVER",
        "host-operating-system" => "Ubuntu 20.04.4 LTS",
        "host-cpu" => {
            "host-cpu-arch" => "amd64",
            "host-core-count" => 2
        },
        "jvm" => {
            "name" => "OpenJDK 64-Bit Server VM",
            "java-version" => "11",
            "jvm-version" => "11.0.14.1",
            "jvm-vendor" => "Microsoft",
            "java-home" => "/usr/lib/jvm/msopenjdk-11-amd64"
        }
    }}]

可通过以下命令获取所有已部署的应用程序:

[standalone@localhost:9990 /] ls deployment
ROOT.war

接下来,通过运行以下命令来测试数据库连接:

[standalone@localhost:9990 /] /subsystem=datasources/data-source="JPAWorldDataSourceDS":test-connection-in-pool
{
    "outcome" => "success",
    "result" => [true]
}

退出 JBoss EAP CLI。

exit

访问 JBoss EAP 管理 Web 控制台

接下来,访问 JBoss 管理 Web 控制台。

首先,创建一个管理员用户和用于身份验证的密码:

/opt/eap/bin/add-user.sh -u admin -p admin -r ManagementRealm

应该会看到与下面类似的输出。

Picked up JAVA_TOOL_OPTIONS: -Xmx5480M -Djava.net.preferIPv4Stack=true
Updated user 'admin' to file '/opt/eap/standalone/configuration/mgmt-users.properties'
Updated user 'admin' to file '/opt/eap/domain/configuration/mgmt-users.properties'

现在,可以从本地环境访问 Web 控制台。 使用浏览器访问以下 URL:

http://127.0.0.1:9990/console

在身份验证对话框中,使用先前创建的用户名和密码登录:

Screenshot that shows the authentication dialog box for the admin console.

登录到 Web 控制台后,你会看到以下屏幕:

Screenshot that shows the main page of the admin console.

可以从“配置”>“子系统”>“数据源和驱动程序”>“数据源”确认已创建的数据源。

Screenshot that shows the list of data sources on the admin console.

还可以从“运行时”>“系统”>“JAX-RS”>“你的应用程序”确认应用程序的 RESTful 终结点。

Screenshot that shows RESTful endpoints on the admin console.

警告

如果通过 JBoss CLI 命令或 Web 控制台直接访问远程服务器并添加或更新某个配置,则在重启 Azure 应用服务实例之后会清除并删除该配置。 若要持久保存配置,请在启动脚本中对此进行配置。 例如,我们在前面的单元中创建了 createMySQLDataSource.sh 作为启动脚本。

打开日志流

接下来,登录到服务器并访问应用程序日志。 可以使用以下命令通过登录本地计算机来访问日志:

az webapp log tail --name ${WEBAPP_NAME} --resource-group ${RESOURCEGROUP_NAME}

运行此命令后,你将获得日志输出:

az webapp log tail  -n jakartaee-app-on-jboss-1606464084546 \
  -g jakartaee-app-on-jboss-1606464084546-rg

2020-12-09T02:23:24.412067731Z: [INFO]  02:23:24,411 INFO  [org.wildfly.extension.undertow] (ServerService Thread Pool -- 82) WFLYUT0021: Registered web context: '/' for server 'default-server'
2020-12-09T02:23:24.455340165Z: [INFO]  02:23:24,453 INFO  [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0010: Deployed "ROOT.war" (runtime-name : "ROOT.war")
2020-12-09T02:23:24.464834646Z: [INFO]  02:23:24,456 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 45) WFLYSRV0010: Deployed "activemq-rar.rar" (runtime-name : "activemq-rar.rar")
2020-12-09T02:23:24.674103836Z: [INFO]  02:23:24,673 INFO  [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0212: Resuming server
2020-12-09T02:23:24.676640538Z: [INFO]  02:23:24,675 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: JBoss EAP 7.2.9.GA (WildFly Core 6.0.30.Final-redhat-00001) started in 25914ms - Started 537 of 709 services (345 services are lazy, passive or on-demand)
2020-12-09T02:23:24.680203180Z: [INFO]  02:23:24,679 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0060: Http management interface listening on http://127.0.0.1:9990/management
2020-12-09T02:23:24.680950010Z: [INFO]  02:23:24,680 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://127.0.0.1:9990

练习摘要

在本单元中,你已了解如何配置 Java EE 8 (Jakarta EE) 应用程序并将其部署到 Azure 应用服务上的 JBoss EAP。 然后,你在启动脚本中使用了 DataSource 对象将 MySQL 连接到 JBoss EAP。

你还了解了如何使用 TCP 隧道从 CLI 和 GUI 访问远程服务器。 最后,你从本地计算机访问了日志文件。