
# 通过配置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官方文档](https://prometheus.io/docs/prometheus/latest/querying/basics/)和[PromQL官方示例](https://prometheus.io/docs/prometheus/latest/querying/examples/)。
