
# 普罗语句说明
AOM对接了PromQL（Prometheus Query Language）语言，该语言内置了丰富的函数，用户可使用该内置函数对指标数据筛选和聚合。 按普罗语句添加指标时，用户可通过普罗语句自定义汇聚指标。
#### 普罗语句语法
普罗语句语法详情可登录[prometheus官网](https://prometheus.io/docs/prometheus/latest/querying/basics/)查看。
#### 普罗语句查询举例说明
- **示例一：集群下指定pod占所在节点（不含控制节点）的内存使用率**
  - 定义变量：
    - pod中容器内存实际占用量（同一个Pod下可能会有多个容器/实例）：aom_container_memory_used_megabytes
    
    - node内存实际总量：aom_node_memory_total_megabytes
     
  
  - 查询逻辑：
    - 针对指标aom_container_memory_used_megabytes，使用聚合函数sum，按照nodeIP和podID进行指定node下指定pod当前的内存实际占用量计算。
    
    - 针对指标aom_node_memory_total_megabytes，使用聚合函数sum，按照nodeIP计算出指定node的内存总量。
    
    - 两者均采用**(by nodeIP)**进行过滤，以使获得的指标值具有相同的指标维度。（仅value不同）
    
    - 将上述两者获得的指标值进行"/"运算，即可获得pod的内存实际使用率。
     
  
  - pod的内存实际使用率的普罗语句如下所示：
    ```
    sum(aom_container_memory_used_megabytes{podID="2261xxxxxxxxfc1213",nodeIP="192.xx.xx.xx"}) by (nodeIP) / sum(aom_node_memory_total_megabytes{nodeIP="192.xx.xx.xx"}) by (nodeIP)
    ```
    
   
- **示例二：集群下指定pod占所在节点（不含控制节点）的cpu使用率**
  - 定义变量：
    - pod中容器的cpu实际使用量：aom_container_cpu_used_core
    
    - node的cpu实际总量：aom_node_cpu_limit_core
     
  
  - 查询逻辑：
    - 针对指标aom_container_cpu_used_core，使用聚合函数sum，按照nodeIP和podID计算指定node下指定pod当前使用的cpu使用率。
    
    - 针对指标aom_node_cpu_limit_core，使用聚合函数sum，按照nodeIP计算出指定node的cpu总量。
    
    - 两者均采用(by nodeIP)进行过滤，以使获得的指标值具有相同的指标维度。（仅value不同）
    
    - 将上述两者获得的指标值进行"/"运算，即可获得pod的内存实际使用率。
     
  
  
  
  - pod的cpu实际使用率的promQL如下所示：
    ```
    sum(aom_container_cpu_used_core{nodeIP="192.xx.xx.xx ",podID="3361xxxxxxxxab1613"}) by (nodeIP) / sum(aom_node_cpu_limit_core{nodeIP="192.xx.xx.xx"}) by (nodeIP)
    ```
    
   
- **示例三：集群下运行的Pod内存配额申请值 / 集群下该Pod所在节点的内存可分配量**
  - 定义变量：
    - pod中给容器分配的内存总量：aom_container_memory_request_megabytes
    
    - node内存实际总量：aom_node_memory_total_megabytes
     
  
  - 查询逻辑：
    - 针对指标aom_container_memory_request_megabytes，使用聚合函数sum，按照nodeIP和podID计算指定node下指定pod当前被分配的内存总量。
    
    - 针对指标aom_node_memory_total_megabytes，使用聚合函数sum，按照nodeIP计算出指定node的内存总量。
    
    - 两者均采用(by nodeIP)进行过滤，以使获得的指标值具有相同的指标维度。（仅value不同）
    
    - 将上述两者获得的指标值进行"/"运算，即可获得pod的内存实际分配率。
     
  
  
  
  - pod的内存实际分配率的promQL如下所示：
    ```
    sum(aom_container_memory_request_megabytes{podID="2363xxxxxxxxab1315",nodeIP="192.xx.xx.xx"}) by (nodeIP) / sum(aom_node_memory_total_megabytes{nodeIP="192.xx.xx.xx"}) by (nodeIP)
    ```
    
   
- **示例四：集群下运行的Pod的cpu配额申请值 / 集群下该Pod所在节点的cpu可分配量**
  - 定义变量：
    - pod中容器的cpu实际分配总量：aom_container_cpu_limit_core
    
    - node的cpu实际分配总量：aom_node_cpu_limit_core
     
  
  - 查询逻辑：
    - 针对指标aom_container_cpu_limit_core，使用聚合函数sum，按照nodeIP和podID计算指定node下指定pod当前使用的cpu分配量。
    
    - 针对指标aom_node_cpu_limit_core，使用聚合函数sum，按照nodeIP计算出指定node的cpu总量。
    
    - 两者均采用(by nodeIP)进行过滤，以使获得的指标值具有相同的指标维度。（仅value不同）
    
    - 将上述两者获得的指标值进行"/"运算，即可获得pod的cpu实际分配率。
     
  
  
  
  - pod的cpu实际分配率的promQL如下所示：
    ```
    sum(aom_container_cpu_limit_core{podID="5663xxxxxxxxcd3265",nodeIP="192.xx.xx.xx"}) by (nodeIP) / sum(aom_node_cpu_limit_core{nodeIP="192.xx.xx.xx"}) by (nodeIP)
    ```
    
   
 
#### 常用的普罗命令
常用的查询指标的普罗命令如[表1]所示，用户可根据实际修改其中的IP地址、ID等参数信息。
 表1常用的普罗命令 
| 指标          | 标签定义                                                | PromQL                                                                                                                                                                  |
|:---|:---|:---|
| 主机CPU使用率    | {nodeIP=""，hostID=""}                               | aom_node_cpu_usage{nodeIP="192.168.57.93",hostID="ca76b63f-dbf8-4b60-9c71-7b9f13f5ad61"}                                                                                |
| 主机应用请求吞吐量   | {aomApplicationID="",aomApplicationName=""}         | http_requests_throughput{aomApplicationID="06dc9f3b0d8cb867453ecd273416ce2a",aomApplicationName="root"}                                                                 |
| 主机应用请求成功率   | {aomApplicationID="",aomApplicationName=""}         | http_requests_success_rate{aomApplicationID="06dc9f3b0d8cb867453ecd273416ce2a",aomApplicationName="root"}                                                               |
| 主机组件CPU使用率  | {appName="",serviceID="",clusterId=""}              | aom_process_cpu_usage{appName="icagent",serviceID="2d29673a69cd82fabe345be5f0f7dc5f",clusterId="00000000-0000-0000-0000-00000000"}                                      |
| 主机进程线程数     | {processCmd="",processName=""}                      | aom_process_thread_count{processCmd="cdbc06c2c05b58d598e9430fa133aff7_b14ee84c-2b78-4f71-9ecc-2d06e053172c_ca4d29a846e9ad46a187ade88048825e",processName="icwatchdog"}  |
| 集群磁盘使用率     | {clusterId="",clusterName=""}                       | aom_cluster_disk_usage{clusterId="4ba8008c-b93c-11ec-894a-0255ac101afc",clusterName="aom-test"}                                                                         |
| 集群虚拟内存使用率   | {clusterId="",clusterName=""}                       | aom_cluster_virtual_memory_usage{clusterId="4ba8008c-b93c-11ec-894a-0255ac101afc",clusterName="aom-test"}                                                               |
| 集群可用虚拟内存    | {clusterId="",clusterName=""}                       | aom_cluster_virtual_memory_free_megabytes{clusterId="4ba8008c-b93c-11ec-894a-0255ac101afc",clusterName="aom-test"}                                                      |
| 工作负载文件系统使用率 | {appName="",serviceID="",clusterId="",nameSpace=""} | aom_container_filesystem_usage{appName="icagent",serviceID="cfebc2222b1ce1e29ad827628325400e",clusterId="af3cc895-bc5b-11ec-a642-0255ac101a0b",nameSpace="kube-system"} |
| POD内核占用     | {podID="",podName=""}                               | aom_container_cpu_used_core{podID="573663db-4f09-4f30-a432-7f11bdb8fb2e",podName="icagent-bkm6q"}                                                                       |
| 容器上行Bps     | {containerID="",containerName=""}                   | aom_container_network_transmit_bytes{containerID="16bf66e9b62c08493ef58ff2b7056aae5d41496d5a2e4bac908c268518eb2cbc",containerName="coredns"}                            |
   
