使用APM管理电商应用
本实践基于华为云服务编写,以某手机销售电商应用为例,如何将APM接入该电商应用并管理起来。该电商应用情况介绍:
- 该应用是为使用JBoss部署的JAVA应用,支持部署在SUSE12 SP2虚拟机上,运行环境支持JRE1.8及以上版本。
- 该应用包含五个微服务,每个微服务包含一个实例:
- API网关服务:名称为apigw,主要负责应用整体的服务鉴权、限流、过滤等。
- 商品管理服务:名称为product,主要负责商品查询、购买等。
- 用户管理服务:名称为user,主要负责用户登录,以及购买商品时的用户身份核实等。
- 数据持久服务:名称为dao,主要负责请求数据库操作。
- 数据库服务:MySQL数据库。
下面介绍如何将APM接入该电商应用并管理起来。
操作流程
- 将应用部署到华为云服务器。APM当前只支持华为云服务器,所以需要将应用部署到华为云服务器上。
- 安装ICAgent。ICAgent是APM的采集代理,用于实时采集拓扑和调用链数据,您需要将其安装在应用所在服务器上。
- 修改应用启动参数,以确保APM可以监控应用。
- 在APM上管理应用,例如通过拓扑查看应用情况、通过事务了解用户体验情况等。
操作步骤
- 将应用部署到华为云服务器。
- 注册华为云账号并充值、购买Linux弹性云服务器,请参考购买并登录Linux弹性云服务器。
为保证应用性能,购买弹性云服务器时vCPU/内存请选择2核/4GB以上。应用只支持SUSE12 SP2操作系统,请在公共镜像中选择该镜像。
- 登录弹性云服务器,创建应用目录并进入目录,本实践以目录mall为例。
- 搭建MySQL数据库并记录搭建地址、端口和连接数据库的用户名和密码。demo已经可以自行创建对应库,无需手动创建。
- 执行如下命令将应用下载至创建的mall目录并安装。
curl -l http://demos.obs.myhuaweicloud.com/demo_install.sh > demo_install.sh && bash demo_install.sh
安装过程中需根据以下操作将数据库信息更换为自己搭建的数据库信息。
- 下载并打开命令中的.sh文件。
- 下载并打开.sh文件中的demo_03.tar 文件。
- 打开demo_03.tar文件中的.yaml文件,修改MySQL下的参数。
- host: 数据库的搭建地址
- port: 设置的端口
- user: 连接数据库的用户名
- pass: 连接数据库的密码
- 保存替换后继续安装。
- 注册华为云账号并充值、购买Linux弹性云服务器,请参考购买并登录Linux弹性云服务器。
- 安装ICAgent,请参考用户指南的安装ICAgent章节的首次安装。
- 修改应用启动参数,确保应用被APM监控。
修改应用的启动参数即在应用启动脚本增加下表参数:
参数
说明
本实践举例值
-javaagent
采集探针依赖的jar包,该参数值是固定的,均取值为:/opt/oss/servicemgr/ICAgent/pinpoint/pinpoint-bootstrap.jar
/opt/oss/servicemgr/ICAgent/pinpoint/pinpoint-bootstrap.jar
-Dapm_application
应用名称,您可以结合您的应用自定义。
vmall
-Dapm_tier
应用层名称,指组成该应用的微服务名称。
本例中根据微服务名称,取值分别为apigw、product、user、dao
修改前后应用启动脚本对比如下:
修改前:
nohup java -Xms512m -Xmx2048m -jar /root/testdemo/ecommerce-persistence-service-0.0.1-SNAPSHOT.jar --spring.config.location=file:/root/testdemo/application_dao.yml > dao.log & nohup java -Xms512m -Xmx2048m -jar /root/testdemo/ecommerce-api-gateway-0.0.1-SNAPSHOT.jar --spring.config.location=file:/root/testdemo/application_api.yml > api.log & nohup java -Xms512m -Xmx2048m -jar /root/testdemo/ecommerce-user-service-0.0.1-SNAPSHOT.jar --spring.config.location=file:/root/testdemo/application_userservice.yml > user.log & nohup java -Xms512m -Xmx2048m -jar /root/testdemo/ecommerce-product-service-0.0.1-SNAPSHOT.jar --spring.config.location=file:/root/testdemo/application_prod.yml > prod.log & nohup java -Xms512m -Xmx2048m -jar /root/testdemo/cloud-simple-ui-1.0.0.jar --spring.config.location=file:/root/testdemo/ui.properties > ui.log &
修改后(修改处已加粗表示):
nohup java -javaagent:/opt/oss/servicemgr/ICAgent/pinpoint/pinpoint-bootstrap.jar -Dapm_application=vmall -Dapm_tier=vmall-dao-service -Xms512m -Xmx2048m -jar /root/testdemo/ecommerce-persistence-service-0.0.1-SNAPSHOT.jar --spring.config.location=file:/root/testdemo/application_dao.yml > dao.log & nohup java -javaagent:/opt/oss/servicemgr/ICAgent/pinpoint/pinpoint-bootstrap.jar -Dapm_application=vmall -Dapm_tier=vmall-apigw-service -Xms512m -Xmx2048m -jar /root/testdemo/ecommerce-api-gateway-0.0.1-SNAPSHOT.jar --spring.config.location=file:/root/testdemo/application_api.yml > api.log & nohup java -javaagent:/opt/oss/servicemgr/ICAgent/pinpoint/pinpoint-bootstrap.jar -Dapm_application=vmall -Dapm_tier=vmall-user-service -Xms512m -Xmx2048m -jar /root/testdemo/ecommerce-user-service-0.0.1-SNAPSHOT.jar --spring.config.location=file:/root/testdemo/application_userservice.yml > user.log & nohup java -javaagent:/opt/oss/servicemgr/ICAgent/pinpoint/pinpoint-bootstrap.jar -Dapm_application=vmall -Dapm_tier=vmall-product-service -Xms512m -Xmx2048m -jar /root/testdemo/ecommerce-product-service-0.0.1-SNAPSHOT.jar --spring.config.location=file:/root/testdemo/application_prod.yml > prod.log & nohup java -Xms512m -Xmx2048m -jar /root/testdemo/cloud-simple-ui-1.0.0.jar --spring.config.location=file:/root/testdemo/ui.properties > ui.log &
- 修改完成后,便可重新启动应用。等待三分钟左右,在APM界面上即可看到应用相关数据。
后续可以在APM的概览、拓扑等界面中监控应用、定位应用的异常,具体可参考APM的用户指南。