华为云APM应用性能监控
一、常见APM概述
华为云 APM 是Application Performance Management的缩写,对应的开源产品有:Pinpoint、SkyWalking、Zipkin、CAT、Xhprof/Xhgui等,华为云的APM就是基于开源的pinpoint二次开发的商业产品。另外对应的几家商业云厂商的产品有阿里云的ARMS(Application Real-Time moniloring Service)、AWS的X-Ray、Azure的Application Insights、Google的stackdriver。
从上面的对比图可以看了,华为云和AWS的布局有点类似,产品拆分成了两个,阿里、谷歌、微软都是做成了一个产品(华为的AOM是个一体华的运维平台,里面包含APM的数据,相对更接近ARMS、stackdriver这些产品)。
二、华为云APM实战
本次测试使用的ECS虚拟主机进行测试,所以需要先在Linux主机上安装ICagent程序;如果是CCE容器测试,这部可以省略,只需要在运行容器的时候选择勾选APM就可以了。
安装ICAgent之前,又需要获取AK/SK信息,这个可以在IAM — 用户 — 安全设置项 — 新增访问密钥里进行配置(每个用户只允许配置2个):
出于安全原因,AK/SK信息只能下载一次,如果丢失或忘记,只能重新再生成。有了这两个信息,可以在Linux下一条指令完成ICAgent的安装:
1curl http://icagent-ap-southeast-1.obs.ap-southeast-1.myhuaweicloud.com/ICAgent_linux/apm_agent_install.sh > apm_agent_install.sh
2REGION=ap-southeast-1
3bash apm_agent_install.sh -ak ak信息 -sk SK信息 -region ap-southeast-1 -projectid 0de61da60f00f3952f87c003fd9cd8f0;
这里为便于查看,我把指令拆分成了三部分,由于这里我使用的香港节点,这里对应是ap-southeast-1。
安装完成后,这里根据华为云官网的最佳实践下载测试代码:
1mkdir /root/testdemo/ && cd /root/testdemo/
2curl -l http://demos.obs.myhuaweicloud.com/demo_install.sh > demo_install.sh && bash demo_install.sh
3
4# 安装运行java程序所需的环境
5yum -y install java-1.8.0-openjdk mariadb-server
6mysql_secure_installation
这里会下载4个demo开头的tar文件,解压开来是四个java程序。其中需要修改第三个程序,即cat application_dao.yml
文件,修改里面的数据库连接信息。
修改完成后,在启动应用程序的时候,有两个启动文件:
– start.sh 该文件是不带APM的启动脚本
– start_apminside.sh 该文件是带APM的启动脚本
这个时候直接启动,虽然可以正常打开UI界面,不过登录和操作是不成功的,因为数据库里没有数据,看dao.log也会发现连接不到数据库。官方的实践内容实际上是缺了步骤的,通过源码分析,发现可以增加如下SQL增加对应的表结构、登录用户和测试数据:
1create database `ShoppingMallDB` default character set utf8 collate utf8_general_ci;
2
3use ShoppingMallDB;
4
5CREATE TABLE `product_table` (
6 `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
7 `name` TEXT NULL,
8 `price` DOUBLE NULL DEFAULT NULL,
9 `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
10 PRIMARY KEY (`id`)
11)
12COLLATE='latin1_swedish_ci'
13ENGINE=InnoDB
14AUTO_INCREMENT=5
15;
16
17CREATE TABLE `user_table` (
18 `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
19 `name` TEXT NOT NULL,
20 `password` TEXT NOT NULL,
21 `created` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
22 PRIMARY KEY (`id`)
23)
24COLLATE='latin1_swedish_ci'
25ENGINE=InnoDB
26AUTO_INCREMENT=4
27;
28
29CREATE TABLE `payment_table` (
30 `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
31 `productid` TEXT NOT NULL,
32 `userid` TEXT NOT NULL,
33 `created` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
34 PRIMARY KEY (`id`)
35)
36COLLATE='latin1_swedish_ci'
37ENGINE=InnoDB
38AUTO_INCREMENT=4
39;
40
41SET GLOBAL event_scheduler = OFF;
42SET GLOBAL event_scheduler = ON;
43
44CREATE EVENT AutoDeleteOlProduct
45
46ON SCHEDULE EVERY '1' HOUR
47 STARTS CURRENT_TIMESTAMP
48 ON COMPLETION PRESERVE
49 DO
50DELETE FROM ShoppingMallDB.payment_table WHERE created
当然出于安全考虑,程序也可以不连接数据库的root用户,可以使用其他用户操作,这里新建一个用户:
1use mysql;
2select host, user from user;
3create user apm identified by 'paasapm';
4grant all on ShoppingMallDB.* to apm@'%' identified by 'paasapm' with grant option;
5flush privileges;
三、APM调用链操作
通过华为云帐号控制台进入APM后,会提示“当前为基础版,APM探针默认不采集性能数据,请点击 免费体验 ,或 切换版本 至企业版、专业版。”,由于企业版和专业版会根据探针数量收费,这里只出于测试目的,选择基础版免费体验即可,一次可以免费体验60分钟。
从上面图可以看到可以使用链路拓扑、调用追踪、SQL分析、JVM监控分析应用本身的问题。
最后贴下几个云厂商相关云产品的链接页:
AWS x-Ray
AWS cloudwatch
阿里云ARMS
Azure Application Insights(其是Azure Monitor产品的一部分)
stackdriver(新名称叫Operations suite)
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/huaweicloud-apm/6708.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.