全部产品
云市场

快速入门

更新时间:2020-03-24 10:44:09

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

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 个客户端实例。

    1. # 启动,最高并发1000
    2. # 转账client因高并发 (max 1000)导致实例宕机,系统会自动重启容器应用
    3. curl -X POST "http://$Money_Client_SERVICE_IP/webapi/transferclient/start?concurrency=1000&minamount=100&maxamount=100"
    4. # 统计
    5. curl http://$Money_Client_SERVICE_IP/webapi/transferclient/gauges
    6. # 停止
    7. curl -X PUT "http://$Money_Client_SERVICE_IP/webapi/transferclient/stop"

    客户端触发

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

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

    • 服务端响应请求的容器所在 Cell(机房)
      • 监控类型:秒级统计/多 Key。
      • 监控配置名:输入监控项名称,例如:transferserver_cell。
      • 所属应用:选择本教程中创建的 server 应用服务。
      • 采集日志文件:选择 Server 应用服务中指定的日志路径。例如:/home/admin/release/run/logs/aks-transfermoney-server/digest/transfermoney.log
      • 列值分组:指定分组列为 Cell。
      • 统计方式: 求值方式为求行数。
    • 应用版本
      • 监控类型:秒级统计/多 Key。
      • 监控配置名:输入监控项名称,例如:transferserver_Version。
      • 所属应用:选择本教程中创建的 server 应用服务。
      • 采集日志文件:选择 Server 应用服务中指定的日志路径。例如:/home/admin/release/run/logs/aks-transfermoney-server/digest/transfermoney.log
      • 列值分组:指定分组列为 Version。
      • 统计方式: 求值方式为求行数。
    • 客户端记录的 http 访问结果码:
      • 监控类型:秒级统计/多 Key。
      • 监控配置名:输入监控项名称,例如:transferclient_httpstatus。
      • 所属应用:选择本教程中创建的 client 应用服务。
      • 采集日志文件:选择 client 应用服务的日志路径。例如:/home/admin/release/run/logs/aks-transfermoney-client/digest/transfermoney.log
      • 列值分组:指定分组列为 HttpStatus。
      • 统计方式: 求值方式为求行数。
    • 转出账户名称按分钟的 Top 统计
      • 监控类型:分钟统计 Top。
      • 监控配置名:输入监控项名称,例如:transfer_top_From。
      • 所属应用:选择本教程中创建的 server 应用服务。
      • 采集日志文件:选择 Server 应用服务中指定的日志路径。例如:/home/admin/release/run/logs/aks-transfermoney-server/digest/transfermoney.log
      • 列值分组:指定分组列为 From。
      • 统计方式: 最大排名数为 10,求值方式为求行数。
    • 转入账户名称按分钟的 Top 统计
      • 监控类型:分钟统计 Top。
      • 监控配置名:输入监控项名称,例如:transfer_top_To。
      • 所属应用:选择本教程中创建的 server 应用服务。
      • 采集日志文件:选择 Server 应用服务中指定的日志路径。例如:/home/admin/release/run/logs/aks-transfermoney-server/digest/transfermoney.log
      • 列值分组:指定分组列为 To。
      • 统计方式: 最大排名数为 10,求值方式为求行数。
    • 分钟级客户端调用统计
      • 监控类型:分钟统计/多 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 时延指标到达一定程度后就报警。 alerts

  3. 订阅自定义监控报警

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

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

    1. 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 端调用。

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

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