华为云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。
APM产品对比
从上面的对比图可以看了,华为云和AWS的布局有点类似,产品拆分成了两个,阿里、谷歌、微软都是做成了一个产品(华为的AOM是个一体华的运维平台,里面包含APM的数据,相对更接近ARMS、stackdriver这些产品)。

二、华为云APM实战

本次测试使用的ECS虚拟主机进行测试,所以需要先在Linux主机上安装ICagent程序;如果是CCE容器测试,这部可以省略,只需要在运行容器的时候选择勾选APM就可以了。

安装ICAgent之前,又需要获取AK/SK信息,这个可以在IAM — 用户 — 安全设置项 — 新增访问密钥里进行配置(每个用户只允许配置2个):
huaweicloud-iam-aksk
出于安全原因,AK/SK信息只能下载一次,如果丢失或忘记,只能重新再生成。有了这两个信息,可以在Linux下一条指令完成ICAgent的安装:

curl http://icagent-ap-southeast-1.obs.ap-southeast-1.myhuaweicloud.com/ICAgent_linux/apm_agent_install.sh > apm_agent_install.sh
REGION=ap-southeast-1
bash apm_agent_install.sh -ak ak信息 -sk SK信息 -region ap-southeast-1 -projectid 0de61da60f00f3952f87c003fd9cd8f0;

这里为便于查看,我把指令拆分成了三部分,由于这里我使用的香港节点,这里对应是ap-southeast-1。

安装完成后,这里根据华为云官网的最佳实践下载测试代码:

mkdir /root/testdemo/ && cd /root/testdemo/
curl -l http://demos.obs.myhuaweicloud.com/demo_install.sh > demo_install.sh && bash demo_install.sh
# 安装运行java程序所需的环境
yum -y install java-1.8.0-openjdk mariadb-server
mysql_secure_installation

这里会下载4个demo开头的tar文件,解压开来是四个java程序。其中需要修改第三个程序,即cat application_dao.yml文件,修改里面的数据库连接信息。

修改完成后,在启动应用程序的时候,有两个启动文件:
– start.sh 该文件是不带APM的启动脚本
– start_apminside.sh 该文件是带APM的启动脚本

这个时候直接启动,虽然可以正常打开UI界面,不过登录和操作是不成功的,因为数据库里没有数据,看dao.log也会发现连接不到数据库。官方的实践内容实际上是缺了步骤的,通过源码分析,发现可以增加如下SQL增加对应的表结构、登录用户和测试数据:

create database `ShoppingMallDB` default character set utf8 collate utf8_general_ci;
use ShoppingMallDB;
CREATE TABLE `product_table` (
        `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
        `name` TEXT NULL,
        `price` DOUBLE NULL DEFAULT NULL,
        `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY (`id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
AUTO_INCREMENT=5
;
CREATE TABLE `user_table` (
        `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
        `name` TEXT NOT NULL,
        `password` TEXT NOT NULL,
        `created` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY (`id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
AUTO_INCREMENT=4
;
CREATE TABLE `payment_table` (
        `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
        `productid` TEXT NOT NULL,
        `userid` TEXT NOT NULL,
        `created` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
        PRIMARY KEY (`id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
AUTO_INCREMENT=4
;
SET GLOBAL event_scheduler = OFF;
SET GLOBAL event_scheduler = ON;
CREATE EVENT AutoDeleteOlProduct
ON SCHEDULE EVERY '1' HOUR
  STARTS CURRENT_TIMESTAMP
  ON COMPLETION PRESERVE
  DO
DELETE  FROM ShoppingMallDB.payment_table WHERE created < DATE_SUB(NOW(), INTERVAL 1 DAY);
INSERT INTO `user_table` (`id`, `name`, `password`, `created`)
VALUES
    (0,'apm','123456',Now());
INSERT INTO `user_table` (`id`, `name`, `password`, `created`)
VALUES
    (1,'abc','123456',Now());
INSERT INTO `user_table` (`id`, `name`, `password`, `created`)
VALUES
    (2,'paas','123456',Now());
INSERT INTO `user_table` (`id`, `name`, `password`, `created`)
VALUES
    (3,'user','123456',Now());
INSERT INTO `product_table` (`id`, `name`, `price`, `created`)
VALUES
    (34211223411,'product1',2599,Now());
INSERT INTO `product_table` (`id`, `name`, `price`, `created`)
VALUES
    (34211223412,'product2',3488,Now());
INSERT INTO `product_table` (`id`, `name`, `price`, `created`)
VALUES
    (34211223413,'product3',2299,Now());
INSERT INTO `product_table` (`id`, `name`, `price`, `created`)
VALUES
    (34211223414,'product4',1345,Now());

当然出于安全考虑,程序也可以不连接数据库的root用户,可以使用其他用户操作,这里新建一个用户:

use mysql;
select host, user from user;
create user apm identified by 'paasapm';
grant all on ShoppingMallDB.* to apm@'%' identified by 'paasapm' with grant option;
flush privileges;

三、APM调用链操作

通过华为云帐号控制台进入APM后,会提示“当前为基础版,APM探针默认不采集性能数据,请点击 免费体验 ,或 切换版本 至企业版、专业版。”,由于企业版和专业版会根据探针数量收费,这里只出于测试目的,选择基础版免费体验即可,一次可以免费体验60分钟。
huaweicloud-apm-topology

从上面图可以看到可以使用链路拓扑、调用追踪、SQL分析、JVM监控分析应用本身的问题。

最后贴下几个云厂商相关云产品的链接页:
AWS x-Ray
AWS cloudwatch
阿里云ARMS
Azure Application Insights(其是Azure Monitor产品的一部分)
stackdriver(新名称叫Operations suite)

发表评论

您的电子邮箱地址不会被公开。