SAE应用能够根据采集到可观测监控 Prometheus 版的自定义监控指标触发自动弹性伸缩。
基于Prometheus监控指标的弹性伸缩仅适用于SAE应用标准版、专业版。
前提条件
SAE应用接入Prometheus监控,确保自定义监控指标能够在Prometheus监控实例的 中进行查询。例如,通过示例JAR包部署应用后,接入Prometheus监控,即可查询main_page_request_duration_seconds_max等自定义监控指标。
在Prometheus监控实例的设置中,在访问地址区域,找到HTTP API地址,复制公网URL,后续步骤会用到。
根据Prometheus指标触发弹性伸缩
在SAE应用列表中,在顶部选择目标地域和命名空间,点击目标应用ID跳转到应用详情页。
点击基础信息,点击弹性伸缩。在弹性伸缩区域,点击添加弹性策略。
策略类型选择监控指标策略。
自定义策略名称。
指标来源选择Prometheus指标。
Prometheus地址输入之前复制的Prometheus监控实例的HTTP API地址的公网URL。
鉴权模式选择Authorization,然后输入Token。Token参考以下步骤生成:
创建AccessKey,并记录AccessKey ID和AccessKey Secret。
Token格式为
Basic <base64Encode(<accessKeyID:accessKeySecret>)>
,可以通过在Linux命令行执行以下命令来生成Token:echo "Basic $(echo -n '<accessKeyID>:<accessKeySecret>' | base64)" # 将其中<accessKeyID>和<accessKeySecret>替换为账户实际的AccessKey ID和AccessKey Secret。注意保留''和:。注意不要保留<>
点击连接测试,如果测试通过,则表明Prometheus地址和鉴权模式配置正确,SAE能够读取Prometheus监控指标数据。
触发条件:以示例应用为例,如果期望
main_page_request_duration_seconds_max
指标在过去1分钟的平均值为0.1
作为触发条件,则指标查询语句输入avg_over_time(main_page_request_duration_seconds_max[1m])*10
,目标值输入1
。为确保目标值设置合理,可以通过点击指标查询语句输入框旁的查询,来查询指标查询语句的历史结果数据。如需精确查询近期数据,建议在Prometheus监控实例的
中输入指标查询语句,并设置近期的时间范围,进行查询。监控指标触发自动扩缩的原理如下所示:
应用目标实例数 = ceil[当前实例数 * (当前监控指标值 /目标指标值)]
,结果有小数时自动向上求整。同时为保证扩缩稳定性,防止震荡,如果计算出的(当前监控指标值 /目标指标值)
在[0.9,1.1] 之间将不进行实际扩缩行为。
实例数设置:限定应用最小实例数(示例应用设置为
1
),应用最大实例数(示例应用设置为10
)。设置最小存活实例数(每次滚动升级过程中最小存活的实例数,示例应用设置为2
)。
启用监控指标策略:在弹性伸缩区域的监控指标策略列表中找到之前创建的弹性策略,在操作列点击启用。
验证效果:以示例应用根据
avg_over_time(main_page_request_duration_seconds_max[1m])*10 = 1
触发弹性伸缩为例,执行以下步骤来验证效果。登录应用实例的Webshell,执行以下命令来模拟大量用户对接口的请求。
# 安装压测工具ab yum install -y httpd-tools # 在后台持续高并发地调用接口 cat << EOF >> ./ab-test.sh #!/bin/bash while true; do ab -n 100000 -c 5000 http://localhost:8080/ sleep 1 done EOF cat ./ab-test.sh chmod +x ./ab-test.sh nohup ./ab-test.sh >> ./ab-test.log 2>&1 & tail -f ./ab-test.log
等待1分钟。在实例数随弹性指标变化趋势区域,选择自定义Prometheus指标,查询最近15分钟的图表,观察指标是否趋近于目标值。等待一段时间后,还能查看应用实例数的变化趋势。
在弹性伸缩区域的监控指标策略列表中找到之前创建的弹性策略,在操作列点击最右侧图标,点击事件,可以查看已触发的弹性扩缩事件。
点击基础信息,点击实例列表。点击实例列表右上方的刷新按钮,查看当前应用实例数量。
设置弹性伸缩在特定时间段的实例数量限制
在SAE应用列表中,在顶部选择目标地域和命名空间,点击目标应用ID跳转到应用详情页。
点击基础信息,点击弹性伸缩。在弹性伸缩区域,点击添加弹性策略。
策略类型选择混合弹性策略。
在特殊时间段设置区域,为指定的特殊时间段设置应用最小实例数和应用最大实例数。
其余配置同根据Prometheus指标触发弹性伸缩。