快速入门

本文以转账应用的发布、变更及监控为例,介绍运维管理模块中的各个组件的功能。

TM

前提条件

步骤一:创建转账应用

应用管理 中创建名为 transfer money 的应用。技术栈选择 SOFABoot 2.0 版本。具体步骤参见 创建应用。

步骤二:创建应用服务

容器应用服务 中创建以下 2 个应用服务,参见 创建应用服务

  1. 创建转账服务端的应用服务,名为 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 = V1ANTCLOUD_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,需要以环境变量形式配置到客户端应用。

    • 发布配置:都保持默认设置。

      说明

      该应用服务配置编辑完成提交后,进行版本备注,方便区分版本。其他设置参见 创建应用服务

  2. 创建转账客户端的应用服务,名称为 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。

步骤四:客户端触发批量操作

  1. 在 client 应用服务详情页面的 服务 页签中获取到刚刚创建的 SLB Service 公网 IP 地址。

  2. 在本地执行以下 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"
    客户端触发

步骤五:创建业务监控大盘

  1. 实时监控自定义监控 页面,创建如下各种维度的监控项:

    说明

    监控项配置完成后,约 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。

  2. 自定义监控 页面,新建 TransferMoney 大盘,配置如下:

    • 名称:TransferMoney 大盘。

    • 大盘布局:单击新增报表,添加上一步中创建的各类监控项。具体配置参数参见 大盘

      可以将自定义的 TransferMoney 大盘添加到 关键业务大盘 中,方便查看各个维度进行统计的信息:

步骤六:监控告警

针对某个监控项或者所有监控项进行报警规则设置和报警订阅。

  1. 设置通知组

  2. 配置报警规则

    例如:以下配置对分钟级客户端调用统计 (transferclient_status_minutes)监控项,配置报警规则,即一旦延迟 (所有 HTTP code)或错误(非 HTTP 200)在 1 分钟内 latency 时延指标到达一定程度后就报警。

  3. 订阅自定义监控报警

步骤七:验证应用服务弹性能力

  1. 在本地执行以下 curl 命令,以 1500 并发启动客户端进行批量调用服务。

     curl -X POST "http://$Money_Client_SERVICE_IP/webapi/transferclient/start?concurrency=1500&minamount=100&maxamount=100"
  2. 查看 Server 应用服务的实例数扩容情况。

    之前对 Server 应用服务的弹性配置为 1 ~ 4。client 端压力启动后,Server 实例数很快会达到最大实例数 4。实时监控大盘亦开始展示相关数据趋势。上限并发到一定程度会引发 OOM(内存不足)。

  3. 在 Server 应用服务详情页,单击 快捷操作 > 扩缩容,扩容到 10 个实例,单击 提交。提交后会自动生成发布单,单击 整体发布 进行发布。

    可以看到此次发布单因为只进行弹性配置变更,会很快生效。

  4. 在本地执行以下 curl 命令,停止 client 端调用。

    curl -X PUT "http://$Money_Client_SERVICE_IP/webapi/transferclient/stop"
  5. 查看 Server 应用服务的实例数缩容情况。

    Server 实例数很快会跌回最小实例数 1。实时监控大盘亦开始展示相关数据趋势。