什么是PromQL¶
PromQL(Prometheus Query Language)是Prometheus内置的数据查询语言,其提供对时间序列数据丰富的查询,聚合以及逻辑运算能力的支持。并且被广泛应用在Prometheus的日常应用当中,包括对数据查询、可视化、告警处理当中。可以这么说,PromQL是Prometheus所有应用场景的基础。
引申:metrics四种类型
* counter(计数器) 只增不减的计数器(除非系统发生重置)。常见的监控指标,如http_requests_total,node_cpu都是Counter类型的监控指标。
* gauge (仪表类型)与Counter不同,Gauge类型的指标侧重于反应系统的当前状态。因此这类指标的样本数据可增可减。常见指标如:node_memory_MemFree(主机当前空闲的内容大小)、node_memory_MemAvailable(可用内存大小)都是Gauge类型的监控指标。
* histogram(直方图类型)
* summary (摘要类型)
Histogram和Summary主用用于统计和分析样本的分布情况。
例如,为了分析某服务接口的质量,需要统计0~100ms之间的请求数、100~500ms之间的请求数、500ms~1000ms之间请求数、大于1000ms的请求数有多少。通过分析这四个区间请求数的分布从而能确定接口是快还是慢。
Histogram和Summary都是为了能够解决这样问题的存在,通过Histogram和Summary类型的监控指标,我们可以快速了解监控样本的分布情况。
例如,指标go_gc_duration_seconds的指标类型为Summary;prometheus_tsdb_compaction_chunk_size_bytes的指标类型Histogram
查询监控指标¶
1、查询系统负载
点击【Graph】后,输入以下内容
node_load1

2、查询内存剩余
(1)单位参数
node_memory_MemAvailable_bytes 单位字节
node_memory_MemAvailable_bytes/1024 以k为单位显示
node_memory_MemAvailable_bytes/1024/1024 以M为单位显示
node_memory_MemAvailable_bytes/1024/1024/1024 以G为单位显示
(2)查看所有能被监控主机的内存剩余
点击【Graph】后,输入以下内容
node_memory_MemAvailable_bytes/1024/1024/1024

(3)加条件限制
只查询192.168.1.31主机的内存剩余,点击【Graph】后,输入以下内容
node_memory_MemAvailable_bytes{instance="192.168.1.31:9100"}/1024/1024/1024

(4)正则匹配
只查询192.168开头主机的内存剩余,点击【Graph】后,输入以下内容
node_memory_MemAvailable_bytes{instance=~"192.168.*"}/1024/1024/1024

3、查询内存使用率
点击【Graph】后,输入以下内容
(1-node_memory_MemAvailable_bytes/node_memory_MemTotal_bytes)*100

4、查询CPU使用率(2分钟内)
查看192.168.1.31主机2分钟内的CPU平均使用率,点击【Graph】后,输入以下内容
1 - rate(node_cpu_seconds_total{cpu="0",instance="192.168.1.31:9100",mode="idle"}[2m])

5、磁盘空间使用
查看磁盘类型不为tmpfs的主机的磁盘空间使用量,以G为单位。点击【Graph】后,输入以下内容
node_filesystem_avail_bytes{fstype!="tmpfs"}/1024/1024/1024

6、查询网卡流量
(1)查询所有监控主机3分钟内的平均网卡流量(包括进出)每秒平均变化率,点击【Graph】后,输入以下内容
rate(node_network_receive_bytes_total{device="ens33"}[3m])

(2)查询192.168.1.31主机ens33网卡3分钟内的入流量每秒平均变化率,点击【Graph】后,输入以下内容
rate(node_network_receive_bytes_total{device="ens33",instance="192.168.1.31:9100"}[3m])

(3)查询192.168.1.31主机ens33网卡3分钟内的出流量每秒平均变化率,点击【Graph】后,输入以下内容
rate(node_network_transmit_bytes_total{device="ens33",instance="192.168.1.31:9100"}[3m])
