通过配置PromQL实现自定义弹性伸缩
假设有一个名为my_component的组件,组件所处环境为my_environment,所处应用为my_application。
假设该组件提供自定义指标 http_requests_total,表示http请求总量,本文以该指标为例,介绍如何使用PromQL。
查询指标
使用以下PromQL语句,查询最新一条指标数据:
http_requests_total{environment_name="my_environment",application_name="my_application",component_name="my_component"}
若查询最近5分钟的所有指标数据:
http_requests_total{environment_name="my_environment",application_name="my_application",component_name="my_component"}[5m]
处理查询到的指标
查询指标中查询的指标数据通常有多条,例如组件有多个实例,则指标数据也有多条,或查询了一段时间的指标数据,该段时间内采集多条数据。
伸缩策略中的PromQL必须返回单个值,因此需要处理查询得到的指标数据,以得到单个值,示例如下:
查询最新一条指标,并求平均值,得到所有实例的http请求总数的平均值:
avg(http_requests_total{environment_name="my_environment",application_name="my_application",component_name="my_component"})
查询最近5分钟的所有指标数据,获取变化值(即增长值),并求平均,得到5分钟内平均每个实例的http请求增长数:
avg(delta(http_requests_total{environment_name="my_environment",application_name="my_application",component_name="my_component"}[5m]))
更多请参考PromQL官方文档和PromQL官方示例。