在某些业务场景中,用户希望根据自己的业务逻辑来设置一些自定义的监控指标,并根据这些指标进行弹性伸缩,例如每秒钟接收的异常数据个数等。为满足这一需求,EAS提供了实时指标上报的接口,并打通了从数据采集、存储、展示到弹性伸缩的完整链路。您只需在代码中配置定期上报自定义指标的逻辑,并在服务部署时声明自定义指标。服务部署成功后,通过该链路,EAS便能够接收服务定期上报的自定义指标数据,并在服务监控页面中进行展示。
使用限制
仅QPS和CPU Utilization指标支持自动弹性扩缩容。
仅使用自定义镜像或自定义Processor部署服务时,支持通过metrics字段声明该服务需要上报的指标名称和类型等信息。
步骤一:配置定期上报指标的接口
部署服务前,您需要准备自定义镜像或自定义Processor,并在代码中配置需要上报的自定义指标以及定期上报自定义指标的接口。具体操作,请参考服务部署:自定义镜像或服务部署:自定义Processor。
例如,在您的代码中实现的POST请求方法为http://localhost:8080/api/builtin/realtime_metrics
,Request Body如下:
[
{
"name": "qps",
"tags": {
"status": "200"
},
"value": 20
},
{
"name": "qps",
"tags": {
"status": "400"
},
"value": 13
}
]
上述示例表示上传了一个名为qps的指标。其中,状态码为200的平均qps为20,状态码为400的平均qps为13。在简单场景中,如果您不需要使用标签(tags)对指标进行进一步分类或细分,可以直接忽略tags字段,如下所示:
[
{
"name": "qps",
"value": 20
}
]
您需要自己编写代码,实现定期调用上述接口上报自定义指标的功能。
步骤二:部署服务
定义好自定义指标后,如果希望服务上传这些自定义指标,您在部署服务时,需要事先在服务配置的JSON文件中,通过metrics字段声明需要上报的指标名称和类型等信息。EAS框架会根据您声明的指标信息,在服务部署时进行相关初始化,并完成构建监控页面的dashboard等操作。具体操作步骤如下:
准备服务配置的JSON文件。
您需要在文件中增加metrics字段,用来声明指标名称和类型等信息。以使用自定义镜像部署服务为例,JSON文件示例如下:
{ "name": "metrics_test", "containers": [ { "image": "registry-vpc.cn-chengdu.aliyuncs.com/eas/eas-image-****:metrics", "command": "python3 -u /image.py", "port": 5000 } ], "metrics": [ { "name": "qps", "tags": "status" } ], "metadata": { "instance": 1, "cpu": 2, "memory":1000 } }
其中image配置为前期已准备好的自定义镜像;metrics各字段的详细含义说明如下,其他参数说明,请参见服务模型所有相关参数说明。
参数
是否必选
参数说明
name
是
服务中要上报的自定义指标的名称。
服务监控页面会根据该名称创建监控图表dashboard。
在弹性伸缩时,根据该名称来配置弹性伸缩的参考指标。
tags
否
指标的tags名称。当同一个指标需要进行细分时,可以使用不同的子指标。例如,在qps中,可以按照状态码对指标进行细分。
上述配置表示基于Docker镜像来部署服务,您可以通过自定义镜像来构建自己的业务逻辑。metrics字段配置表示声明了一个名为qps的指标,监控数据的过期时间为一个星期,超过一个星期的数据会自动清理。同时还定义了一个名为status的tag,可以用于对同一个监控指标上报不同的tag信息。例如,在qps指标中,用户通常希望记录不同状态码所对应的请求数量,比如status=200,status=400等。
使用配置文件部署模型服务。
进入部署服务页面。具体操作,请参见控制台上传部署。
在对应配置编辑区域,单击JSON独立部署,并将上述准备好的JSON文件内容粘贴到编辑框中。
单击部署。
步骤三:展示指标
服务部署完成后,根据您的代码逻辑定期上报自定义指标数据。EAS框架提供了本地的API用于接收上报的自定义指标数据。
在对接弹性伸缩时,将使用实时上报的数据。
在数据采集和展示的链路中,由于数据量较大,不会按上报的频率展示,数据加工链路会在一分钟之内进行采集展示,监控页面展示的是分钟级别的数据。
以自定义指标qps为例,查询方法如下:
在服务列表中,单击服务名称,进入服务详情页面。
切换到服务监控页签,在该页面的左上方选择custom面板。
在该面板中,您可以查看自定义指标的监控数据,包括以下两部分内容:
展示服务中所有实例的平均指标数据。
分别展示服务中每个实例的指标数据。
步骤四:配置弹性伸缩
服务可以开启基于自定义指标的弹性伸缩,与常规指标的操作方法一致。操作详情,请参见水平自动扩缩容功能。
以自定义指标qps为例,配置方法如下:
通过本地客户端开启弹性伸缩,示例如下。具体操作方法及参数说明,请参见方式二:通过本地客户端管理水平自动扩缩容功能。
当配置的自定义指标不需要上报tag时
eascmd autoscale service_name -Dmin=1 -Dmax=10 -Dstrategies.custom[qps]=3
该配置表示当qps指标的平均值超过3时开始扩容,小于3时开始缩容。
当配置的自定义指标需要精确到tag维度时
eascmd autoscale service_name -Dmin=1 -Dmax=10 -Dstrategies.custom[qps]@status[200]=3
该配置表示当qps指标的状态码为200的曲线平均指标超过3时开始扩容,小于3时开始缩容。
通过控制台开启弹性伸缩,示例如下。具体操作方法及参数说明,请参见方式一:通过控制台管理水平自动扩缩容功能。
当配置的自定义指标不需要上报tag时,您需要在自动弹性扩缩容设置对话框的自定义扩缩容指标处,配置变量名为custom[qps]、变量值为3。
当配置的自定义指标需要精确到tag维度时,您需要在自动弹性扩缩容设置对话框的自定义扩缩容指标处,配置变量名为custom[qps]@status[200]、变量值为3。