本文以转账应用的发布、变更及监控为例,介绍运维管理模块中的各个组件的功能。
前提条件
步骤一:创建转账应用
在 应用管理 中创建名为 transfer money 的应用。技术栈选择 SOFABoot 2.0 版本。具体步骤参见 创建应用。
步骤二:创建应用服务
在 容器应用服务 中创建以下 2 个应用服务,参见 创建应用服务。
创建转账服务端的应用服务,名为 aks-transfermoney-server。
涉及到的配置信息如下:
基本信息和 Pod 模版配置:
CPU:200m Core - 500m Core,Memory:512 MB - 1 GB;
image:
使用示例镜像 aks-transfermoney-server,镜像地址:
registry-vpc.cn-shanghai.aliyuncs.com/sofa-samples/aks-transfermoney-server:20190726095608708-master.40215e87
。环境变量配置:
APPSVC_VERSION = V1
,ANTCLOUD_SOFA_PROFILE = prod
。健康检查配置:Readiness Probe 配置检查方法为 HTTP GET 方法,访问路径为
/health/readiness
,访问端口8080
。其余项按照输入框提示配置。日志服务配置:选择已有或新建日志库,日志路径
/home/admin/release/run/logs/aks-transfermoney-server/digest/*.log
。业务实时监控:监控目录
/home/admin/release/run/logs
、/home/admin/release/run/logs/aks-transfermoney-client/digest/transfermoney.log
。
弹性配置:Server 开启副本弹性扩缩容功能,最小副本数 1,最大副本数 4。根据 CPU 使用率 50% 进行弹性扩缩容。即在副本数允许的情况下,确保 CPU 使用率在 50% (实际使用 / 请求资源量) 水位之下。可添加多个指标,如匹配内存共同使用,弹性规则 replica count 取最大期望值进行下发操作。
访问配置:Server 使用 ClusterIP Service,允许集群内访问。端口映射设置为 TCP 协议,访问端口 80,容器端口 8341。需记录下这个 Service Name,需要以环境变量形式配置到客户端应用。
发布配置:都保持默认设置。
说明该应用服务配置编辑完成提交后,进行版本备注,方便区分版本。其他设置参见 创建应用服务。
创建转账客户端的应用服务,名称为 aks-transfermoney-client。
涉及到的配置信息如下:
基本信息和 Pod 模版配置:
CPU:200m Core - 500m Core,Memory:512 MB - 1 GB;
image:使用示例镜像 aks-transfermoney-client,镜像地址:
registry-vpc.cn-shanghai.aliyuncs.com/sofa-samples/aks-transfermoney-client:20190815134744553-master.5ea6278b
。环境变量配置:变量名称为
SERVER_TM_ADDRESS
,值为 Server 端 Service Name。业务实时监控:监控目录
/home/admin/release/run/logs
。
弹性配置:Client 使用固定副本数 1。每个 client 能够压测并发上限为 1000。
访问配置:Client 绑定公网 SLB Service,前端端口 80 ,后端端口 8341。其余为默认值。
发布配置:保持默认设置。
该应用服务配置编辑完成提交后,进行版本备注,方便区分版本。其他设置参见 创建应用服务。
步骤三:创建发布单发布应用
选取两个应用服务并进行串行发布。在高级配置中设置 aks-transfermoney-client 依赖于 aks-transfermoney-server。
步骤四:客户端触发批量操作
在 client 应用服务详情页面的 服务 页签中获取到刚刚创建的 SLB Service 公网 IP 地址。
在本地执行以下 curl 命令,以 1000 并发启动客户端进行批量调用服务。
说明若客户端实例有多个,则多调用几次, SLB 默认是轮询配置。本示例为 1 个客户端实例。
# 启动,最高并发1000 # 转账client因高并发 (max 1000)导致实例宕机,系统会自动重启容器应用 curl -X POST "http://$Money_Client_SERVICE_IP/webapi/transferclient/start?concurrency=1000&minamount=100&maxamount=100" # 统计 curl http://$Money_Client_SERVICE_IP/webapi/transferclient/gauges # 停止 curl -X PUT "http://$Money_Client_SERVICE_IP/webapi/transferclient/stop"
步骤五:创建业务监控大盘
在 实时监控 的 自定义监控 页面,创建如下各种维度的监控项:
说明监控项配置完成后,约 2 至 3 分钟后可以查看监控数据。单击左侧导航栏 自定义监控,然后单击您新增的监控项,可查看统计值。具体步骤请参见 创建自定义监控。
服务端响应请求的容器所在 Cell:
说明具体操作步骤请参见 秒级统计_多 Key。
监控类型:秒级统计/多 Key。
监控配置名:输入监控项名称,例如:transferserver_cell。
所属应用:选择本教程中创建的 Server 应用服务。
采集日志文件:选择 Server 应用服务中指定的日志路径。例如:
/home/admin/release/run/logs/aks-transfermoney-server/digest/transfermoney.log
。列值分组:指定分组列为 Cell。
统计方式: 求值方式为求行数。
应用版本:
说明具体操作步骤请参见 秒级统计_多 Key。
监控类型:秒级统计/多 Key。
监控配置名:输入监控项名称,例如:transferserver_Version。
所属应用:选择本教程中创建的 Server 应用服务。
采集日志文件:选择 Server 应用服务中指定的日志路径。例如:
/home/admin/release/run/logs/aks-transfermoney-server/digest/transfermoney.log
。列值分组:指定分组列为 Version。
统计方式: 求值方式为求行数。
客户端记录的 HTTP 访问结果码:
说明具体操作步骤请参见 秒级统计_多 Key。
监控类型:秒级统计/多 Key。
监控配置名:输入监控项名称,例如:transferclient_httpstatus。
所属应用:选择本教程中创建的 client 应用服务。
采集日志文件:选择 client 应用服务的日志路径。例如:
/home/admin/release/run/logs/aks-transfermoney-client/digest/transfermoney.log
。列值分组:指定分组列为 HttpStatus。
统计方式: 求值方式为求行数。
转出账户名称按分钟的 Top 统计:
说明具体操作步骤请参见 分钟统计 Top。
监控类型:分钟统计 Top。
监控配置名:输入监控项名称,例如:transfer_top_From。
所属应用:选择本教程中创建的 Server 应用服务。
采集日志文件:选择 Server 应用服务中指定的日志路径。例如:
/home/admin/release/run/logs/aks-transfermoney-server/digest/transfermoney.log
。列值分组:指定分组列为 From。
统计方式: 最大排名数为 10,求值方式为求行数。
转入账户名称按分钟的 Top 统计:
说明具体操作步骤请参见 分钟统计 Top。
监控类型:分钟统计 Top。
监控配置名:输入监控项名称,例如:transfer_top_To。
所属应用:选择本教程中创建的 Server 应用服务。
采集日志文件:选择 Server 应用服务中指定的日志路径。例如:
/home/admin/release/run/logs/aks-transfermoney-server/digest/transfermoney.log
。列值分组:指定分组列为 To。
统计方式: 最大排名数为 10,求值方式为求行数。
分钟级客户端调用统计:
说明具体操作步骤请参见 分钟统计_多 Key。
监控类型:分钟统计/多 Key。
监控配置名:输入监控项名称,例如:transferclient_status_minutes。
所属应用:选择本教程中创建的 client 应用服务。
采集日志文件:选择 client 应用服务的日志路径。例如:
/home/admin/release/run/logs/aks-transfermoney-client/digest/transfermoney.log
。列值分组:指定分组列为 status。
求值方式:对列值求平均。
求平均列:latency。
在 自定义监控 页面,新建 TransferMoney 大盘,配置如下:
步骤六:监控告警
针对某个监控项或者所有监控项进行报警规则设置和报警订阅。
例如:以下配置对分钟级客户端调用统计 (transferclient_status_minutes)监控项,配置报警规则,即一旦延迟 (所有 HTTP code)或错误(非 HTTP 200)在 1 分钟内 latency 时延指标到达一定程度后就报警。
步骤七:验证应用服务弹性能力
在本地执行以下 curl 命令,以 1500 并发启动客户端进行批量调用服务。
curl -X POST "http://$Money_Client_SERVICE_IP/webapi/transferclient/start?concurrency=1500&minamount=100&maxamount=100"
查看 Server 应用服务的实例数扩容情况。
之前对 Server 应用服务的弹性配置为 1 ~ 4。client 端压力启动后,Server 实例数很快会达到最大实例数 4。实时监控大盘亦开始展示相关数据趋势。上限并发到一定程度会引发 OOM(内存不足)。
在 Server 应用服务详情页,单击 快捷操作 > 扩缩容,扩容到 10 个实例,单击 提交。提交后会自动生成发布单,单击 整体发布 进行发布。
可以看到此次发布单因为只进行弹性配置变更,会很快生效。
在本地执行以下 curl 命令,停止 client 端调用。
curl -X PUT "http://$Money_Client_SERVICE_IP/webapi/transferclient/stop"
查看 Server 应用服务的实例数缩容情况。
Server 实例数很快会跌回最小实例数 1。实时监控大盘亦开始展示相关数据趋势。